2565 lines
110 KiB
2565 lines
110 KiB
"use strict"; |
|
var __create = Object.create; |
|
var __defProp = Object.defineProperty; |
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor; |
|
var __getOwnPropNames = Object.getOwnPropertyNames; |
|
var __getProtoOf = Object.getPrototypeOf; |
|
var __hasOwnProp = Object.prototype.hasOwnProperty; |
|
var __export = (target, all) => { |
|
for (var name in all) |
|
__defProp(target, name, { get: all[name], enumerable: true }); |
|
}; |
|
var __copyProps = (to, from, except, desc) => { |
|
if (from && typeof from === "object" || typeof from === "function") { |
|
for (let key of __getOwnPropNames(from)) |
|
if (!__hasOwnProp.call(to, key) && key !== except) |
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); |
|
} |
|
return to; |
|
}; |
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( |
|
// If the importer is in node compatibility mode or this is not an ESM |
|
// file that has been converted to a CommonJS file using a Babel- |
|
// compatible transform (i.e. "__esModule" has not been set), then set |
|
// "default" to the CommonJS "module.exports" for node compatibility. |
|
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, |
|
mod |
|
)); |
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); |
|
var __accessCheck = (obj, member, msg) => { |
|
if (!member.has(obj)) |
|
throw TypeError("Cannot " + msg); |
|
}; |
|
var __privateGet = (obj, member, getter) => { |
|
__accessCheck(obj, member, "read from private field"); |
|
return getter ? getter.call(obj) : member.get(obj); |
|
}; |
|
var __privateAdd = (obj, member, value) => { |
|
if (member.has(obj)) |
|
throw TypeError("Cannot add the same private member more than once"); |
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value); |
|
}; |
|
var __privateSet = (obj, member, value, setter) => { |
|
__accessCheck(obj, member, "write to private field"); |
|
setter ? setter.call(obj, value) : member.set(obj, value); |
|
return value; |
|
}; |
|
var __privateMethod = (obj, member, method) => { |
|
__accessCheck(obj, member, "access private method"); |
|
return method; |
|
}; |
|
|
|
// src/index.ts |
|
var src_exports = {}; |
|
__export(src_exports, { |
|
AccessKind: () => AccessKind, |
|
DeclarationDomain: () => DeclarationDomain, |
|
UsageDomain: () => UsageDomain, |
|
collectVariableUsage: () => collectVariableUsage, |
|
forEachComment: () => forEachComment, |
|
forEachToken: () => forEachToken, |
|
getAccessKind: () => getAccessKind, |
|
getCallSignaturesOfType: () => getCallSignaturesOfType, |
|
getPropertyOfType: () => getPropertyOfType, |
|
getWellKnownSymbolPropertyOfType: () => getWellKnownSymbolPropertyOfType, |
|
hasDecorators: () => hasDecorators, |
|
hasExpressionInitializer: () => hasExpressionInitializer, |
|
hasInitializer: () => hasInitializer, |
|
hasJSDoc: () => hasJSDoc, |
|
hasModifiers: () => hasModifiers, |
|
hasType: () => hasType, |
|
hasTypeArguments: () => hasTypeArguments, |
|
includesModifier: () => includesModifier, |
|
intersectionTypeParts: () => intersectionTypeParts, |
|
isAbstractKeyword: () => isAbstractKeyword, |
|
isAccessExpression: () => isAccessExpression, |
|
isAccessibilityModifier: () => isAccessibilityModifier, |
|
isAccessorDeclaration: () => isAccessorDeclaration, |
|
isAccessorKeyword: () => isAccessorKeyword, |
|
isAnyKeyword: () => isAnyKeyword, |
|
isArrayBindingElement: () => isArrayBindingElement, |
|
isArrayBindingOrAssignmentPattern: () => isArrayBindingOrAssignmentPattern, |
|
isAssertKeyword: () => isAssertKeyword, |
|
isAssertsKeyword: () => isAssertsKeyword, |
|
isAssignmentKind: () => isAssignmentKind, |
|
isAssignmentPattern: () => isAssignmentPattern, |
|
isAsyncKeyword: () => isAsyncKeyword, |
|
isAwaitKeyword: () => isAwaitKeyword, |
|
isBigIntKeyword: () => isBigIntKeyword, |
|
isBigIntLiteralType: () => isBigIntLiteralType, |
|
isBindingOrAssignmentElementRestIndicator: () => isBindingOrAssignmentElementRestIndicator, |
|
isBindingOrAssignmentElementTarget: () => isBindingOrAssignmentElementTarget, |
|
isBindingOrAssignmentPattern: () => isBindingOrAssignmentPattern, |
|
isBindingPattern: () => isBindingPattern, |
|
isBlockLike: () => isBlockLike, |
|
isBooleanKeyword: () => isBooleanKeyword, |
|
isBooleanLiteral: () => isBooleanLiteral, |
|
isBooleanLiteralType: () => isBooleanLiteralType, |
|
isClassLikeDeclaration: () => isClassLikeDeclaration, |
|
isClassMemberModifier: () => isClassMemberModifier, |
|
isColonToken: () => isColonToken, |
|
isCompilerOptionEnabled: () => isCompilerOptionEnabled, |
|
isConditionalType: () => isConditionalType, |
|
isConstAssertionExpression: () => isConstAssertionExpression, |
|
isConstKeyword: () => isConstKeyword, |
|
isDeclarationName: () => isDeclarationName, |
|
isDeclarationWithTypeParameterChildren: () => isDeclarationWithTypeParameterChildren, |
|
isDeclarationWithTypeParameters: () => isDeclarationWithTypeParameters, |
|
isDeclareKeyword: () => isDeclareKeyword, |
|
isDefaultKeyword: () => isDefaultKeyword, |
|
isDestructuringPattern: () => isDestructuringPattern, |
|
isDotToken: () => isDotToken, |
|
isEndOfFileToken: () => isEndOfFileToken, |
|
isEntityNameExpression: () => isEntityNameExpression, |
|
isEntityNameOrEntityNameExpression: () => isEntityNameOrEntityNameExpression, |
|
isEnumType: () => isEnumType, |
|
isEqualsGreaterThanToken: () => isEqualsGreaterThanToken, |
|
isEqualsToken: () => isEqualsToken, |
|
isEvolvingArrayType: () => isEvolvingArrayType, |
|
isExclamationToken: () => isExclamationToken, |
|
isExportKeyword: () => isExportKeyword, |
|
isFalseKeyword: () => isFalseKeyword, |
|
isFalseLiteral: () => isFalseLiteral, |
|
isFalseLiteralType: () => isFalseLiteralType, |
|
isFalsyType: () => isFalsyType, |
|
isForInOrOfStatement: () => isForInOrOfStatement, |
|
isFreshableIntrinsicType: () => isFreshableIntrinsicType, |
|
isFreshableType: () => isFreshableType, |
|
isFunctionLikeDeclaration: () => isFunctionLikeDeclaration, |
|
isFunctionScopeBoundary: () => isFunctionScopeBoundary, |
|
isImportExpression: () => isImportExpression, |
|
isImportKeyword: () => isImportKeyword, |
|
isInKeyword: () => isInKeyword, |
|
isIndexType: () => isIndexType, |
|
isIndexedAccessType: () => isIndexedAccessType, |
|
isInputFiles: () => isInputFiles, |
|
isInstantiableType: () => isInstantiableType, |
|
isIntersectionType: () => isIntersectionType, |
|
isIntrinsicAnyType: () => isIntrinsicAnyType, |
|
isIntrinsicBigIntType: () => isIntrinsicBigIntType, |
|
isIntrinsicBooleanType: () => isIntrinsicBooleanType, |
|
isIntrinsicESSymbolType: () => isIntrinsicESSymbolType, |
|
isIntrinsicErrorType: () => isIntrinsicErrorType, |
|
isIntrinsicNeverType: () => isIntrinsicNeverType, |
|
isIntrinsicNonPrimitiveType: () => isIntrinsicNonPrimitiveType, |
|
isIntrinsicNullType: () => isIntrinsicNullType, |
|
isIntrinsicNumberType: () => isIntrinsicNumberType, |
|
isIntrinsicStringType: () => isIntrinsicStringType, |
|
isIntrinsicType: () => isIntrinsicType, |
|
isIntrinsicUndefinedType: () => isIntrinsicUndefinedType, |
|
isIntrinsicUnknownType: () => isIntrinsicUnknownType, |
|
isIntrinsicVoidType: () => isIntrinsicVoidType, |
|
isIterationStatement: () => isIterationStatement, |
|
isJSDocComment: () => isJSDocComment, |
|
isJSDocNamespaceBody: () => isJSDocNamespaceBody, |
|
isJSDocNamespaceDeclaration: () => isJSDocNamespaceDeclaration, |
|
isJSDocText: () => isJSDocText, |
|
isJSDocTypeReferencingNode: () => isJSDocTypeReferencingNode, |
|
isJsonMinusNumericLiteral: () => isJsonMinusNumericLiteral, |
|
isJsonObjectExpression: () => isJsonObjectExpression, |
|
isJsxAttributeLike: () => isJsxAttributeLike, |
|
isJsxAttributeValue: () => isJsxAttributeValue, |
|
isJsxChild: () => isJsxChild, |
|
isJsxTagNameExpression: () => isJsxTagNameExpression, |
|
isJsxTagNamePropertyAccess: () => isJsxTagNamePropertyAccess, |
|
isLiteralToken: () => isLiteralToken, |
|
isLiteralType: () => isLiteralType, |
|
isModifierFlagSet: () => isModifierFlagSet, |
|
isModuleBody: () => isModuleBody, |
|
isModuleName: () => isModuleName, |
|
isModuleReference: () => isModuleReference, |
|
isNamedDeclarationWithName: () => isNamedDeclarationWithName, |
|
isNamedImportBindings: () => isNamedImportBindings, |
|
isNamedImportsOrExports: () => isNamedImportsOrExports, |
|
isNamespaceBody: () => isNamespaceBody, |
|
isNamespaceDeclaration: () => isNamespaceDeclaration, |
|
isNeverKeyword: () => isNeverKeyword, |
|
isNodeFlagSet: () => isNodeFlagSet, |
|
isNullKeyword: () => isNullKeyword, |
|
isNullLiteral: () => isNullLiteral, |
|
isNumberKeyword: () => isNumberKeyword, |
|
isNumberLiteralType: () => isNumberLiteralType, |
|
isNumericOrStringLikeLiteral: () => isNumericOrStringLikeLiteral, |
|
isNumericPropertyName: () => isNumericPropertyName, |
|
isObjectBindingOrAssignmentElement: () => isObjectBindingOrAssignmentElement, |
|
isObjectBindingOrAssignmentPattern: () => isObjectBindingOrAssignmentPattern, |
|
isObjectFlagSet: () => isObjectFlagSet, |
|
isObjectKeyword: () => isObjectKeyword, |
|
isObjectType: () => isObjectType, |
|
isObjectTypeDeclaration: () => isObjectTypeDeclaration, |
|
isOutKeyword: () => isOutKeyword, |
|
isOverrideKeyword: () => isOverrideKeyword, |
|
isParameterPropertyModifier: () => isParameterPropertyModifier, |
|
isPrivateKeyword: () => isPrivateKeyword, |
|
isPropertyAccessEntityNameExpression: () => isPropertyAccessEntityNameExpression, |
|
isPropertyNameLiteral: () => isPropertyNameLiteral, |
|
isPropertyReadonlyInType: () => isPropertyReadonlyInType, |
|
isProtectedKeyword: () => isProtectedKeyword, |
|
isPseudoLiteralToken: () => isPseudoLiteralToken, |
|
isPublicKeyword: () => isPublicKeyword, |
|
isQuestionDotToken: () => isQuestionDotToken, |
|
isQuestionToken: () => isQuestionToken, |
|
isReadonlyKeyword: () => isReadonlyKeyword, |
|
isSignatureDeclaration: () => isSignatureDeclaration, |
|
isStaticKeyword: () => isStaticKeyword, |
|
isStrictCompilerOptionEnabled: () => isStrictCompilerOptionEnabled, |
|
isStringKeyword: () => isStringKeyword, |
|
isStringLiteralType: () => isStringLiteralType, |
|
isStringMappingType: () => isStringMappingType, |
|
isSubstitutionType: () => isSubstitutionType, |
|
isSuperElementAccessExpression: () => isSuperElementAccessExpression, |
|
isSuperExpression: () => isSuperExpression, |
|
isSuperKeyword: () => isSuperKeyword, |
|
isSuperProperty: () => isSuperProperty, |
|
isSuperPropertyAccessExpression: () => isSuperPropertyAccessExpression, |
|
isSymbolFlagSet: () => isSymbolFlagSet, |
|
isSymbolKeyword: () => isSymbolKeyword, |
|
isSyntaxList: () => isSyntaxList, |
|
isTemplateLiteralType: () => isTemplateLiteralType, |
|
isThenableType: () => isThenableType, |
|
isThisExpression: () => isThisExpression, |
|
isThisKeyword: () => isThisKeyword, |
|
isTrueKeyword: () => isTrueKeyword, |
|
isTrueLiteral: () => isTrueLiteral, |
|
isTrueLiteralType: () => isTrueLiteralType, |
|
isTupleType: () => isTupleType, |
|
isTupleTypeReference: () => isTupleTypeReference, |
|
isTypeFlagSet: () => isTypeFlagSet, |
|
isTypeOnlyCompatibleAliasDeclaration: () => isTypeOnlyCompatibleAliasDeclaration, |
|
isTypeParameter: () => isTypeParameter, |
|
isTypeReference: () => isTypeReference, |
|
isTypeReferenceType: () => isTypeReferenceType, |
|
isTypeVariable: () => isTypeVariable, |
|
isUndefinedKeyword: () => isUndefinedKeyword, |
|
isUnionOrIntersectionType: () => isUnionOrIntersectionType, |
|
isUnionOrIntersectionTypeNode: () => isUnionOrIntersectionTypeNode, |
|
isUnionType: () => isUnionType, |
|
isUniqueESSymbolType: () => isUniqueESSymbolType, |
|
isUnknownKeyword: () => isUnknownKeyword, |
|
isUnknownLiteralType: () => isUnknownLiteralType, |
|
isUnparsedPrologue: () => isUnparsedPrologue, |
|
isUnparsedSourceText: () => isUnparsedSourceText, |
|
isUnparsedSyntheticReference: () => isUnparsedSyntheticReference, |
|
isValidPropertyAccess: () => isValidPropertyAccess, |
|
isVariableLikeDeclaration: () => isVariableLikeDeclaration, |
|
isVoidKeyword: () => isVoidKeyword, |
|
symbolHasReadonlyDeclaration: () => symbolHasReadonlyDeclaration, |
|
typeParts: () => typeParts, |
|
unionTypeParts: () => unionTypeParts |
|
}); |
|
module.exports = __toCommonJS(src_exports); |
|
|
|
// src/comments.ts |
|
var import_typescript2 = __toESM(require("typescript"), 1); |
|
|
|
// src/tokens.ts |
|
var import_typescript = __toESM(require("typescript"), 1); |
|
function forEachToken(node, callback, sourceFile = node.getSourceFile()) { |
|
const queue = []; |
|
while (true) { |
|
if (import_typescript.default.isTokenKind(node.kind)) { |
|
callback(node); |
|
} else if ( |
|
// eslint-disable-next-line deprecation/deprecation -- need for support of TS < 4.7 |
|
node.kind !== import_typescript.default.SyntaxKind.JSDocComment |
|
) { |
|
const children = node.getChildren(sourceFile); |
|
if (children.length === 1) { |
|
node = children[0]; |
|
continue; |
|
} |
|
for (let i = children.length - 1; i >= 0; --i) { |
|
queue.push(children[i]); |
|
} |
|
} |
|
if (queue.length === 0) { |
|
break; |
|
} |
|
node = queue.pop(); |
|
} |
|
} |
|
|
|
// src/comments.ts |
|
function canHaveTrailingTrivia(token) { |
|
switch (token.kind) { |
|
case import_typescript2.default.SyntaxKind.CloseBraceToken: |
|
return token.parent.kind !== import_typescript2.default.SyntaxKind.JsxExpression || !isJsxElementOrFragment(token.parent.parent); |
|
case import_typescript2.default.SyntaxKind.GreaterThanToken: |
|
switch (token.parent.kind) { |
|
case import_typescript2.default.SyntaxKind.JsxOpeningElement: |
|
return token.end !== token.parent.end; |
|
case import_typescript2.default.SyntaxKind.JsxOpeningFragment: |
|
return false; |
|
case import_typescript2.default.SyntaxKind.JsxSelfClosingElement: |
|
return token.end !== token.parent.end || // if end is not equal, this is part of the type arguments list |
|
!isJsxElementOrFragment(token.parent.parent); |
|
case import_typescript2.default.SyntaxKind.JsxClosingElement: |
|
case import_typescript2.default.SyntaxKind.JsxClosingFragment: |
|
return !isJsxElementOrFragment(token.parent.parent.parent); |
|
} |
|
} |
|
return true; |
|
} |
|
function isJsxElementOrFragment(node) { |
|
return node.kind === import_typescript2.default.SyntaxKind.JsxElement || node.kind === import_typescript2.default.SyntaxKind.JsxFragment; |
|
} |
|
function forEachComment(node, callback, sourceFile = node.getSourceFile()) { |
|
const fullText = sourceFile.text; |
|
const notJsx = sourceFile.languageVariant !== import_typescript2.default.LanguageVariant.JSX; |
|
return forEachToken( |
|
node, |
|
(token) => { |
|
if (token.pos === token.end) { |
|
return; |
|
} |
|
if (token.kind !== import_typescript2.default.SyntaxKind.JsxText) { |
|
import_typescript2.default.forEachLeadingCommentRange( |
|
fullText, |
|
// skip shebang at position 0 |
|
token.pos === 0 ? (import_typescript2.default.getShebang(fullText) ?? "").length : token.pos, |
|
commentCallback |
|
); |
|
} |
|
if (notJsx || canHaveTrailingTrivia(token)) { |
|
return import_typescript2.default.forEachTrailingCommentRange( |
|
fullText, |
|
token.end, |
|
commentCallback |
|
); |
|
} |
|
}, |
|
sourceFile |
|
); |
|
function commentCallback(pos, end, kind) { |
|
callback(fullText, { end, kind, pos }); |
|
} |
|
} |
|
|
|
// src/compilerOptions.ts |
|
var import_typescript3 = __toESM(require("typescript"), 1); |
|
function isCompilerOptionEnabled(options, option) { |
|
switch (option) { |
|
case "stripInternal": |
|
case "declarationMap": |
|
case "emitDeclarationOnly": |
|
return options[option] === true && isCompilerOptionEnabled(options, "declaration"); |
|
case "declaration": |
|
return options.declaration || isCompilerOptionEnabled(options, "composite"); |
|
case "incremental": |
|
return options.incremental === void 0 ? isCompilerOptionEnabled(options, "composite") : options.incremental; |
|
case "skipDefaultLibCheck": |
|
return options.skipDefaultLibCheck || isCompilerOptionEnabled(options, "skipLibCheck"); |
|
case "suppressImplicitAnyIndexErrors": |
|
return options.suppressImplicitAnyIndexErrors === true && isCompilerOptionEnabled(options, "noImplicitAny"); |
|
case "allowSyntheticDefaultImports": |
|
return options.allowSyntheticDefaultImports !== void 0 ? options.allowSyntheticDefaultImports : isCompilerOptionEnabled(options, "esModuleInterop") || options.module === import_typescript3.default.ModuleKind.System; |
|
case "noUncheckedIndexedAccess": |
|
return options.noUncheckedIndexedAccess === true && isCompilerOptionEnabled(options, "strictNullChecks"); |
|
case "allowJs": |
|
return options.allowJs === void 0 ? isCompilerOptionEnabled(options, "checkJs") : options.allowJs; |
|
case "noImplicitAny": |
|
case "noImplicitThis": |
|
case "strictNullChecks": |
|
case "strictFunctionTypes": |
|
case "strictPropertyInitialization": |
|
case "alwaysStrict": |
|
case "strictBindCallApply": |
|
return isStrictCompilerOptionEnabled( |
|
options, |
|
option |
|
); |
|
} |
|
return options[option] === true; |
|
} |
|
function isStrictCompilerOptionEnabled(options, option) { |
|
return (options.strict ? options[option] !== false : options[option] === true) && (option !== "strictPropertyInitialization" || isStrictCompilerOptionEnabled(options, "strictNullChecks")); |
|
} |
|
|
|
// src/flags.ts |
|
var import_typescript4 = __toESM(require("typescript"), 1); |
|
function isFlagSet(allFlags, flag) { |
|
return (allFlags & flag) !== 0; |
|
} |
|
function isFlagSetOnObject(obj, flag) { |
|
return isFlagSet(obj.flags, flag); |
|
} |
|
function isModifierFlagSet(node, flag) { |
|
return isFlagSet(import_typescript4.default.getCombinedModifierFlags(node), flag); |
|
} |
|
var isNodeFlagSet = isFlagSetOnObject; |
|
function isObjectFlagSet(objectType, flag) { |
|
return isFlagSet(objectType.objectFlags, flag); |
|
} |
|
var isSymbolFlagSet = isFlagSetOnObject; |
|
var isTypeFlagSet = isFlagSetOnObject; |
|
|
|
// src/modifiers.ts |
|
function includesModifier(modifiers, ...kinds) { |
|
if (modifiers === void 0) { |
|
return false; |
|
} |
|
for (const modifier of modifiers) { |
|
if (kinds.includes(modifier.kind)) { |
|
return true; |
|
} |
|
} |
|
return false; |
|
} |
|
|
|
// src/nodes/access.ts |
|
var import_typescript6 = __toESM(require("typescript"), 1); |
|
|
|
// src/syntax.ts |
|
var import_typescript5 = __toESM(require("typescript"), 1); |
|
function isAssignmentKind(kind) { |
|
return kind >= import_typescript5.default.SyntaxKind.FirstAssignment && kind <= import_typescript5.default.SyntaxKind.LastAssignment; |
|
} |
|
function isNumericPropertyName(name) { |
|
return String(+name) === name; |
|
} |
|
function charSize(ch) { |
|
return ch >= 65536 ? 2 : 1; |
|
} |
|
function isValidPropertyAccess(text, languageVersion = import_typescript5.default.ScriptTarget.Latest) { |
|
if (text.length === 0) { |
|
return false; |
|
} |
|
let ch = text.codePointAt(0); |
|
if (!import_typescript5.default.isIdentifierStart(ch, languageVersion)) { |
|
return false; |
|
} |
|
for (let i = charSize(ch); i < text.length; i += charSize(ch)) { |
|
ch = text.codePointAt(i); |
|
if (!import_typescript5.default.isIdentifierPart(ch, languageVersion)) { |
|
return false; |
|
} |
|
} |
|
return true; |
|
} |
|
|
|
// src/nodes/access.ts |
|
var AccessKind = /* @__PURE__ */ ((AccessKind2) => { |
|
AccessKind2[AccessKind2["None"] = 0] = "None"; |
|
AccessKind2[AccessKind2["Read"] = 1] = "Read"; |
|
AccessKind2[AccessKind2["Write"] = 2] = "Write"; |
|
AccessKind2[AccessKind2["Delete"] = 4] = "Delete"; |
|
AccessKind2[AccessKind2["ReadWrite"] = 3] = "ReadWrite"; |
|
return AccessKind2; |
|
})(AccessKind || {}); |
|
function getAccessKind(node) { |
|
const parent = node.parent; |
|
switch (parent.kind) { |
|
case import_typescript6.default.SyntaxKind.DeleteExpression: |
|
return 4 /* Delete */; |
|
case import_typescript6.default.SyntaxKind.PostfixUnaryExpression: |
|
return 3 /* ReadWrite */; |
|
case import_typescript6.default.SyntaxKind.PrefixUnaryExpression: |
|
return parent.operator === import_typescript6.default.SyntaxKind.PlusPlusToken || parent.operator === import_typescript6.default.SyntaxKind.MinusMinusToken ? 3 /* ReadWrite */ : 1 /* Read */; |
|
case import_typescript6.default.SyntaxKind.BinaryExpression: |
|
return parent.right === node ? 1 /* Read */ : !isAssignmentKind(parent.operatorToken.kind) ? 1 /* Read */ : parent.operatorToken.kind === import_typescript6.default.SyntaxKind.EqualsToken ? 2 /* Write */ : 3 /* ReadWrite */; |
|
case import_typescript6.default.SyntaxKind.ShorthandPropertyAssignment: |
|
return parent.objectAssignmentInitializer === node ? 1 /* Read */ : isInDestructuringAssignment(parent) ? 2 /* Write */ : 1 /* Read */; |
|
case import_typescript6.default.SyntaxKind.PropertyAssignment: |
|
return parent.name === node ? 0 /* None */ : isInDestructuringAssignment(parent) ? 2 /* Write */ : 1 /* Read */; |
|
case import_typescript6.default.SyntaxKind.ArrayLiteralExpression: |
|
case import_typescript6.default.SyntaxKind.SpreadElement: |
|
case import_typescript6.default.SyntaxKind.SpreadAssignment: |
|
return isInDestructuringAssignment( |
|
parent |
|
) ? 2 /* Write */ : 1 /* Read */; |
|
case import_typescript6.default.SyntaxKind.ParenthesizedExpression: |
|
case import_typescript6.default.SyntaxKind.NonNullExpression: |
|
case import_typescript6.default.SyntaxKind.TypeAssertionExpression: |
|
case import_typescript6.default.SyntaxKind.AsExpression: |
|
return getAccessKind(parent); |
|
case import_typescript6.default.SyntaxKind.ForOfStatement: |
|
case import_typescript6.default.SyntaxKind.ForInStatement: |
|
return parent.initializer === node ? 2 /* Write */ : 1 /* Read */; |
|
case import_typescript6.default.SyntaxKind.ExpressionWithTypeArguments: |
|
return parent.parent.token === import_typescript6.default.SyntaxKind.ExtendsKeyword && parent.parent.parent.kind !== import_typescript6.default.SyntaxKind.InterfaceDeclaration ? 1 /* Read */ : 0 /* None */; |
|
case import_typescript6.default.SyntaxKind.ComputedPropertyName: |
|
case import_typescript6.default.SyntaxKind.ExpressionStatement: |
|
case import_typescript6.default.SyntaxKind.TypeOfExpression: |
|
case import_typescript6.default.SyntaxKind.ElementAccessExpression: |
|
case import_typescript6.default.SyntaxKind.ForStatement: |
|
case import_typescript6.default.SyntaxKind.IfStatement: |
|
case import_typescript6.default.SyntaxKind.DoStatement: |
|
case import_typescript6.default.SyntaxKind.WhileStatement: |
|
case import_typescript6.default.SyntaxKind.SwitchStatement: |
|
case import_typescript6.default.SyntaxKind.WithStatement: |
|
case import_typescript6.default.SyntaxKind.ThrowStatement: |
|
case import_typescript6.default.SyntaxKind.CallExpression: |
|
case import_typescript6.default.SyntaxKind.NewExpression: |
|
case import_typescript6.default.SyntaxKind.TaggedTemplateExpression: |
|
case import_typescript6.default.SyntaxKind.JsxExpression: |
|
case import_typescript6.default.SyntaxKind.Decorator: |
|
case import_typescript6.default.SyntaxKind.TemplateSpan: |
|
case import_typescript6.default.SyntaxKind.JsxOpeningElement: |
|
case import_typescript6.default.SyntaxKind.JsxSelfClosingElement: |
|
case import_typescript6.default.SyntaxKind.JsxSpreadAttribute: |
|
case import_typescript6.default.SyntaxKind.VoidExpression: |
|
case import_typescript6.default.SyntaxKind.ReturnStatement: |
|
case import_typescript6.default.SyntaxKind.AwaitExpression: |
|
case import_typescript6.default.SyntaxKind.YieldExpression: |
|
case import_typescript6.default.SyntaxKind.ConditionalExpression: |
|
case import_typescript6.default.SyntaxKind.CaseClause: |
|
case import_typescript6.default.SyntaxKind.JsxElement: |
|
return 1 /* Read */; |
|
case import_typescript6.default.SyntaxKind.ArrowFunction: |
|
return parent.body === node ? 1 /* Read */ : 2 /* Write */; |
|
case import_typescript6.default.SyntaxKind.PropertyDeclaration: |
|
case import_typescript6.default.SyntaxKind.VariableDeclaration: |
|
case import_typescript6.default.SyntaxKind.Parameter: |
|
case import_typescript6.default.SyntaxKind.EnumMember: |
|
case import_typescript6.default.SyntaxKind.BindingElement: |
|
case import_typescript6.default.SyntaxKind.JsxAttribute: |
|
return parent.initializer === node ? 1 /* Read */ : 0 /* None */; |
|
case import_typescript6.default.SyntaxKind.PropertyAccessExpression: |
|
return parent.expression === node ? 1 /* Read */ : 0 /* None */; |
|
case import_typescript6.default.SyntaxKind.ExportAssignment: |
|
return parent.isExportEquals ? 1 /* Read */ : 0 /* None */; |
|
} |
|
return 0 /* None */; |
|
} |
|
function isInDestructuringAssignment(node) { |
|
switch (node.kind) { |
|
case import_typescript6.default.SyntaxKind.ShorthandPropertyAssignment: |
|
if (node.objectAssignmentInitializer !== void 0) { |
|
return true; |
|
} |
|
case import_typescript6.default.SyntaxKind.PropertyAssignment: |
|
case import_typescript6.default.SyntaxKind.SpreadAssignment: |
|
node = node.parent; |
|
break; |
|
case import_typescript6.default.SyntaxKind.SpreadElement: |
|
if (node.parent.kind !== import_typescript6.default.SyntaxKind.ArrayLiteralExpression) { |
|
return false; |
|
} |
|
node = node.parent; |
|
} |
|
while (true) { |
|
switch (node.parent.kind) { |
|
case import_typescript6.default.SyntaxKind.BinaryExpression: |
|
return node.parent.left === node && node.parent.operatorToken.kind === import_typescript6.default.SyntaxKind.EqualsToken; |
|
case import_typescript6.default.SyntaxKind.ForOfStatement: |
|
return node.parent.initializer === node; |
|
case import_typescript6.default.SyntaxKind.ArrayLiteralExpression: |
|
case import_typescript6.default.SyntaxKind.ObjectLiteralExpression: |
|
node = node.parent; |
|
break; |
|
case import_typescript6.default.SyntaxKind.SpreadAssignment: |
|
case import_typescript6.default.SyntaxKind.PropertyAssignment: |
|
node = node.parent.parent; |
|
break; |
|
case import_typescript6.default.SyntaxKind.SpreadElement: |
|
if (node.parent.parent.kind !== import_typescript6.default.SyntaxKind.ArrayLiteralExpression) { |
|
return false; |
|
} |
|
node = node.parent.parent; |
|
break; |
|
default: |
|
return false; |
|
} |
|
} |
|
} |
|
|
|
// src/nodes/typeGuards/compound.ts |
|
var import_typescript10 = __toESM(require("typescript"), 1); |
|
|
|
// src/nodes/typeGuards/single.ts |
|
var import_typescript7 = __toESM(require("typescript"), 1); |
|
function isAbstractKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.AbstractKeyword; |
|
} |
|
function isAccessorKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.AccessorKeyword; |
|
} |
|
function isAnyKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.AnyKeyword; |
|
} |
|
function isAssertKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.AssertKeyword; |
|
} |
|
function isAssertsKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.AssertsKeyword; |
|
} |
|
function isAsyncKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.AsyncKeyword; |
|
} |
|
function isAwaitKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.AwaitKeyword; |
|
} |
|
function isBigIntKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.BigIntKeyword; |
|
} |
|
function isBooleanKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.BooleanKeyword; |
|
} |
|
function isColonToken(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.ColonToken; |
|
} |
|
function isConstKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.ConstKeyword; |
|
} |
|
function isDeclareKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.DeclareKeyword; |
|
} |
|
function isDefaultKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.DefaultKeyword; |
|
} |
|
function isDotToken(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.DotToken; |
|
} |
|
function isEndOfFileToken(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.EndOfFileToken; |
|
} |
|
function isEqualsGreaterThanToken(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.EqualsGreaterThanToken; |
|
} |
|
function isEqualsToken(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.EqualsToken; |
|
} |
|
function isExclamationToken(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.ExclamationToken; |
|
} |
|
function isExportKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.ExportKeyword; |
|
} |
|
function isFalseKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.FalseKeyword; |
|
} |
|
function isFalseLiteral(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.FalseKeyword; |
|
} |
|
function isImportExpression(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.ImportKeyword; |
|
} |
|
function isImportKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.ImportKeyword; |
|
} |
|
function isInKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.InKeyword; |
|
} |
|
function isInputFiles(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.InputFiles; |
|
} |
|
function isJSDocText(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.JSDocText; |
|
} |
|
function isJsonMinusNumericLiteral(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.PrefixUnaryExpression; |
|
} |
|
function isNeverKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.NeverKeyword; |
|
} |
|
function isNullKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.NullKeyword; |
|
} |
|
function isNullLiteral(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.NullKeyword; |
|
} |
|
function isNumberKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.NumberKeyword; |
|
} |
|
function isObjectKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.ObjectKeyword; |
|
} |
|
function isOutKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.OutKeyword; |
|
} |
|
function isOverrideKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.OverrideKeyword; |
|
} |
|
function isPrivateKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.PrivateKeyword; |
|
} |
|
function isProtectedKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.ProtectedKeyword; |
|
} |
|
function isPublicKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.PublicKeyword; |
|
} |
|
function isQuestionDotToken(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.QuestionDotToken; |
|
} |
|
function isQuestionToken(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.QuestionToken; |
|
} |
|
function isReadonlyKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.ReadonlyKeyword; |
|
} |
|
function isStaticKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.StaticKeyword; |
|
} |
|
function isStringKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.StringKeyword; |
|
} |
|
function isSuperExpression(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.SuperKeyword; |
|
} |
|
function isSuperKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.SuperKeyword; |
|
} |
|
function isSymbolKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.SymbolKeyword; |
|
} |
|
function isSyntaxList(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.SyntaxList; |
|
} |
|
function isThisExpression(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.ThisKeyword; |
|
} |
|
function isThisKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.ThisKeyword; |
|
} |
|
function isTrueKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.TrueKeyword; |
|
} |
|
function isTrueLiteral(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.TrueKeyword; |
|
} |
|
function isUndefinedKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.UndefinedKeyword; |
|
} |
|
function isUnknownKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.UnknownKeyword; |
|
} |
|
function isUnparsedPrologue(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.UnparsedPrologue; |
|
} |
|
function isUnparsedSyntheticReference(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.UnparsedSyntheticReference; |
|
} |
|
function isVoidKeyword(node) { |
|
return node.kind === import_typescript7.default.SyntaxKind.VoidKeyword; |
|
} |
|
|
|
// src/nodes/typeGuards/union.ts |
|
var import_typescript9 = __toESM(require("typescript"), 1); |
|
|
|
// src/utils.ts |
|
var import_typescript8 = __toESM(require("typescript"), 1); |
|
var [tsMajor, tsMinor] = import_typescript8.default.versionMajorMinor.split(".").map((raw) => Number.parseInt(raw, 10)); |
|
function isTsVersionAtLeast(major, minor = 0) { |
|
return tsMajor > major || tsMajor === major && tsMinor >= minor; |
|
} |
|
|
|
// src/nodes/typeGuards/union.ts |
|
function isAccessExpression(node) { |
|
return import_typescript9.default.isPropertyAccessExpression(node) || import_typescript9.default.isElementAccessExpression(node); |
|
} |
|
function isAccessibilityModifier(node) { |
|
return isPublicKeyword(node) || isPrivateKeyword(node) || isProtectedKeyword(node); |
|
} |
|
function isAccessorDeclaration(node) { |
|
return import_typescript9.default.isGetAccessorDeclaration(node) || import_typescript9.default.isSetAccessorDeclaration(node); |
|
} |
|
function isArrayBindingElement(node) { |
|
return import_typescript9.default.isBindingElement(node) || import_typescript9.default.isOmittedExpression(node); |
|
} |
|
function isArrayBindingOrAssignmentPattern(node) { |
|
return import_typescript9.default.isArrayBindingPattern(node) || import_typescript9.default.isArrayLiteralExpression(node); |
|
} |
|
function isAssignmentPattern(node) { |
|
return import_typescript9.default.isObjectLiteralExpression(node) || import_typescript9.default.isArrayLiteralExpression(node); |
|
} |
|
function isBindingOrAssignmentElementRestIndicator(node) { |
|
if (import_typescript9.default.isSpreadElement(node) || import_typescript9.default.isSpreadAssignment(node)) { |
|
return true; |
|
} |
|
if (isTsVersionAtLeast(4, 4)) { |
|
return import_typescript9.default.isDotDotDotToken(node); |
|
} |
|
return false; |
|
} |
|
function isBindingOrAssignmentElementTarget(node) { |
|
return isBindingOrAssignmentPattern(node) || import_typescript9.default.isIdentifier(node) || import_typescript9.default.isPropertyAccessExpression(node) || import_typescript9.default.isElementAccessExpression(node) || import_typescript9.default.isOmittedExpression(node); |
|
} |
|
function isBindingOrAssignmentPattern(node) { |
|
return isObjectBindingOrAssignmentPattern(node) || isArrayBindingOrAssignmentPattern(node); |
|
} |
|
function isBindingPattern(node) { |
|
return import_typescript9.default.isObjectBindingPattern(node) || import_typescript9.default.isArrayBindingPattern(node); |
|
} |
|
function isBlockLike(node) { |
|
return import_typescript9.default.isSourceFile(node) || import_typescript9.default.isBlock(node) || import_typescript9.default.isModuleBlock(node) || import_typescript9.default.isCaseOrDefaultClause(node); |
|
} |
|
function isBooleanLiteral(node) { |
|
return isTrueLiteral(node) || isFalseLiteral(node); |
|
} |
|
function isClassLikeDeclaration(node) { |
|
return import_typescript9.default.isClassDeclaration(node) || import_typescript9.default.isClassExpression(node); |
|
} |
|
function isClassMemberModifier(node) { |
|
return isAccessibilityModifier(node) || isReadonlyKeyword(node) || isStaticKeyword(node) || isAccessorKeyword(node); |
|
} |
|
function isDeclarationName(node) { |
|
return import_typescript9.default.isIdentifier(node) || import_typescript9.default.isPrivateIdentifier(node) || import_typescript9.default.isStringLiteralLike(node) || import_typescript9.default.isNumericLiteral(node) || import_typescript9.default.isComputedPropertyName(node) || import_typescript9.default.isElementAccessExpression(node) || isBindingPattern(node) || isEntityNameExpression(node); |
|
} |
|
function isDeclarationWithTypeParameterChildren(node) { |
|
return isSignatureDeclaration(node) || // eslint-disable-next-line deprecation/deprecation -- Keep compatibility with ts <5 |
|
isClassLikeDeclaration(node) || import_typescript9.default.isInterfaceDeclaration(node) || import_typescript9.default.isTypeAliasDeclaration(node) || import_typescript9.default.isJSDocTemplateTag(node); |
|
} |
|
function isDeclarationWithTypeParameters(node) { |
|
return isDeclarationWithTypeParameterChildren(node) || import_typescript9.default.isJSDocTypedefTag(node) || import_typescript9.default.isJSDocCallbackTag(node) || import_typescript9.default.isJSDocSignature(node); |
|
} |
|
function isDestructuringPattern(node) { |
|
return isBindingPattern(node) || import_typescript9.default.isObjectLiteralExpression(node) || import_typescript9.default.isArrayLiteralExpression(node); |
|
} |
|
function isEntityNameExpression(node) { |
|
return import_typescript9.default.isIdentifier(node) || isPropertyAccessEntityNameExpression(node); |
|
} |
|
function isEntityNameOrEntityNameExpression(node) { |
|
return import_typescript9.default.isEntityName(node) || isEntityNameExpression(node); |
|
} |
|
function isForInOrOfStatement(node) { |
|
return import_typescript9.default.isForInStatement(node) || import_typescript9.default.isForOfStatement(node); |
|
} |
|
function isFunctionLikeDeclaration(node) { |
|
return import_typescript9.default.isFunctionDeclaration(node) || import_typescript9.default.isMethodDeclaration(node) || import_typescript9.default.isGetAccessorDeclaration(node) || import_typescript9.default.isSetAccessorDeclaration(node) || import_typescript9.default.isConstructorDeclaration(node) || import_typescript9.default.isFunctionExpression(node) || import_typescript9.default.isArrowFunction(node); |
|
} |
|
function hasDecorators(node) { |
|
return import_typescript9.default.isParameter(node) || import_typescript9.default.isPropertyDeclaration(node) || import_typescript9.default.isMethodDeclaration(node) || import_typescript9.default.isGetAccessorDeclaration(node) || import_typescript9.default.isSetAccessorDeclaration(node) || import_typescript9.default.isClassExpression(node) || import_typescript9.default.isClassDeclaration(node); |
|
} |
|
function hasExpressionInitializer(node) { |
|
return import_typescript9.default.isVariableDeclaration(node) || import_typescript9.default.isParameter(node) || import_typescript9.default.isBindingElement(node) || import_typescript9.default.isPropertyDeclaration(node) || import_typescript9.default.isPropertyAssignment(node) || import_typescript9.default.isEnumMember(node); |
|
} |
|
function hasInitializer(node) { |
|
return hasExpressionInitializer(node) || import_typescript9.default.isForStatement(node) || import_typescript9.default.isForInStatement(node) || import_typescript9.default.isForOfStatement(node) || import_typescript9.default.isJsxAttribute(node); |
|
} |
|
function hasJSDoc(node) { |
|
if ( |
|
// eslint-disable-next-line deprecation/deprecation -- Keep compatibility with ts <5 |
|
isAccessorDeclaration(node) || import_typescript9.default.isArrowFunction(node) || import_typescript9.default.isBlock(node) || import_typescript9.default.isBreakStatement(node) || import_typescript9.default.isCallSignatureDeclaration(node) || import_typescript9.default.isCaseClause(node) || // eslint-disable-next-line deprecation/deprecation -- Keep compatibility with ts <5 |
|
isClassLikeDeclaration(node) || import_typescript9.default.isConstructorDeclaration(node) || import_typescript9.default.isConstructorTypeNode(node) || import_typescript9.default.isConstructSignatureDeclaration(node) || import_typescript9.default.isContinueStatement(node) || import_typescript9.default.isDebuggerStatement(node) || import_typescript9.default.isDoStatement(node) || import_typescript9.default.isEmptyStatement(node) || isEndOfFileToken(node) || import_typescript9.default.isEnumDeclaration(node) || import_typescript9.default.isEnumMember(node) || import_typescript9.default.isExportAssignment(node) || import_typescript9.default.isExportDeclaration(node) || import_typescript9.default.isExportSpecifier(node) || import_typescript9.default.isExpressionStatement(node) || import_typescript9.default.isForInStatement(node) || import_typescript9.default.isForOfStatement(node) || import_typescript9.default.isForStatement(node) || import_typescript9.default.isFunctionDeclaration(node) || import_typescript9.default.isFunctionExpression(node) || import_typescript9.default.isFunctionTypeNode(node) || import_typescript9.default.isIfStatement(node) || import_typescript9.default.isImportDeclaration(node) || import_typescript9.default.isImportEqualsDeclaration(node) || import_typescript9.default.isIndexSignatureDeclaration(node) || import_typescript9.default.isInterfaceDeclaration(node) || import_typescript9.default.isJSDocFunctionType(node) || import_typescript9.default.isLabeledStatement(node) || import_typescript9.default.isMethodDeclaration(node) || import_typescript9.default.isMethodSignature(node) || import_typescript9.default.isModuleDeclaration(node) || import_typescript9.default.isNamedTupleMember(node) || import_typescript9.default.isNamespaceExportDeclaration(node) || import_typescript9.default.isParameter(node) || import_typescript9.default.isParenthesizedExpression(node) || import_typescript9.default.isPropertyAssignment(node) || import_typescript9.default.isPropertyDeclaration(node) || import_typescript9.default.isPropertySignature(node) || import_typescript9.default.isReturnStatement(node) || import_typescript9.default.isShorthandPropertyAssignment(node) || import_typescript9.default.isSpreadAssignment(node) || import_typescript9.default.isSwitchStatement(node) || import_typescript9.default.isThrowStatement(node) || import_typescript9.default.isTryStatement(node) || import_typescript9.default.isTypeAliasDeclaration(node) || import_typescript9.default.isVariableDeclaration(node) || import_typescript9.default.isVariableStatement(node) || import_typescript9.default.isWhileStatement(node) || import_typescript9.default.isWithStatement(node) |
|
) { |
|
return true; |
|
} |
|
if (isTsVersionAtLeast(4, 4) && import_typescript9.default.isClassStaticBlockDeclaration(node)) { |
|
return true; |
|
} |
|
if (isTsVersionAtLeast(5, 0) && (import_typescript9.default.isBinaryExpression(node) || import_typescript9.default.isElementAccessExpression(node) || import_typescript9.default.isIdentifier(node) || import_typescript9.default.isJSDocSignature(node) || import_typescript9.default.isObjectLiteralExpression(node) || import_typescript9.default.isPropertyAccessExpression(node) || import_typescript9.default.isTypeParameterDeclaration(node))) { |
|
return true; |
|
} |
|
return false; |
|
} |
|
function hasModifiers(node) { |
|
return import_typescript9.default.isTypeParameterDeclaration(node) || import_typescript9.default.isParameter(node) || import_typescript9.default.isConstructorTypeNode(node) || import_typescript9.default.isPropertySignature(node) || import_typescript9.default.isPropertyDeclaration(node) || import_typescript9.default.isMethodSignature(node) || import_typescript9.default.isMethodDeclaration(node) || import_typescript9.default.isConstructorDeclaration(node) || import_typescript9.default.isGetAccessorDeclaration(node) || import_typescript9.default.isSetAccessorDeclaration(node) || import_typescript9.default.isIndexSignatureDeclaration(node) || import_typescript9.default.isFunctionExpression(node) || import_typescript9.default.isArrowFunction(node) || import_typescript9.default.isClassExpression(node) || import_typescript9.default.isVariableStatement(node) || import_typescript9.default.isFunctionDeclaration(node) || import_typescript9.default.isClassDeclaration(node) || import_typescript9.default.isInterfaceDeclaration(node) || import_typescript9.default.isTypeAliasDeclaration(node) || import_typescript9.default.isEnumDeclaration(node) || import_typescript9.default.isModuleDeclaration(node) || import_typescript9.default.isImportEqualsDeclaration(node) || import_typescript9.default.isImportDeclaration(node) || import_typescript9.default.isExportAssignment(node) || import_typescript9.default.isExportDeclaration(node); |
|
} |
|
function hasType(node) { |
|
return isSignatureDeclaration(node) || import_typescript9.default.isVariableDeclaration(node) || import_typescript9.default.isParameter(node) || import_typescript9.default.isPropertySignature(node) || import_typescript9.default.isPropertyDeclaration(node) || import_typescript9.default.isTypePredicateNode(node) || import_typescript9.default.isParenthesizedTypeNode(node) || import_typescript9.default.isTypeOperatorNode(node) || import_typescript9.default.isMappedTypeNode(node) || import_typescript9.default.isAssertionExpression(node) || import_typescript9.default.isTypeAliasDeclaration(node) || import_typescript9.default.isJSDocTypeExpression(node) || import_typescript9.default.isJSDocNonNullableType(node) || import_typescript9.default.isJSDocNullableType(node) || import_typescript9.default.isJSDocOptionalType(node) || import_typescript9.default.isJSDocVariadicType(node); |
|
} |
|
function hasTypeArguments(node) { |
|
return import_typescript9.default.isCallExpression(node) || import_typescript9.default.isNewExpression(node) || import_typescript9.default.isTaggedTemplateExpression(node) || import_typescript9.default.isJsxOpeningElement(node) || import_typescript9.default.isJsxSelfClosingElement(node); |
|
} |
|
function isJSDocComment(node) { |
|
if (isJSDocText(node)) { |
|
return true; |
|
} |
|
if (isTsVersionAtLeast(4, 4)) { |
|
return import_typescript9.default.isJSDocLink(node) || import_typescript9.default.isJSDocLinkCode(node) || import_typescript9.default.isJSDocLinkPlain(node); |
|
} |
|
return false; |
|
} |
|
function isJSDocNamespaceBody(node) { |
|
return import_typescript9.default.isIdentifier(node) || isJSDocNamespaceDeclaration(node); |
|
} |
|
function isJSDocTypeReferencingNode(node) { |
|
return import_typescript9.default.isJSDocVariadicType(node) || import_typescript9.default.isJSDocOptionalType(node) || import_typescript9.default.isJSDocNullableType(node) || import_typescript9.default.isJSDocNonNullableType(node); |
|
} |
|
function isJsonObjectExpression(node) { |
|
return import_typescript9.default.isObjectLiteralExpression(node) || import_typescript9.default.isArrayLiteralExpression(node) || isJsonMinusNumericLiteral(node) || import_typescript9.default.isNumericLiteral(node) || import_typescript9.default.isStringLiteral(node) || isBooleanLiteral(node) || isNullLiteral(node); |
|
} |
|
function isJsxAttributeLike(node) { |
|
return import_typescript9.default.isJsxAttribute(node) || import_typescript9.default.isJsxSpreadAttribute(node); |
|
} |
|
function isJsxAttributeValue(node) { |
|
return import_typescript9.default.isStringLiteral(node) || import_typescript9.default.isJsxExpression(node) || import_typescript9.default.isJsxElement(node) || import_typescript9.default.isJsxSelfClosingElement(node) || import_typescript9.default.isJsxFragment(node); |
|
} |
|
function isJsxChild(node) { |
|
return import_typescript9.default.isJsxText(node) || import_typescript9.default.isJsxExpression(node) || import_typescript9.default.isJsxElement(node) || import_typescript9.default.isJsxSelfClosingElement(node) || import_typescript9.default.isJsxFragment(node); |
|
} |
|
function isJsxTagNameExpression(node) { |
|
return import_typescript9.default.isIdentifier(node) || isThisExpression(node) || isJsxTagNamePropertyAccess(node); |
|
} |
|
function isLiteralToken(node) { |
|
return import_typescript9.default.isNumericLiteral(node) || import_typescript9.default.isBigIntLiteral(node) || import_typescript9.default.isStringLiteral(node) || import_typescript9.default.isJsxText(node) || import_typescript9.default.isRegularExpressionLiteral(node) || import_typescript9.default.isNoSubstitutionTemplateLiteral(node); |
|
} |
|
function isModuleBody(node) { |
|
return isNamespaceBody(node) || isJSDocNamespaceBody(node); |
|
} |
|
function isModuleName(node) { |
|
return import_typescript9.default.isIdentifier(node) || import_typescript9.default.isStringLiteral(node); |
|
} |
|
function isModuleReference(node) { |
|
return import_typescript9.default.isEntityName(node) || import_typescript9.default.isExternalModuleReference(node); |
|
} |
|
function isNamedImportBindings(node) { |
|
return import_typescript9.default.isNamespaceImport(node) || import_typescript9.default.isNamedImports(node); |
|
} |
|
function isNamedImportsOrExports(node) { |
|
return import_typescript9.default.isNamedImports(node) || import_typescript9.default.isNamedExports(node); |
|
} |
|
function isNamespaceBody(node) { |
|
return import_typescript9.default.isModuleBlock(node) || isNamespaceDeclaration(node); |
|
} |
|
function isObjectBindingOrAssignmentElement(node) { |
|
return import_typescript9.default.isBindingElement(node) || import_typescript9.default.isPropertyAssignment(node) || import_typescript9.default.isShorthandPropertyAssignment(node) || import_typescript9.default.isSpreadAssignment(node); |
|
} |
|
function isObjectBindingOrAssignmentPattern(node) { |
|
return import_typescript9.default.isObjectBindingPattern(node) || import_typescript9.default.isObjectLiteralExpression(node); |
|
} |
|
function isObjectTypeDeclaration(node) { |
|
return ( |
|
// eslint-disable-next-line deprecation/deprecation -- Keep compatibility with ts <5 |
|
isClassLikeDeclaration(node) || import_typescript9.default.isInterfaceDeclaration(node) || import_typescript9.default.isTypeLiteralNode(node) |
|
); |
|
} |
|
function isParameterPropertyModifier(node) { |
|
return isAccessibilityModifier(node) || isReadonlyKeyword(node); |
|
} |
|
function isPropertyNameLiteral(node) { |
|
return import_typescript9.default.isIdentifier(node) || import_typescript9.default.isStringLiteralLike(node) || import_typescript9.default.isNumericLiteral(node); |
|
} |
|
function isPseudoLiteralToken(node) { |
|
return import_typescript9.default.isTemplateHead(node) || import_typescript9.default.isTemplateMiddle(node) || import_typescript9.default.isTemplateTail(node); |
|
} |
|
function isSignatureDeclaration(node) { |
|
return import_typescript9.default.isCallSignatureDeclaration(node) || import_typescript9.default.isConstructSignatureDeclaration(node) || import_typescript9.default.isMethodSignature(node) || import_typescript9.default.isIndexSignatureDeclaration(node) || import_typescript9.default.isFunctionTypeNode(node) || import_typescript9.default.isConstructorTypeNode(node) || import_typescript9.default.isJSDocFunctionType(node) || import_typescript9.default.isFunctionDeclaration(node) || import_typescript9.default.isMethodDeclaration(node) || import_typescript9.default.isConstructorDeclaration(node) || // eslint-disable-next-line deprecation/deprecation -- Keep compatibility with ts <5 |
|
isAccessorDeclaration(node) || import_typescript9.default.isFunctionExpression(node) || import_typescript9.default.isArrowFunction(node); |
|
} |
|
function isSuperProperty(node) { |
|
return isSuperPropertyAccessExpression(node) || isSuperElementAccessExpression(node); |
|
} |
|
function isTypeOnlyCompatibleAliasDeclaration(node) { |
|
if (import_typescript9.default.isImportClause(node) || import_typescript9.default.isImportEqualsDeclaration(node) || import_typescript9.default.isNamespaceImport(node) || import_typescript9.default.isImportOrExportSpecifier(node)) { |
|
return true; |
|
} |
|
if (isTsVersionAtLeast(5, 0) && (import_typescript9.default.isExportDeclaration(node) || import_typescript9.default.isNamespaceExport(node))) { |
|
return true; |
|
} |
|
return false; |
|
} |
|
function isTypeReferenceType(node) { |
|
return import_typescript9.default.isTypeReferenceNode(node) || import_typescript9.default.isExpressionWithTypeArguments(node); |
|
} |
|
function isUnionOrIntersectionTypeNode(node) { |
|
return import_typescript9.default.isUnionTypeNode(node) || import_typescript9.default.isIntersectionTypeNode(node); |
|
} |
|
function isUnparsedSourceText(node) { |
|
return import_typescript9.default.isUnparsedPrepend(node) || import_typescript9.default.isUnparsedTextLike(node); |
|
} |
|
function isVariableLikeDeclaration(node) { |
|
return import_typescript9.default.isVariableDeclaration(node) || import_typescript9.default.isParameter(node) || import_typescript9.default.isBindingElement(node) || import_typescript9.default.isPropertyDeclaration(node) || import_typescript9.default.isPropertyAssignment(node) || import_typescript9.default.isPropertySignature(node) || import_typescript9.default.isJsxAttribute(node) || import_typescript9.default.isShorthandPropertyAssignment(node) || import_typescript9.default.isEnumMember(node) || import_typescript9.default.isJSDocPropertyTag(node) || import_typescript9.default.isJSDocParameterTag(node); |
|
} |
|
|
|
// src/nodes/typeGuards/compound.ts |
|
function isConstAssertionExpression(node) { |
|
return import_typescript10.default.isTypeReferenceNode(node.type) && import_typescript10.default.isIdentifier(node.type.typeName) && node.type.typeName.escapedText === "const"; |
|
} |
|
function isIterationStatement(node) { |
|
switch (node.kind) { |
|
case import_typescript10.default.SyntaxKind.DoStatement: |
|
case import_typescript10.default.SyntaxKind.ForInStatement: |
|
case import_typescript10.default.SyntaxKind.ForOfStatement: |
|
case import_typescript10.default.SyntaxKind.ForStatement: |
|
case import_typescript10.default.SyntaxKind.WhileStatement: |
|
return true; |
|
default: |
|
return false; |
|
} |
|
} |
|
function isJSDocNamespaceDeclaration(node) { |
|
return import_typescript10.default.isModuleDeclaration(node) && import_typescript10.default.isIdentifier(node.name) && (node.body === void 0 || isJSDocNamespaceBody(node.body)); |
|
} |
|
function isJsxTagNamePropertyAccess(node) { |
|
return import_typescript10.default.isPropertyAccessExpression(node) && // eslint-disable-next-line deprecation/deprecation -- Keep compatibility with ts < 5 |
|
isJsxTagNameExpression(node.expression); |
|
} |
|
function isNamedDeclarationWithName(node) { |
|
return "name" in node && node.name !== void 0 && node.name !== null && isDeclarationName(node.name); |
|
} |
|
function isNamespaceDeclaration(node) { |
|
return import_typescript10.default.isModuleDeclaration(node) && import_typescript10.default.isIdentifier(node.name) && node.body !== void 0 && isNamespaceBody(node.body); |
|
} |
|
function isNumericOrStringLikeLiteral(node) { |
|
switch (node.kind) { |
|
case import_typescript10.default.SyntaxKind.StringLiteral: |
|
case import_typescript10.default.SyntaxKind.NumericLiteral: |
|
case import_typescript10.default.SyntaxKind.NoSubstitutionTemplateLiteral: |
|
return true; |
|
default: |
|
return false; |
|
} |
|
} |
|
function isPropertyAccessEntityNameExpression(node) { |
|
return import_typescript10.default.isPropertyAccessExpression(node) && import_typescript10.default.isIdentifier(node.name) && isEntityNameExpression(node.expression); |
|
} |
|
function isSuperElementAccessExpression(node) { |
|
return import_typescript10.default.isElementAccessExpression(node) && isSuperExpression(node.expression); |
|
} |
|
function isSuperPropertyAccessExpression(node) { |
|
return import_typescript10.default.isPropertyAccessExpression(node) && isSuperExpression(node.expression); |
|
} |
|
|
|
// src/scopes.ts |
|
var import_typescript11 = __toESM(require("typescript"), 1); |
|
function isFunctionScopeBoundary(node) { |
|
switch (node.kind) { |
|
case import_typescript11.default.SyntaxKind.FunctionExpression: |
|
case import_typescript11.default.SyntaxKind.ArrowFunction: |
|
case import_typescript11.default.SyntaxKind.Constructor: |
|
case import_typescript11.default.SyntaxKind.ModuleDeclaration: |
|
case import_typescript11.default.SyntaxKind.ClassDeclaration: |
|
case import_typescript11.default.SyntaxKind.ClassExpression: |
|
case import_typescript11.default.SyntaxKind.EnumDeclaration: |
|
case import_typescript11.default.SyntaxKind.MethodDeclaration: |
|
case import_typescript11.default.SyntaxKind.FunctionDeclaration: |
|
case import_typescript11.default.SyntaxKind.GetAccessor: |
|
case import_typescript11.default.SyntaxKind.SetAccessor: |
|
case import_typescript11.default.SyntaxKind.MethodSignature: |
|
case import_typescript11.default.SyntaxKind.CallSignature: |
|
case import_typescript11.default.SyntaxKind.ConstructSignature: |
|
case import_typescript11.default.SyntaxKind.ConstructorType: |
|
case import_typescript11.default.SyntaxKind.FunctionType: |
|
return true; |
|
case import_typescript11.default.SyntaxKind.SourceFile: |
|
return import_typescript11.default.isExternalModule(node); |
|
default: |
|
return false; |
|
} |
|
} |
|
|
|
// src/types/getters.ts |
|
var import_typescript16 = __toESM(require("typescript"), 1); |
|
|
|
// src/types/typeGuards/intrinsic.ts |
|
var import_typescript12 = __toESM(require("typescript"), 1); |
|
function isIntrinsicAnyType(type) { |
|
return isTypeFlagSet(type, import_typescript12.default.TypeFlags.Any); |
|
} |
|
function isIntrinsicBooleanType(type) { |
|
return isTypeFlagSet(type, import_typescript12.default.TypeFlags.Boolean); |
|
} |
|
function isIntrinsicBigIntType(type) { |
|
return isTypeFlagSet(type, import_typescript12.default.TypeFlags.BigInt); |
|
} |
|
function isIntrinsicErrorType(type) { |
|
return isIntrinsicType(type) && type.intrinsicName === "error"; |
|
} |
|
function isIntrinsicESSymbolType(type) { |
|
return isTypeFlagSet(type, import_typescript12.default.TypeFlags.ESSymbol); |
|
} |
|
var IntrinsicTypeFlags = import_typescript12.default.TypeFlags.Intrinsic ?? import_typescript12.default.TypeFlags.Any | import_typescript12.default.TypeFlags.Unknown | import_typescript12.default.TypeFlags.String | import_typescript12.default.TypeFlags.Number | import_typescript12.default.TypeFlags.BigInt | import_typescript12.default.TypeFlags.Boolean | import_typescript12.default.TypeFlags.BooleanLiteral | import_typescript12.default.TypeFlags.ESSymbol | import_typescript12.default.TypeFlags.Void | import_typescript12.default.TypeFlags.Undefined | import_typescript12.default.TypeFlags.Null | import_typescript12.default.TypeFlags.Never | import_typescript12.default.TypeFlags.NonPrimitive; |
|
function isIntrinsicType(type) { |
|
return isTypeFlagSet(type, IntrinsicTypeFlags); |
|
} |
|
function isIntrinsicNeverType(type) { |
|
return isTypeFlagSet(type, import_typescript12.default.TypeFlags.Never); |
|
} |
|
function isIntrinsicNonPrimitiveType(type) { |
|
return isTypeFlagSet(type, import_typescript12.default.TypeFlags.NonPrimitive); |
|
} |
|
function isIntrinsicNullType(type) { |
|
return isTypeFlagSet(type, import_typescript12.default.TypeFlags.Null); |
|
} |
|
function isIntrinsicNumberType(type) { |
|
return isTypeFlagSet(type, import_typescript12.default.TypeFlags.Number); |
|
} |
|
function isIntrinsicStringType(type) { |
|
return isTypeFlagSet(type, import_typescript12.default.TypeFlags.String); |
|
} |
|
function isIntrinsicUndefinedType(type) { |
|
return isTypeFlagSet(type, import_typescript12.default.TypeFlags.Undefined); |
|
} |
|
function isIntrinsicUnknownType(type) { |
|
return isTypeFlagSet(type, import_typescript12.default.TypeFlags.Unknown); |
|
} |
|
function isIntrinsicVoidType(type) { |
|
return isTypeFlagSet(type, import_typescript12.default.TypeFlags.Void); |
|
} |
|
|
|
// src/types/typeGuards/objects.ts |
|
var import_typescript14 = __toESM(require("typescript"), 1); |
|
|
|
// src/types/typeGuards/single.ts |
|
var import_typescript13 = __toESM(require("typescript"), 1); |
|
function isConditionalType(type) { |
|
return isTypeFlagSet(type, import_typescript13.default.TypeFlags.Conditional); |
|
} |
|
function isEnumType(type) { |
|
return isTypeFlagSet(type, import_typescript13.default.TypeFlags.Enum); |
|
} |
|
function isFreshableType(type) { |
|
return isTypeFlagSet(type, import_typescript13.default.TypeFlags.Freshable); |
|
} |
|
function isIndexType(type) { |
|
return isTypeFlagSet(type, import_typescript13.default.TypeFlags.Index); |
|
} |
|
function isIndexedAccessType(type) { |
|
return isTypeFlagSet(type, import_typescript13.default.TypeFlags.IndexedAccess); |
|
} |
|
function isInstantiableType(type) { |
|
return isTypeFlagSet(type, import_typescript13.default.TypeFlags.Instantiable); |
|
} |
|
function isIntersectionType(type) { |
|
return isTypeFlagSet(type, import_typescript13.default.TypeFlags.Intersection); |
|
} |
|
function isObjectType(type) { |
|
return isTypeFlagSet(type, import_typescript13.default.TypeFlags.Object); |
|
} |
|
function isStringMappingType(type) { |
|
return isTypeFlagSet(type, import_typescript13.default.TypeFlags.StringMapping); |
|
} |
|
function isSubstitutionType(type) { |
|
return isTypeFlagSet(type, import_typescript13.default.TypeFlags.Substitution); |
|
} |
|
function isTypeParameter(type) { |
|
return isTypeFlagSet(type, import_typescript13.default.TypeFlags.TypeParameter); |
|
} |
|
function isTypeVariable(type) { |
|
return isTypeFlagSet(type, import_typescript13.default.TypeFlags.TypeVariable); |
|
} |
|
function isUnionType(type) { |
|
return isTypeFlagSet(type, import_typescript13.default.TypeFlags.Union); |
|
} |
|
function isUnionOrIntersectionType(type) { |
|
return isTypeFlagSet(type, import_typescript13.default.TypeFlags.UnionOrIntersection); |
|
} |
|
function isUniqueESSymbolType(type) { |
|
return isTypeFlagSet(type, import_typescript13.default.TypeFlags.UniqueESSymbol); |
|
} |
|
|
|
// src/types/typeGuards/objects.ts |
|
function isEvolvingArrayType(type) { |
|
return isObjectType(type) && isObjectFlagSet(type, import_typescript14.default.ObjectFlags.EvolvingArray); |
|
} |
|
function isTupleType(type) { |
|
return isObjectType(type) && isObjectFlagSet(type, import_typescript14.default.ObjectFlags.Tuple); |
|
} |
|
function isTypeReference(type) { |
|
return isObjectType(type) && isObjectFlagSet(type, import_typescript14.default.ObjectFlags.Reference); |
|
} |
|
|
|
// src/types/typeGuards/compound.ts |
|
function isFreshableIntrinsicType(type) { |
|
return isIntrinsicType(type) && isFreshableType(type); |
|
} |
|
function isTupleTypeReference(type) { |
|
return isTypeReference(type) && isTupleType(type.target); |
|
} |
|
|
|
// src/types/typeGuards/literal.ts |
|
var import_typescript15 = __toESM(require("typescript"), 1); |
|
function isBooleanLiteralType(type) { |
|
return isTypeFlagSet(type, import_typescript15.default.TypeFlags.BooleanLiteral); |
|
} |
|
function isBigIntLiteralType(type) { |
|
return isTypeFlagSet(type, import_typescript15.default.TypeFlags.BigIntLiteral); |
|
} |
|
function isFalseLiteralType(type) { |
|
return isBooleanLiteralType(type) && type.intrinsicName === "false"; |
|
} |
|
function isLiteralType(type) { |
|
return isTypeFlagSet(type, import_typescript15.default.TypeFlags.Literal); |
|
} |
|
function isNumberLiteralType(type) { |
|
return isTypeFlagSet(type, import_typescript15.default.TypeFlags.NumberLiteral); |
|
} |
|
function isStringLiteralType(type) { |
|
return isTypeFlagSet(type, import_typescript15.default.TypeFlags.StringLiteral); |
|
} |
|
function isTemplateLiteralType(type) { |
|
return isTypeFlagSet(type, import_typescript15.default.TypeFlags.TemplateLiteral); |
|
} |
|
function isTrueLiteralType(type) { |
|
return isBooleanLiteralType(type) && type.intrinsicName === "true"; |
|
} |
|
function isUnknownLiteralType(type) { |
|
return isTypeFlagSet(type, import_typescript15.default.TypeFlags.Literal); |
|
} |
|
|
|
// src/types/getters.ts |
|
function getCallSignaturesOfType(type) { |
|
if (isUnionType(type)) { |
|
const signatures = []; |
|
for (const subType of type.types) { |
|
signatures.push(...getCallSignaturesOfType(subType)); |
|
} |
|
return signatures; |
|
} |
|
if (isIntersectionType(type)) { |
|
let signatures; |
|
for (const subType of type.types) { |
|
const sig = getCallSignaturesOfType(subType); |
|
if (sig.length !== 0) { |
|
if (signatures !== void 0) { |
|
return []; |
|
} |
|
signatures = sig; |
|
} |
|
} |
|
return signatures === void 0 ? [] : signatures; |
|
} |
|
return type.getCallSignatures(); |
|
} |
|
function getPropertyOfType(type, name) { |
|
if (!name.startsWith("__")) { |
|
return type.getProperty(name); |
|
} |
|
return type.getProperties().find((s) => s.escapedName === name); |
|
} |
|
function getWellKnownSymbolPropertyOfType(type, wellKnownSymbolName, typeChecker) { |
|
const prefix = "__@" + wellKnownSymbolName; |
|
for (const prop of type.getProperties()) { |
|
if (!prop.name.startsWith(prefix)) { |
|
continue; |
|
} |
|
const declaration = prop.valueDeclaration ?? prop.getDeclarations()[0]; |
|
if (!isNamedDeclarationWithName(declaration) || declaration.name === void 0 || !import_typescript16.default.isComputedPropertyName(declaration.name)) { |
|
continue; |
|
} |
|
const globalSymbol = typeChecker.getApparentType( |
|
typeChecker.getTypeAtLocation(declaration.name.expression) |
|
).symbol; |
|
if (prop.escapedName === getPropertyNameOfWellKnownSymbol( |
|
typeChecker, |
|
globalSymbol, |
|
wellKnownSymbolName |
|
)) { |
|
return prop; |
|
} |
|
} |
|
return void 0; |
|
} |
|
function getPropertyNameOfWellKnownSymbol(typeChecker, symbolConstructor, symbolName) { |
|
const knownSymbol = symbolConstructor && typeChecker.getTypeOfSymbolAtLocation( |
|
symbolConstructor, |
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access |
|
symbolConstructor.valueDeclaration |
|
).getProperty(symbolName); |
|
const knownSymbolType = knownSymbol && typeChecker.getTypeOfSymbolAtLocation( |
|
knownSymbol, |
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access |
|
knownSymbol.valueDeclaration |
|
); |
|
if (knownSymbolType && isUniqueESSymbolType(knownSymbolType)) { |
|
return knownSymbolType.escapedName; |
|
} |
|
return "__@" + symbolName; |
|
} |
|
|
|
// src/types/utilities.ts |
|
var import_typescript18 = __toESM(require("typescript"), 1); |
|
|
|
// src/nodes/utilities.ts |
|
var import_typescript17 = __toESM(require("typescript"), 1); |
|
function isBindableObjectDefinePropertyCall(node) { |
|
return node.arguments.length === 3 && isEntityNameExpression(node.arguments[0]) && isNumericOrStringLikeLiteral(node.arguments[1]) && import_typescript17.default.isPropertyAccessExpression(node.expression) && node.expression.name.escapedText === "defineProperty" && import_typescript17.default.isIdentifier(node.expression.expression) && node.expression.expression.escapedText === "Object"; |
|
} |
|
function isInConstContext(node) { |
|
let current = node; |
|
while (true) { |
|
const parent = current.parent; |
|
outer: |
|
switch (parent.kind) { |
|
case import_typescript17.default.SyntaxKind.TypeAssertionExpression: |
|
case import_typescript17.default.SyntaxKind.AsExpression: |
|
return isConstAssertionExpression(parent); |
|
case import_typescript17.default.SyntaxKind.PrefixUnaryExpression: |
|
if (current.kind !== import_typescript17.default.SyntaxKind.NumericLiteral) { |
|
return false; |
|
} |
|
switch (parent.operator) { |
|
case import_typescript17.default.SyntaxKind.PlusToken: |
|
case import_typescript17.default.SyntaxKind.MinusToken: |
|
current = parent; |
|
break outer; |
|
default: |
|
return false; |
|
} |
|
case import_typescript17.default.SyntaxKind.PropertyAssignment: |
|
if (parent.initializer !== current) { |
|
return false; |
|
} |
|
current = parent.parent; |
|
break; |
|
case import_typescript17.default.SyntaxKind.ShorthandPropertyAssignment: |
|
current = parent.parent; |
|
break; |
|
case import_typescript17.default.SyntaxKind.ParenthesizedExpression: |
|
case import_typescript17.default.SyntaxKind.ArrayLiteralExpression: |
|
case import_typescript17.default.SyntaxKind.ObjectLiteralExpression: |
|
case import_typescript17.default.SyntaxKind.TemplateExpression: |
|
current = parent; |
|
break; |
|
default: |
|
return false; |
|
} |
|
} |
|
} |
|
|
|
// src/types/utilities.ts |
|
function isFalsyType(type) { |
|
if (isTypeFlagSet( |
|
type, |
|
import_typescript18.default.TypeFlags.Undefined | import_typescript18.default.TypeFlags.Null | import_typescript18.default.TypeFlags.Void |
|
)) { |
|
return true; |
|
} |
|
if (type.isLiteral()) { |
|
return !type.value; |
|
} |
|
return isFalseLiteralType(type); |
|
} |
|
function intersectionTypeParts(type) { |
|
return isIntersectionType(type) ? type.types : [type]; |
|
} |
|
function typeParts(type) { |
|
return isIntersectionType(type) || isUnionType(type) ? type.types : [type]; |
|
} |
|
function isReadonlyPropertyIntersection(type, name, typeChecker) { |
|
const typeParts2 = isIntersectionType(type) ? type.types : [type]; |
|
return typeParts2.some((subType) => { |
|
const prop = getPropertyOfType(subType, name); |
|
if (prop === void 0) { |
|
return false; |
|
} |
|
if (prop.flags & import_typescript18.default.SymbolFlags.Transient) { |
|
if (/^(?:[1-9]\d*|0)$/.test(name) && isTupleTypeReference(subType)) { |
|
return subType.target.readonly; |
|
} |
|
switch (isReadonlyPropertyFromMappedType(subType, name, typeChecker)) { |
|
case true: |
|
return true; |
|
case false: |
|
return false; |
|
default: |
|
} |
|
} |
|
return !!// members of namespace import |
|
(isSymbolFlagSet(prop, import_typescript18.default.SymbolFlags.ValueModule) || // we unwrapped every mapped type, now we can check the actual declarations |
|
symbolHasReadonlyDeclaration(prop, typeChecker)); |
|
}); |
|
} |
|
function isReadonlyPropertyFromMappedType(type, name, typeChecker) { |
|
if (!isObjectType(type) || !isObjectFlagSet(type, import_typescript18.default.ObjectFlags.Mapped)) { |
|
return; |
|
} |
|
const declaration = type.symbol.declarations[0]; |
|
if (declaration.readonlyToken !== void 0 && !/^__@[^@]+$/.test(name)) { |
|
return declaration.readonlyToken.kind !== import_typescript18.default.SyntaxKind.MinusToken; |
|
} |
|
const { modifiersType } = type; |
|
return modifiersType && isPropertyReadonlyInType(modifiersType, name, typeChecker); |
|
} |
|
function isCallback(typeChecker, param, node) { |
|
let type = typeChecker.getApparentType( |
|
typeChecker.getTypeOfSymbolAtLocation(param, node) |
|
); |
|
if (param.valueDeclaration.dotDotDotToken) { |
|
type = type.getNumberIndexType(); |
|
if (type === void 0) { |
|
return false; |
|
} |
|
} |
|
for (const subType of unionTypeParts(type)) { |
|
if (subType.getCallSignatures().length !== 0) { |
|
return true; |
|
} |
|
} |
|
return false; |
|
} |
|
function isPropertyReadonlyInType(type, name, typeChecker) { |
|
let seenProperty = false; |
|
let seenReadonlySignature = false; |
|
for (const subType of unionTypeParts(type)) { |
|
if (getPropertyOfType(subType, name) === void 0) { |
|
const index = (isNumericPropertyName(name) ? typeChecker.getIndexInfoOfType(subType, import_typescript18.default.IndexKind.Number) : void 0) ?? typeChecker.getIndexInfoOfType(subType, import_typescript18.default.IndexKind.String); |
|
if (index?.isReadonly) { |
|
if (seenProperty) { |
|
return true; |
|
} |
|
seenReadonlySignature = true; |
|
} |
|
} else if (seenReadonlySignature || isReadonlyPropertyIntersection(subType, name, typeChecker)) { |
|
return true; |
|
} else { |
|
seenProperty = true; |
|
} |
|
} |
|
return false; |
|
} |
|
function isReadonlyAssignmentDeclaration(node, typeChecker) { |
|
if (!isBindableObjectDefinePropertyCall(node)) { |
|
return false; |
|
} |
|
const descriptorType = typeChecker.getTypeAtLocation(node.arguments[2]); |
|
if (descriptorType.getProperty("value") === void 0) { |
|
return descriptorType.getProperty("set") === void 0; |
|
} |
|
const writableProp = descriptorType.getProperty("writable"); |
|
if (writableProp === void 0) { |
|
return false; |
|
} |
|
const writableType = writableProp.valueDeclaration !== void 0 && import_typescript18.default.isPropertyAssignment(writableProp.valueDeclaration) ? typeChecker.getTypeAtLocation(writableProp.valueDeclaration.initializer) : typeChecker.getTypeOfSymbolAtLocation(writableProp, node.arguments[2]); |
|
return isFalseLiteralType(writableType); |
|
} |
|
function isThenableType(typeChecker, node, type = typeChecker.getTypeAtLocation(node)) { |
|
for (const typePart of unionTypeParts(typeChecker.getApparentType(type))) { |
|
const then = typePart.getProperty("then"); |
|
if (then === void 0) { |
|
continue; |
|
} |
|
const thenType = typeChecker.getTypeOfSymbolAtLocation(then, node); |
|
for (const subTypePart of unionTypeParts(thenType)) { |
|
for (const signature of subTypePart.getCallSignatures()) { |
|
if (signature.parameters.length !== 0 && isCallback(typeChecker, signature.parameters[0], node)) { |
|
return true; |
|
} |
|
} |
|
} |
|
} |
|
return false; |
|
} |
|
function symbolHasReadonlyDeclaration(symbol, typeChecker) { |
|
return !!((symbol.flags & import_typescript18.default.SymbolFlags.Accessor) === import_typescript18.default.SymbolFlags.GetAccessor || symbol.declarations?.some( |
|
(node) => isModifierFlagSet(node, import_typescript18.default.ModifierFlags.Readonly) || import_typescript18.default.isVariableDeclaration(node) && isNodeFlagSet(node.parent, import_typescript18.default.NodeFlags.Const) || import_typescript18.default.isCallExpression(node) && isReadonlyAssignmentDeclaration(node, typeChecker) || import_typescript18.default.isEnumMember(node) || (import_typescript18.default.isPropertyAssignment(node) || import_typescript18.default.isShorthandPropertyAssignment(node)) && isInConstContext(node.parent) |
|
)); |
|
} |
|
function unionTypeParts(type) { |
|
return isUnionType(type) ? type.types : [type]; |
|
} |
|
|
|
// src/usage/UsageWalker.ts |
|
var import_typescript24 = __toESM(require("typescript"), 1); |
|
|
|
// src/usage/Scope.ts |
|
var import_typescript19 = __toESM(require("typescript"), 1); |
|
function isBlockScopeBoundary(node) { |
|
switch (node.kind) { |
|
case import_typescript19.default.SyntaxKind.Block: { |
|
const parent = node.parent; |
|
return parent.kind !== import_typescript19.default.SyntaxKind.CatchClause && // blocks inside SourceFile are block scope boundaries |
|
(parent.kind === import_typescript19.default.SyntaxKind.SourceFile || // blocks that are direct children of a function scope boundary are no scope boundary |
|
// for example the FunctionBlock is part of the function scope of the containing function |
|
!isFunctionScopeBoundary(parent)) ? 2 /* Block */ : 0 /* None */; |
|
} |
|
case import_typescript19.default.SyntaxKind.ForStatement: |
|
case import_typescript19.default.SyntaxKind.ForInStatement: |
|
case import_typescript19.default.SyntaxKind.ForOfStatement: |
|
case import_typescript19.default.SyntaxKind.CaseBlock: |
|
case import_typescript19.default.SyntaxKind.CatchClause: |
|
case import_typescript19.default.SyntaxKind.WithStatement: |
|
return 2 /* Block */; |
|
default: |
|
return 0 /* None */; |
|
} |
|
} |
|
|
|
// src/usage/declarations.ts |
|
var import_typescript21 = __toESM(require("typescript"), 1); |
|
|
|
// src/usage/utils.ts |
|
var import_typescript20 = __toESM(require("typescript"), 1); |
|
function identifierToKeywordKind(node) { |
|
return "identifierToKeywordKind" in import_typescript20.default ? import_typescript20.default.identifierToKeywordKind(node) : ( |
|
// eslint-disable-next-line deprecation/deprecation |
|
node.originalKeywordKind |
|
); |
|
} |
|
function canHaveDecorators(node) { |
|
return "canHaveDecorators" in import_typescript20.default ? import_typescript20.default.canHaveDecorators(node) : "decorators" in node; |
|
} |
|
function getDecorators(node) { |
|
return "getDecorators" in import_typescript20.default ? import_typescript20.default.getDecorators(node) : node.decorators; |
|
} |
|
|
|
// src/usage/declarations.ts |
|
var DeclarationDomain = /* @__PURE__ */ ((DeclarationDomain2) => { |
|
DeclarationDomain2[DeclarationDomain2["Import"] = 8] = "Import"; |
|
DeclarationDomain2[DeclarationDomain2["Namespace"] = 1] = "Namespace"; |
|
DeclarationDomain2[DeclarationDomain2["Type"] = 2] = "Type"; |
|
DeclarationDomain2[DeclarationDomain2["Value"] = 4] = "Value"; |
|
DeclarationDomain2[DeclarationDomain2["Any"] = 7] = "Any"; |
|
return DeclarationDomain2; |
|
})(DeclarationDomain || {}); |
|
function getDeclarationDomain(node) { |
|
switch (node.parent.kind) { |
|
case import_typescript21.default.SyntaxKind.TypeParameter: |
|
case import_typescript21.default.SyntaxKind.InterfaceDeclaration: |
|
case import_typescript21.default.SyntaxKind.TypeAliasDeclaration: |
|
return 2 /* Type */; |
|
case import_typescript21.default.SyntaxKind.ClassDeclaration: |
|
case import_typescript21.default.SyntaxKind.ClassExpression: |
|
return 2 /* Type */ | 4 /* Value */; |
|
case import_typescript21.default.SyntaxKind.EnumDeclaration: |
|
return 7 /* Any */; |
|
case import_typescript21.default.SyntaxKind.NamespaceImport: |
|
case import_typescript21.default.SyntaxKind.ImportClause: |
|
return 7 /* Any */ | 8 /* Import */; |
|
case import_typescript21.default.SyntaxKind.ImportEqualsDeclaration: |
|
case import_typescript21.default.SyntaxKind.ImportSpecifier: |
|
return node.parent.name === node ? 7 /* Any */ | 8 /* Import */ : void 0; |
|
case import_typescript21.default.SyntaxKind.ModuleDeclaration: |
|
return 1 /* Namespace */; |
|
case import_typescript21.default.SyntaxKind.Parameter: |
|
if (node.parent.parent.kind === import_typescript21.default.SyntaxKind.IndexSignature || identifierToKeywordKind(node) === import_typescript21.default.SyntaxKind.ThisKeyword) { |
|
return; |
|
} |
|
case import_typescript21.default.SyntaxKind.BindingElement: |
|
case import_typescript21.default.SyntaxKind.VariableDeclaration: |
|
return node.parent.name === node ? 4 /* Value */ : void 0; |
|
case import_typescript21.default.SyntaxKind.FunctionDeclaration: |
|
case import_typescript21.default.SyntaxKind.FunctionExpression: |
|
return 4 /* Value */; |
|
} |
|
} |
|
|
|
// src/usage/getPropertyName.ts |
|
var import_typescript22 = __toESM(require("typescript"), 1); |
|
function unwrapParentheses(node) { |
|
while (node.kind === import_typescript22.default.SyntaxKind.ParenthesizedExpression) { |
|
node = node.expression; |
|
} |
|
return node; |
|
} |
|
function getPropertyName(propertyName) { |
|
if (propertyName.kind === import_typescript22.default.SyntaxKind.ComputedPropertyName) { |
|
const expression = unwrapParentheses(propertyName.expression); |
|
if (import_typescript22.default.isPrefixUnaryExpression(expression)) { |
|
let negate = false; |
|
switch (expression.operator) { |
|
case import_typescript22.default.SyntaxKind.MinusToken: |
|
negate = true; |
|
case import_typescript22.default.SyntaxKind.PlusToken: |
|
return import_typescript22.default.isNumericLiteral(expression.operand) ? `${negate ? "-" : ""}${expression.operand.text}` : import_typescript22.default.isBigIntLiteral(expression.operand) ? `${negate ? "-" : ""}${expression.operand.text.slice(0, -1)}` : void 0; |
|
default: |
|
return; |
|
} |
|
} |
|
if (import_typescript22.default.isBigIntLiteral(expression)) { |
|
return expression.text.slice(0, -1); |
|
} |
|
if (isNumericOrStringLikeLiteral(expression)) { |
|
return expression.text; |
|
} |
|
return; |
|
} |
|
return propertyName.kind === import_typescript22.default.SyntaxKind.PrivateIdentifier ? void 0 : propertyName.text; |
|
} |
|
|
|
// src/usage/getUsageDomain.ts |
|
var import_typescript23 = __toESM(require("typescript"), 1); |
|
var UsageDomain = /* @__PURE__ */ ((UsageDomain2) => { |
|
UsageDomain2[UsageDomain2["Namespace"] = 1] = "Namespace"; |
|
UsageDomain2[UsageDomain2["Type"] = 2] = "Type"; |
|
UsageDomain2[UsageDomain2["TypeQuery"] = 8] = "TypeQuery"; |
|
UsageDomain2[UsageDomain2["Value"] = 4] = "Value"; |
|
UsageDomain2[UsageDomain2["ValueOrNamespace"] = 5] = "ValueOrNamespace"; |
|
UsageDomain2[UsageDomain2["Any"] = 7] = "Any"; |
|
return UsageDomain2; |
|
})(UsageDomain || {}); |
|
function getUsageDomain(node) { |
|
const parent = node.parent; |
|
switch (parent.kind) { |
|
case import_typescript23.default.SyntaxKind.TypeReference: |
|
return identifierToKeywordKind(node) !== import_typescript23.default.SyntaxKind.ConstKeyword ? 2 /* Type */ : void 0; |
|
case import_typescript23.default.SyntaxKind.ExpressionWithTypeArguments: |
|
return parent.parent.token === import_typescript23.default.SyntaxKind.ImplementsKeyword || parent.parent.parent.kind === import_typescript23.default.SyntaxKind.InterfaceDeclaration ? 2 /* Type */ : 4 /* Value */; |
|
case import_typescript23.default.SyntaxKind.TypeQuery: |
|
return 5 /* ValueOrNamespace */ | 8 /* TypeQuery */; |
|
case import_typescript23.default.SyntaxKind.QualifiedName: |
|
if (parent.left === node) { |
|
if (getEntityNameParent(parent).kind === import_typescript23.default.SyntaxKind.TypeQuery) { |
|
return 1 /* Namespace */ | 8 /* TypeQuery */; |
|
} |
|
return 1 /* Namespace */; |
|
} |
|
break; |
|
case import_typescript23.default.SyntaxKind.ExportSpecifier: |
|
if (parent.propertyName === void 0 || parent.propertyName === node) { |
|
return 7 /* Any */; |
|
} |
|
break; |
|
case import_typescript23.default.SyntaxKind.ExportAssignment: |
|
return 7 /* Any */; |
|
case import_typescript23.default.SyntaxKind.BindingElement: |
|
if (parent.initializer === node) { |
|
return 5 /* ValueOrNamespace */; |
|
} |
|
break; |
|
case import_typescript23.default.SyntaxKind.Parameter: |
|
case import_typescript23.default.SyntaxKind.EnumMember: |
|
case import_typescript23.default.SyntaxKind.PropertyDeclaration: |
|
case import_typescript23.default.SyntaxKind.VariableDeclaration: |
|
case import_typescript23.default.SyntaxKind.PropertyAssignment: |
|
case import_typescript23.default.SyntaxKind.PropertyAccessExpression: |
|
case import_typescript23.default.SyntaxKind.ImportEqualsDeclaration: |
|
if (parent.name !== node) { |
|
return 5 /* ValueOrNamespace */; |
|
} |
|
break; |
|
case import_typescript23.default.SyntaxKind.JsxAttribute: |
|
case import_typescript23.default.SyntaxKind.FunctionDeclaration: |
|
case import_typescript23.default.SyntaxKind.FunctionExpression: |
|
case import_typescript23.default.SyntaxKind.NamespaceImport: |
|
case import_typescript23.default.SyntaxKind.ClassDeclaration: |
|
case import_typescript23.default.SyntaxKind.ClassExpression: |
|
case import_typescript23.default.SyntaxKind.ModuleDeclaration: |
|
case import_typescript23.default.SyntaxKind.MethodDeclaration: |
|
case import_typescript23.default.SyntaxKind.EnumDeclaration: |
|
case import_typescript23.default.SyntaxKind.GetAccessor: |
|
case import_typescript23.default.SyntaxKind.SetAccessor: |
|
case import_typescript23.default.SyntaxKind.LabeledStatement: |
|
case import_typescript23.default.SyntaxKind.BreakStatement: |
|
case import_typescript23.default.SyntaxKind.ContinueStatement: |
|
case import_typescript23.default.SyntaxKind.ImportClause: |
|
case import_typescript23.default.SyntaxKind.ImportSpecifier: |
|
case import_typescript23.default.SyntaxKind.TypePredicate: |
|
case import_typescript23.default.SyntaxKind.MethodSignature: |
|
case import_typescript23.default.SyntaxKind.PropertySignature: |
|
case import_typescript23.default.SyntaxKind.NamespaceExportDeclaration: |
|
case import_typescript23.default.SyntaxKind.NamespaceExport: |
|
case import_typescript23.default.SyntaxKind.InterfaceDeclaration: |
|
case import_typescript23.default.SyntaxKind.TypeAliasDeclaration: |
|
case import_typescript23.default.SyntaxKind.TypeParameter: |
|
case import_typescript23.default.SyntaxKind.NamedTupleMember: |
|
break; |
|
default: |
|
return 5 /* ValueOrNamespace */; |
|
} |
|
} |
|
function getEntityNameParent(name) { |
|
let parent = name.parent; |
|
while (parent.kind === import_typescript23.default.SyntaxKind.QualifiedName) { |
|
parent = parent.parent; |
|
} |
|
return parent; |
|
} |
|
|
|
// src/usage/scopes.ts |
|
var _enumScopes; |
|
var AbstractScope = class { |
|
constructor(global) { |
|
this.global = global; |
|
__privateAdd(this, _enumScopes, void 0); |
|
this.namespaceScopes = void 0; |
|
this.uses = []; |
|
this.variables = /* @__PURE__ */ new Map(); |
|
} |
|
addUse(use) { |
|
this.uses.push(use); |
|
} |
|
// eslint-disable-next-line @typescript-eslint/no-empty-function |
|
addUseToParent(_use) { |
|
} |
|
addVariable(identifier, name, selector, exported, domain) { |
|
const variables = this.getDestinationScope(selector).getVariables(); |
|
const declaration = { |
|
declaration: name, |
|
domain, |
|
exported |
|
}; |
|
const variable = variables.get(identifier); |
|
if (variable === void 0) { |
|
variables.set(identifier, { |
|
declarations: [declaration], |
|
domain, |
|
uses: [] |
|
}); |
|
} else { |
|
variable.domain |= domain; |
|
variable.declarations.push(declaration); |
|
} |
|
} |
|
applyUse(use, variables = this.variables) { |
|
const variable = variables.get(use.location.text); |
|
if (variable === void 0 || (variable.domain & use.domain) === 0) { |
|
return false; |
|
} |
|
variable.uses.push(use); |
|
return true; |
|
} |
|
applyUses() { |
|
for (const use of this.uses) { |
|
if (!this.applyUse(use)) { |
|
this.addUseToParent(use); |
|
} |
|
} |
|
this.uses = []; |
|
} |
|
createOrReuseEnumScope(name, _exported) { |
|
let scope; |
|
if (__privateGet(this, _enumScopes) === void 0) { |
|
__privateSet(this, _enumScopes, /* @__PURE__ */ new Map()); |
|
} else { |
|
scope = __privateGet(this, _enumScopes).get(name); |
|
} |
|
if (scope === void 0) { |
|
scope = new EnumScope(this); |
|
__privateGet(this, _enumScopes).set(name, scope); |
|
} |
|
return scope; |
|
} |
|
// only relevant for the root scope |
|
createOrReuseNamespaceScope(name, _exported, ambient, hasExportStatement) { |
|
let scope; |
|
if (this.namespaceScopes === void 0) { |
|
this.namespaceScopes = /* @__PURE__ */ new Map(); |
|
} else { |
|
scope = this.namespaceScopes.get(name); |
|
} |
|
if (scope === void 0) { |
|
scope = new NamespaceScope(ambient, hasExportStatement, this); |
|
this.namespaceScopes.set(name, scope); |
|
} else { |
|
scope.refresh(ambient, hasExportStatement); |
|
} |
|
return scope; |
|
} |
|
end(cb) { |
|
if (this.namespaceScopes !== void 0) { |
|
this.namespaceScopes.forEach((value) => value.finish(cb)); |
|
} |
|
this.namespaceScopes = __privateSet(this, _enumScopes, void 0); |
|
this.applyUses(); |
|
this.variables.forEach((variable) => { |
|
for (const declaration of variable.declarations) { |
|
const result = { |
|
declarations: [], |
|
domain: declaration.domain, |
|
exported: declaration.exported, |
|
inGlobalScope: this.global, |
|
uses: [] |
|
}; |
|
for (const other of variable.declarations) { |
|
if (other.domain & declaration.domain) { |
|
result.declarations.push(other.declaration); |
|
} |
|
} |
|
for (const use of variable.uses) { |
|
if (use.domain & declaration.domain) { |
|
result.uses.push(use); |
|
} |
|
} |
|
cb(result, declaration.declaration, this); |
|
} |
|
}); |
|
} |
|
getFunctionScope() { |
|
return this; |
|
} |
|
getVariables() { |
|
return this.variables; |
|
} |
|
// eslint-disable-next-line @typescript-eslint/no-empty-function |
|
markExported(_name2) { |
|
} |
|
}; |
|
_enumScopes = new WeakMap(); |
|
var NonRootScope = class extends AbstractScope { |
|
constructor(parent, boundary) { |
|
super(false); |
|
this.parent = parent; |
|
this.boundary = boundary; |
|
} |
|
addUseToParent(use) { |
|
return this.parent.addUse(use, this); |
|
} |
|
getDestinationScope(selector) { |
|
return this.boundary & selector ? this : this.parent.getDestinationScope(selector); |
|
} |
|
}; |
|
var EnumScope = class extends NonRootScope { |
|
constructor(parent) { |
|
super(parent, 1 /* Function */); |
|
} |
|
end() { |
|
this.applyUses(); |
|
} |
|
}; |
|
var _exportAll, _exports, _innerScope; |
|
var RootScope = class extends AbstractScope { |
|
constructor(exportAll, global) { |
|
super(global); |
|
__privateAdd(this, _exportAll, void 0); |
|
__privateAdd(this, _exports, void 0); |
|
__privateAdd(this, _innerScope, new NonRootScope(this, 1 /* Function */)); |
|
__privateSet(this, _exportAll, exportAll); |
|
} |
|
addUse(use, origin) { |
|
if (origin === __privateGet(this, _innerScope)) { |
|
return super.addUse(use); |
|
} |
|
return __privateGet(this, _innerScope).addUse(use); |
|
} |
|
addVariable(identifier, name, selector, exported, domain) { |
|
if (domain & 8 /* Import */) { |
|
return super.addVariable(identifier, name, selector, exported, domain); |
|
} |
|
return __privateGet(this, _innerScope).addVariable( |
|
identifier, |
|
name, |
|
selector, |
|
exported, |
|
domain |
|
); |
|
} |
|
end(cb) { |
|
__privateGet(this, _innerScope).end((value, key) => { |
|
value.exported ||= __privateGet(this, _exportAll) || __privateGet(this, _exports) !== void 0 && __privateGet(this, _exports).includes(key.text); |
|
value.inGlobalScope = this.global; |
|
return cb(value, key, this); |
|
}); |
|
return super.end((value, key, scope) => { |
|
value.exported ||= scope === this && __privateGet(this, _exports) !== void 0 && __privateGet(this, _exports).includes(key.text); |
|
return cb(value, key, scope); |
|
}); |
|
} |
|
getDestinationScope() { |
|
return this; |
|
} |
|
markExported(id) { |
|
if (__privateGet(this, _exports) === void 0) { |
|
__privateSet(this, _exports, [id.text]); |
|
} else { |
|
__privateGet(this, _exports).push(id.text); |
|
} |
|
} |
|
}; |
|
_exportAll = new WeakMap(); |
|
_exports = new WeakMap(); |
|
_innerScope = new WeakMap(); |
|
var _ambient, _exports2, _hasExport, _innerScope2; |
|
var NamespaceScope = class extends NonRootScope { |
|
constructor(ambient, hasExport, parent) { |
|
super(parent, 1 /* Function */); |
|
__privateAdd(this, _ambient, void 0); |
|
__privateAdd(this, _exports2, void 0); |
|
__privateAdd(this, _hasExport, void 0); |
|
__privateAdd(this, _innerScope2, new NonRootScope(this, 1 /* Function */)); |
|
__privateSet(this, _ambient, ambient); |
|
__privateSet(this, _hasExport, hasExport); |
|
} |
|
addUse(use, source) { |
|
if (source !== __privateGet(this, _innerScope2)) { |
|
return __privateGet(this, _innerScope2).addUse(use); |
|
} |
|
this.uses.push(use); |
|
} |
|
createOrReuseEnumScope(name, exported) { |
|
if (!exported && (!__privateGet(this, _ambient) || __privateGet(this, _hasExport))) { |
|
return __privateGet(this, _innerScope2).createOrReuseEnumScope(name, exported); |
|
} |
|
return super.createOrReuseEnumScope(name, exported); |
|
} |
|
createOrReuseNamespaceScope(name, exported, ambient, hasExportStatement) { |
|
if (!exported && (!__privateGet(this, _ambient) || __privateGet(this, _hasExport))) { |
|
return __privateGet(this, _innerScope2).createOrReuseNamespaceScope( |
|
name, |
|
exported, |
|
ambient || __privateGet(this, _ambient), |
|
hasExportStatement |
|
); |
|
} |
|
return super.createOrReuseNamespaceScope( |
|
name, |
|
exported, |
|
ambient || __privateGet(this, _ambient), |
|
hasExportStatement |
|
); |
|
} |
|
end(cb) { |
|
__privateGet(this, _innerScope2).end((variable, key, scope) => { |
|
if (scope !== __privateGet(this, _innerScope2) || !variable.exported && (!__privateGet(this, _ambient) || __privateGet(this, _exports2) !== void 0 && !__privateGet(this, _exports2).has(key.text))) { |
|
return cb(variable, key, scope); |
|
} |
|
const namespaceVar = this.variables.get(key.text); |
|
if (namespaceVar === void 0) { |
|
this.variables.set(key.text, { |
|
declarations: variable.declarations.map(mapDeclaration), |
|
domain: variable.domain, |
|
uses: [...variable.uses] |
|
}); |
|
} else { |
|
outer: |
|
for (const declaration of variable.declarations) { |
|
for (const existing of namespaceVar.declarations) { |
|
if (existing.declaration === declaration) { |
|
continue outer; |
|
} |
|
namespaceVar.declarations.push(mapDeclaration(declaration)); |
|
} |
|
} |
|
namespaceVar.domain |= variable.domain; |
|
for (const use of variable.uses) { |
|
if (namespaceVar.uses.includes(use)) { |
|
continue; |
|
} |
|
namespaceVar.uses.push(use); |
|
} |
|
} |
|
}); |
|
this.applyUses(); |
|
__privateSet(this, _innerScope2, new NonRootScope(this, 1 /* Function */)); |
|
} |
|
finish(cb) { |
|
return super.end(cb); |
|
} |
|
getDestinationScope() { |
|
return __privateGet(this, _innerScope2); |
|
} |
|
markExported(name) { |
|
if (__privateGet(this, _exports2) === void 0) { |
|
__privateSet(this, _exports2, /* @__PURE__ */ new Set()); |
|
} |
|
__privateGet(this, _exports2).add(name.text); |
|
} |
|
refresh(ambient, hasExport) { |
|
__privateSet(this, _ambient, ambient); |
|
__privateSet(this, _hasExport, hasExport); |
|
} |
|
}; |
|
_ambient = new WeakMap(); |
|
_exports2 = new WeakMap(); |
|
_hasExport = new WeakMap(); |
|
_innerScope2 = new WeakMap(); |
|
function mapDeclaration(declaration) { |
|
return { |
|
declaration, |
|
domain: getDeclarationDomain(declaration), |
|
exported: true |
|
}; |
|
} |
|
var FunctionScope = class extends NonRootScope { |
|
constructor(parent) { |
|
super(parent, 1 /* Function */); |
|
} |
|
beginBody() { |
|
this.applyUses(); |
|
} |
|
}; |
|
var _domain, _name; |
|
var AbstractNamedExpressionScope = class extends NonRootScope { |
|
constructor(name, domain, parent) { |
|
super(parent, 1 /* Function */); |
|
__privateAdd(this, _domain, void 0); |
|
__privateAdd(this, _name, void 0); |
|
__privateSet(this, _name, name); |
|
__privateSet(this, _domain, domain); |
|
} |
|
addUse(use, source) { |
|
if (source !== this.innerScope) { |
|
return this.innerScope.addUse(use); |
|
} |
|
if (use.domain & __privateGet(this, _domain) && use.location.text === __privateGet(this, _name).text) { |
|
this.uses.push(use); |
|
} else { |
|
return this.parent.addUse(use, this); |
|
} |
|
} |
|
end(cb) { |
|
this.innerScope.end(cb); |
|
return cb( |
|
{ |
|
declarations: [__privateGet(this, _name)], |
|
domain: __privateGet(this, _domain), |
|
exported: false, |
|
inGlobalScope: false, |
|
uses: this.uses |
|
}, |
|
__privateGet(this, _name), |
|
this |
|
); |
|
} |
|
getDestinationScope() { |
|
return this.innerScope; |
|
} |
|
getFunctionScope() { |
|
return this.innerScope; |
|
} |
|
}; |
|
_domain = new WeakMap(); |
|
_name = new WeakMap(); |
|
var FunctionExpressionScope = class extends AbstractNamedExpressionScope { |
|
constructor(name, parent) { |
|
super(name, 4 /* Value */, parent); |
|
this.innerScope = new FunctionScope(this); |
|
} |
|
beginBody() { |
|
return this.innerScope.beginBody(); |
|
} |
|
}; |
|
var _functionScope; |
|
var BlockScope = class extends NonRootScope { |
|
constructor(functionScope, parent) { |
|
super(parent, 2 /* Block */); |
|
__privateAdd(this, _functionScope, void 0); |
|
__privateSet(this, _functionScope, functionScope); |
|
} |
|
getFunctionScope() { |
|
return __privateGet(this, _functionScope); |
|
} |
|
}; |
|
_functionScope = new WeakMap(); |
|
var ClassExpressionScope = class extends AbstractNamedExpressionScope { |
|
constructor(name, parent) { |
|
super(name, 4 /* Value */ | 2 /* Type */, parent); |
|
this.innerScope = new NonRootScope(this, 1 /* Function */); |
|
} |
|
}; |
|
var _state; |
|
var ConditionalTypeScope = class extends NonRootScope { |
|
constructor(parent) { |
|
super(parent, 8 /* ConditionalType */); |
|
__privateAdd(this, _state, 0 /* Initial */); |
|
} |
|
addUse(use) { |
|
if (__privateGet(this, _state) === 2 /* TrueType */) { |
|
return void this.uses.push(use); |
|
} |
|
return this.parent.addUse(use, this); |
|
} |
|
updateState(newState) { |
|
__privateSet(this, _state, newState); |
|
} |
|
}; |
|
_state = new WeakMap(); |
|
|
|
// src/usage/UsageWalker.ts |
|
var _result, _scope, _handleBindingName, handleBindingName_fn, _handleConditionalType, handleConditionalType_fn, _handleDeclaration, handleDeclaration_fn, _handleFunctionLikeDeclaration, handleFunctionLikeDeclaration_fn, _handleModule, handleModule_fn, _handleVariableDeclaration, handleVariableDeclaration_fn; |
|
var UsageWalker = class { |
|
constructor() { |
|
__privateAdd(this, _handleBindingName); |
|
__privateAdd(this, _handleConditionalType); |
|
__privateAdd(this, _handleDeclaration); |
|
__privateAdd(this, _handleFunctionLikeDeclaration); |
|
__privateAdd(this, _handleModule); |
|
__privateAdd(this, _handleVariableDeclaration); |
|
__privateAdd(this, _result, /* @__PURE__ */ new Map()); |
|
__privateAdd(this, _scope, void 0); |
|
} |
|
getUsage(sourceFile) { |
|
const variableCallback = (variable, key) => { |
|
__privateGet(this, _result).set(key, variable); |
|
}; |
|
const isModule = import_typescript24.default.isExternalModule(sourceFile); |
|
__privateSet(this, _scope, new RootScope( |
|
sourceFile.isDeclarationFile && isModule && !containsExportStatement(sourceFile), |
|
!isModule |
|
)); |
|
const cb = (node) => { |
|
if (isBlockScopeBoundary(node)) { |
|
return continueWithScope( |
|
node, |
|
new BlockScope(__privateGet(this, _scope).getFunctionScope(), __privateGet(this, _scope)), |
|
handleBlockScope |
|
); |
|
} |
|
switch (node.kind) { |
|
case import_typescript24.default.SyntaxKind.ClassExpression: |
|
return continueWithScope( |
|
node, |
|
node.name !== void 0 ? new ClassExpressionScope( |
|
node.name, |
|
__privateGet(this, _scope) |
|
) : new NonRootScope(__privateGet(this, _scope), 1 /* Function */) |
|
); |
|
case import_typescript24.default.SyntaxKind.ClassDeclaration: |
|
__privateMethod(this, _handleDeclaration, handleDeclaration_fn).call(this, node, true, 4 /* Value */ | 2 /* Type */); |
|
return continueWithScope( |
|
node, |
|
new NonRootScope(__privateGet(this, _scope), 1 /* Function */) |
|
); |
|
case import_typescript24.default.SyntaxKind.InterfaceDeclaration: |
|
case import_typescript24.default.SyntaxKind.TypeAliasDeclaration: |
|
__privateMethod(this, _handleDeclaration, handleDeclaration_fn).call(this, node, true, 2 /* Type */); |
|
return continueWithScope( |
|
node, |
|
new NonRootScope(__privateGet(this, _scope), 4 /* Type */) |
|
); |
|
case import_typescript24.default.SyntaxKind.EnumDeclaration: |
|
__privateMethod(this, _handleDeclaration, handleDeclaration_fn).call(this, node, true, 7 /* Any */); |
|
return continueWithScope( |
|
node, |
|
__privateGet(this, _scope).createOrReuseEnumScope( |
|
node.name.text, |
|
includesModifier( |
|
node.modifiers, |
|
import_typescript24.default.SyntaxKind.ExportKeyword |
|
) |
|
) |
|
); |
|
case import_typescript24.default.SyntaxKind.ModuleDeclaration: |
|
return __privateMethod(this, _handleModule, handleModule_fn).call(this, node, continueWithScope); |
|
case import_typescript24.default.SyntaxKind.MappedType: |
|
return continueWithScope( |
|
node, |
|
new NonRootScope(__privateGet(this, _scope), 4 /* Type */) |
|
); |
|
case import_typescript24.default.SyntaxKind.FunctionExpression: |
|
case import_typescript24.default.SyntaxKind.ArrowFunction: |
|
case import_typescript24.default.SyntaxKind.Constructor: |
|
case import_typescript24.default.SyntaxKind.MethodDeclaration: |
|
case import_typescript24.default.SyntaxKind.FunctionDeclaration: |
|
case import_typescript24.default.SyntaxKind.GetAccessor: |
|
case import_typescript24.default.SyntaxKind.SetAccessor: |
|
case import_typescript24.default.SyntaxKind.MethodSignature: |
|
case import_typescript24.default.SyntaxKind.CallSignature: |
|
case import_typescript24.default.SyntaxKind.ConstructSignature: |
|
case import_typescript24.default.SyntaxKind.ConstructorType: |
|
case import_typescript24.default.SyntaxKind.FunctionType: |
|
return __privateMethod(this, _handleFunctionLikeDeclaration, handleFunctionLikeDeclaration_fn).call(this, node, cb, variableCallback); |
|
case import_typescript24.default.SyntaxKind.ConditionalType: |
|
return __privateMethod(this, _handleConditionalType, handleConditionalType_fn).call(this, node, cb, variableCallback); |
|
case import_typescript24.default.SyntaxKind.VariableDeclarationList: |
|
__privateMethod(this, _handleVariableDeclaration, handleVariableDeclaration_fn).call(this, node); |
|
break; |
|
case import_typescript24.default.SyntaxKind.Parameter: |
|
if (node.parent.kind !== import_typescript24.default.SyntaxKind.IndexSignature && (node.name.kind !== import_typescript24.default.SyntaxKind.Identifier || identifierToKeywordKind( |
|
node.name |
|
) !== import_typescript24.default.SyntaxKind.ThisKeyword)) { |
|
__privateMethod(this, _handleBindingName, handleBindingName_fn).call(this, node.name, false, false); |
|
} |
|
break; |
|
case import_typescript24.default.SyntaxKind.EnumMember: |
|
__privateGet(this, _scope).addVariable( |
|
getPropertyName(node.name), |
|
node.name, |
|
1 /* Function */, |
|
true, |
|
4 /* Value */ |
|
); |
|
break; |
|
case import_typescript24.default.SyntaxKind.ImportClause: |
|
case import_typescript24.default.SyntaxKind.ImportSpecifier: |
|
case import_typescript24.default.SyntaxKind.NamespaceImport: |
|
case import_typescript24.default.SyntaxKind.ImportEqualsDeclaration: |
|
__privateMethod(this, _handleDeclaration, handleDeclaration_fn).call(this, node, false, 7 /* Any */ | 8 /* Import */); |
|
break; |
|
case import_typescript24.default.SyntaxKind.TypeParameter: |
|
__privateGet(this, _scope).addVariable( |
|
node.name.text, |
|
node.name, |
|
node.parent.kind === import_typescript24.default.SyntaxKind.InferType ? 8 /* InferType */ : 7 /* Type */, |
|
false, |
|
2 /* Type */ |
|
); |
|
break; |
|
case import_typescript24.default.SyntaxKind.ExportSpecifier: |
|
if (node.propertyName !== void 0) { |
|
return __privateGet(this, _scope).markExported( |
|
node.propertyName, |
|
node.name |
|
); |
|
} |
|
return __privateGet(this, _scope).markExported(node.name); |
|
case import_typescript24.default.SyntaxKind.ExportAssignment: |
|
if (node.expression.kind === import_typescript24.default.SyntaxKind.Identifier) { |
|
return __privateGet(this, _scope).markExported( |
|
node.expression |
|
); |
|
} |
|
break; |
|
case import_typescript24.default.SyntaxKind.Identifier: { |
|
const domain = getUsageDomain(node); |
|
if (domain !== void 0) { |
|
__privateGet(this, _scope).addUse({ domain, location: node }); |
|
} |
|
return; |
|
} |
|
} |
|
return import_typescript24.default.forEachChild(node, cb); |
|
}; |
|
const continueWithScope = (node, scope, next = forEachChild) => { |
|
const savedScope = __privateGet(this, _scope); |
|
__privateSet(this, _scope, scope); |
|
next(node); |
|
__privateGet(this, _scope).end(variableCallback); |
|
__privateSet(this, _scope, savedScope); |
|
}; |
|
const handleBlockScope = (node) => { |
|
if (node.kind === import_typescript24.default.SyntaxKind.CatchClause && node.variableDeclaration !== void 0) { |
|
__privateMethod(this, _handleBindingName, handleBindingName_fn).call(this, node.variableDeclaration.name, true, false); |
|
} |
|
return import_typescript24.default.forEachChild(node, cb); |
|
}; |
|
import_typescript24.default.forEachChild(sourceFile, cb); |
|
__privateGet(this, _scope).end(variableCallback); |
|
return __privateGet(this, _result); |
|
function forEachChild(node) { |
|
return import_typescript24.default.forEachChild(node, cb); |
|
} |
|
} |
|
}; |
|
_result = new WeakMap(); |
|
_scope = new WeakMap(); |
|
_handleBindingName = new WeakSet(); |
|
handleBindingName_fn = function(name, blockScoped, exported) { |
|
if (name.kind === import_typescript24.default.SyntaxKind.Identifier) { |
|
return __privateGet(this, _scope).addVariable( |
|
name.text, |
|
name, |
|
blockScoped ? 3 /* Block */ : 1 /* Function */, |
|
exported, |
|
4 /* Value */ |
|
); |
|
} |
|
forEachDestructuringIdentifier(name, (declaration) => { |
|
__privateGet(this, _scope).addVariable( |
|
declaration.name.text, |
|
declaration.name, |
|
blockScoped ? 3 /* Block */ : 1 /* Function */, |
|
exported, |
|
4 /* Value */ |
|
); |
|
}); |
|
}; |
|
_handleConditionalType = new WeakSet(); |
|
handleConditionalType_fn = function(node, cb, varCb) { |
|
const savedScope = __privateGet(this, _scope); |
|
const scope = __privateSet(this, _scope, new ConditionalTypeScope(savedScope)); |
|
cb(node.checkType); |
|
scope.updateState(1 /* Extends */); |
|
cb(node.extendsType); |
|
scope.updateState(2 /* TrueType */); |
|
cb(node.trueType); |
|
scope.updateState(3 /* FalseType */); |
|
cb(node.falseType); |
|
scope.end(varCb); |
|
__privateSet(this, _scope, savedScope); |
|
}; |
|
_handleDeclaration = new WeakSet(); |
|
handleDeclaration_fn = function(node, blockScoped, domain) { |
|
if (node.name !== void 0) { |
|
__privateGet(this, _scope).addVariable( |
|
node.name.text, |
|
node.name, |
|
blockScoped ? 3 /* Block */ : 1 /* Function */, |
|
includesModifier( |
|
node.modifiers, |
|
import_typescript24.default.SyntaxKind.ExportKeyword |
|
), |
|
domain |
|
); |
|
} |
|
}; |
|
_handleFunctionLikeDeclaration = new WeakSet(); |
|
handleFunctionLikeDeclaration_fn = function(node, cb, varCb) { |
|
if (canHaveDecorators(node)) { |
|
getDecorators(node)?.forEach(cb); |
|
} |
|
const savedScope = __privateGet(this, _scope); |
|
if (node.kind === import_typescript24.default.SyntaxKind.FunctionDeclaration) { |
|
__privateMethod(this, _handleDeclaration, handleDeclaration_fn).call(this, node, false, 4 /* Value */); |
|
} |
|
const scope = __privateSet(this, _scope, node.kind === import_typescript24.default.SyntaxKind.FunctionExpression && node.name !== void 0 ? new FunctionExpressionScope(node.name, savedScope) : new FunctionScope(savedScope)); |
|
if (node.name !== void 0) { |
|
cb(node.name); |
|
} |
|
if (node.typeParameters !== void 0) { |
|
node.typeParameters.forEach(cb); |
|
} |
|
node.parameters.forEach(cb); |
|
if (node.type !== void 0) { |
|
cb(node.type); |
|
} |
|
if (node.body !== void 0) { |
|
scope.beginBody(); |
|
cb(node.body); |
|
} |
|
scope.end(varCb); |
|
__privateSet(this, _scope, savedScope); |
|
}; |
|
_handleModule = new WeakSet(); |
|
handleModule_fn = function(node, next) { |
|
if (node.flags & import_typescript24.default.NodeFlags.GlobalAugmentation) { |
|
return next( |
|
node, |
|
__privateGet(this, _scope).createOrReuseNamespaceScope("-global", false, true, false) |
|
); |
|
} |
|
if (node.name.kind === import_typescript24.default.SyntaxKind.Identifier) { |
|
const exported = isNamespaceExported(node); |
|
__privateGet(this, _scope).addVariable( |
|
node.name.text, |
|
node.name, |
|
1 /* Function */, |
|
exported, |
|
1 /* Namespace */ | 4 /* Value */ |
|
); |
|
const ambient = includesModifier( |
|
node.modifiers, |
|
import_typescript24.default.SyntaxKind.DeclareKeyword |
|
); |
|
return next( |
|
node, |
|
__privateGet(this, _scope).createOrReuseNamespaceScope( |
|
node.name.text, |
|
exported, |
|
ambient, |
|
ambient && namespaceHasExportStatement(node) |
|
) |
|
); |
|
} |
|
return next( |
|
node, |
|
__privateGet(this, _scope).createOrReuseNamespaceScope( |
|
`"${node.name.text}"`, |
|
false, |
|
true, |
|
namespaceHasExportStatement(node) |
|
) |
|
); |
|
}; |
|
_handleVariableDeclaration = new WeakSet(); |
|
handleVariableDeclaration_fn = function(declarationList) { |
|
const blockScoped = isBlockScopedVariableDeclarationList(declarationList); |
|
const exported = declarationList.parent.kind === import_typescript24.default.SyntaxKind.VariableStatement && includesModifier( |
|
declarationList.parent.modifiers, |
|
import_typescript24.default.SyntaxKind.ExportKeyword |
|
); |
|
for (const declaration of declarationList.declarations) { |
|
__privateMethod(this, _handleBindingName, handleBindingName_fn).call(this, declaration.name, blockScoped, exported); |
|
} |
|
}; |
|
function isNamespaceExported(node) { |
|
return node.parent.kind === import_typescript24.default.SyntaxKind.ModuleDeclaration || includesModifier(node.modifiers, import_typescript24.default.SyntaxKind.ExportKeyword); |
|
} |
|
function namespaceHasExportStatement(ns) { |
|
if (ns.body === void 0 || ns.body.kind !== import_typescript24.default.SyntaxKind.ModuleBlock) { |
|
return false; |
|
} |
|
return containsExportStatement(ns.body); |
|
} |
|
function containsExportStatement(block) { |
|
for (const statement of block.statements) { |
|
if (statement.kind === import_typescript24.default.SyntaxKind.ExportDeclaration || statement.kind === import_typescript24.default.SyntaxKind.ExportAssignment) { |
|
return true; |
|
} |
|
} |
|
return false; |
|
} |
|
function isBlockScopedVariableDeclarationList(declarationList) { |
|
return (declarationList.flags & import_typescript24.default.NodeFlags.BlockScoped) !== 0; |
|
} |
|
function forEachDestructuringIdentifier(pattern, fn) { |
|
for (const element of pattern.elements) { |
|
if (element.kind !== import_typescript24.default.SyntaxKind.BindingElement) { |
|
continue; |
|
} |
|
let result; |
|
if (element.name.kind === import_typescript24.default.SyntaxKind.Identifier) { |
|
result = fn(element); |
|
} else { |
|
result = forEachDestructuringIdentifier(element.name, fn); |
|
} |
|
if (result) { |
|
return result; |
|
} |
|
} |
|
} |
|
|
|
// src/usage/collectVariableUsage.ts |
|
function collectVariableUsage(sourceFile) { |
|
return new UsageWalker().getUsage(sourceFile); |
|
} |
|
// Annotate the CommonJS export names for ESM import in node: |
|
0 && (module.exports = { |
|
AccessKind, |
|
DeclarationDomain, |
|
UsageDomain, |
|
collectVariableUsage, |
|
forEachComment, |
|
forEachToken, |
|
getAccessKind, |
|
getCallSignaturesOfType, |
|
getPropertyOfType, |
|
getWellKnownSymbolPropertyOfType, |
|
hasDecorators, |
|
hasExpressionInitializer, |
|
hasInitializer, |
|
hasJSDoc, |
|
hasModifiers, |
|
hasType, |
|
hasTypeArguments, |
|
includesModifier, |
|
intersectionTypeParts, |
|
isAbstractKeyword, |
|
isAccessExpression, |
|
isAccessibilityModifier, |
|
isAccessorDeclaration, |
|
isAccessorKeyword, |
|
isAnyKeyword, |
|
isArrayBindingElement, |
|
isArrayBindingOrAssignmentPattern, |
|
isAssertKeyword, |
|
isAssertsKeyword, |
|
isAssignmentKind, |
|
isAssignmentPattern, |
|
isAsyncKeyword, |
|
isAwaitKeyword, |
|
isBigIntKeyword, |
|
isBigIntLiteralType, |
|
isBindingOrAssignmentElementRestIndicator, |
|
isBindingOrAssignmentElementTarget, |
|
isBindingOrAssignmentPattern, |
|
isBindingPattern, |
|
isBlockLike, |
|
isBooleanKeyword, |
|
isBooleanLiteral, |
|
isBooleanLiteralType, |
|
isClassLikeDeclaration, |
|
isClassMemberModifier, |
|
isColonToken, |
|
isCompilerOptionEnabled, |
|
isConditionalType, |
|
isConstAssertionExpression, |
|
isConstKeyword, |
|
isDeclarationName, |
|
isDeclarationWithTypeParameterChildren, |
|
isDeclarationWithTypeParameters, |
|
isDeclareKeyword, |
|
isDefaultKeyword, |
|
isDestructuringPattern, |
|
isDotToken, |
|
isEndOfFileToken, |
|
isEntityNameExpression, |
|
isEntityNameOrEntityNameExpression, |
|
isEnumType, |
|
isEqualsGreaterThanToken, |
|
isEqualsToken, |
|
isEvolvingArrayType, |
|
isExclamationToken, |
|
isExportKeyword, |
|
isFalseKeyword, |
|
isFalseLiteral, |
|
isFalseLiteralType, |
|
isFalsyType, |
|
isForInOrOfStatement, |
|
isFreshableIntrinsicType, |
|
isFreshableType, |
|
isFunctionLikeDeclaration, |
|
isFunctionScopeBoundary, |
|
isImportExpression, |
|
isImportKeyword, |
|
isInKeyword, |
|
isIndexType, |
|
isIndexedAccessType, |
|
isInputFiles, |
|
isInstantiableType, |
|
isIntersectionType, |
|
isIntrinsicAnyType, |
|
isIntrinsicBigIntType, |
|
isIntrinsicBooleanType, |
|
isIntrinsicESSymbolType, |
|
isIntrinsicErrorType, |
|
isIntrinsicNeverType, |
|
isIntrinsicNonPrimitiveType, |
|
isIntrinsicNullType, |
|
isIntrinsicNumberType, |
|
isIntrinsicStringType, |
|
isIntrinsicType, |
|
isIntrinsicUndefinedType, |
|
isIntrinsicUnknownType, |
|
isIntrinsicVoidType, |
|
isIterationStatement, |
|
isJSDocComment, |
|
isJSDocNamespaceBody, |
|
isJSDocNamespaceDeclaration, |
|
isJSDocText, |
|
isJSDocTypeReferencingNode, |
|
isJsonMinusNumericLiteral, |
|
isJsonObjectExpression, |
|
isJsxAttributeLike, |
|
isJsxAttributeValue, |
|
isJsxChild, |
|
isJsxTagNameExpression, |
|
isJsxTagNamePropertyAccess, |
|
isLiteralToken, |
|
isLiteralType, |
|
isModifierFlagSet, |
|
isModuleBody, |
|
isModuleName, |
|
isModuleReference, |
|
isNamedDeclarationWithName, |
|
isNamedImportBindings, |
|
isNamedImportsOrExports, |
|
isNamespaceBody, |
|
isNamespaceDeclaration, |
|
isNeverKeyword, |
|
isNodeFlagSet, |
|
isNullKeyword, |
|
isNullLiteral, |
|
isNumberKeyword, |
|
isNumberLiteralType, |
|
isNumericOrStringLikeLiteral, |
|
isNumericPropertyName, |
|
isObjectBindingOrAssignmentElement, |
|
isObjectBindingOrAssignmentPattern, |
|
isObjectFlagSet, |
|
isObjectKeyword, |
|
isObjectType, |
|
isObjectTypeDeclaration, |
|
isOutKeyword, |
|
isOverrideKeyword, |
|
isParameterPropertyModifier, |
|
isPrivateKeyword, |
|
isPropertyAccessEntityNameExpression, |
|
isPropertyNameLiteral, |
|
isPropertyReadonlyInType, |
|
isProtectedKeyword, |
|
isPseudoLiteralToken, |
|
isPublicKeyword, |
|
isQuestionDotToken, |
|
isQuestionToken, |
|
isReadonlyKeyword, |
|
isSignatureDeclaration, |
|
isStaticKeyword, |
|
isStrictCompilerOptionEnabled, |
|
isStringKeyword, |
|
isStringLiteralType, |
|
isStringMappingType, |
|
isSubstitutionType, |
|
isSuperElementAccessExpression, |
|
isSuperExpression, |
|
isSuperKeyword, |
|
isSuperProperty, |
|
isSuperPropertyAccessExpression, |
|
isSymbolFlagSet, |
|
isSymbolKeyword, |
|
isSyntaxList, |
|
isTemplateLiteralType, |
|
isThenableType, |
|
isThisExpression, |
|
isThisKeyword, |
|
isTrueKeyword, |
|
isTrueLiteral, |
|
isTrueLiteralType, |
|
isTupleType, |
|
isTupleTypeReference, |
|
isTypeFlagSet, |
|
isTypeOnlyCompatibleAliasDeclaration, |
|
isTypeParameter, |
|
isTypeReference, |
|
isTypeReferenceType, |
|
isTypeVariable, |
|
isUndefinedKeyword, |
|
isUnionOrIntersectionType, |
|
isUnionOrIntersectionTypeNode, |
|
isUnionType, |
|
isUniqueESSymbolType, |
|
isUnknownKeyword, |
|
isUnknownLiteralType, |
|
isUnparsedPrologue, |
|
isUnparsedSourceText, |
|
isUnparsedSyntheticReference, |
|
isValidPropertyAccess, |
|
isVariableLikeDeclaration, |
|
isVoidKeyword, |
|
symbolHasReadonlyDeclaration, |
|
typeParts, |
|
unionTypeParts |
|
}); |
|
//# sourceMappingURL=index.cjs.map
|