12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432 |
- "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, {
- DeclarationDomain: () => DeclarationDomain,
- UsageDomain: () => UsageDomain,
- collectVariableUsage: () => collectVariableUsage,
- forEachComment: () => forEachComment,
- forEachToken: () => forEachToken,
- 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/typeGuards/compound.ts
- var import_typescript8 = __toESM(require("typescript"), 1);
- // src/nodes/typeGuards/single.ts
- var import_typescript5 = __toESM(require("typescript"), 1);
- function isAbstractKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.AbstractKeyword;
- }
- function isAccessorKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.AccessorKeyword;
- }
- function isAnyKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.AnyKeyword;
- }
- function isAssertKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.AssertKeyword;
- }
- function isAssertsKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.AssertsKeyword;
- }
- function isAsyncKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.AsyncKeyword;
- }
- function isAwaitKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.AwaitKeyword;
- }
- function isBigIntKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.BigIntKeyword;
- }
- function isBooleanKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.BooleanKeyword;
- }
- function isColonToken(node) {
- return node.kind === import_typescript5.default.SyntaxKind.ColonToken;
- }
- function isConstKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.ConstKeyword;
- }
- function isDeclareKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.DeclareKeyword;
- }
- function isDefaultKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.DefaultKeyword;
- }
- function isDotToken(node) {
- return node.kind === import_typescript5.default.SyntaxKind.DotToken;
- }
- function isEndOfFileToken(node) {
- return node.kind === import_typescript5.default.SyntaxKind.EndOfFileToken;
- }
- function isEqualsGreaterThanToken(node) {
- return node.kind === import_typescript5.default.SyntaxKind.EqualsGreaterThanToken;
- }
- function isEqualsToken(node) {
- return node.kind === import_typescript5.default.SyntaxKind.EqualsToken;
- }
- function isExclamationToken(node) {
- return node.kind === import_typescript5.default.SyntaxKind.ExclamationToken;
- }
- function isExportKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.ExportKeyword;
- }
- function isFalseKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.FalseKeyword;
- }
- function isFalseLiteral(node) {
- return node.kind === import_typescript5.default.SyntaxKind.FalseKeyword;
- }
- function isImportExpression(node) {
- return node.kind === import_typescript5.default.SyntaxKind.ImportKeyword;
- }
- function isImportKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.ImportKeyword;
- }
- function isInKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.InKeyword;
- }
- function isInputFiles(node) {
- return node.kind === import_typescript5.default.SyntaxKind.InputFiles;
- }
- function isJSDocText(node) {
- return node.kind === import_typescript5.default.SyntaxKind.JSDocText;
- }
- function isJsonMinusNumericLiteral(node) {
- return node.kind === import_typescript5.default.SyntaxKind.PrefixUnaryExpression;
- }
- function isNeverKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.NeverKeyword;
- }
- function isNullKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.NullKeyword;
- }
- function isNullLiteral(node) {
- return node.kind === import_typescript5.default.SyntaxKind.NullKeyword;
- }
- function isNumberKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.NumberKeyword;
- }
- function isObjectKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.ObjectKeyword;
- }
- function isOutKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.OutKeyword;
- }
- function isOverrideKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.OverrideKeyword;
- }
- function isPrivateKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.PrivateKeyword;
- }
- function isProtectedKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.ProtectedKeyword;
- }
- function isPublicKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.PublicKeyword;
- }
- function isQuestionDotToken(node) {
- return node.kind === import_typescript5.default.SyntaxKind.QuestionDotToken;
- }
- function isQuestionToken(node) {
- return node.kind === import_typescript5.default.SyntaxKind.QuestionToken;
- }
- function isReadonlyKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.ReadonlyKeyword;
- }
- function isStaticKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.StaticKeyword;
- }
- function isStringKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.StringKeyword;
- }
- function isSuperExpression(node) {
- return node.kind === import_typescript5.default.SyntaxKind.SuperKeyword;
- }
- function isSuperKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.SuperKeyword;
- }
- function isSymbolKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.SymbolKeyword;
- }
- function isSyntaxList(node) {
- return node.kind === import_typescript5.default.SyntaxKind.SyntaxList;
- }
- function isThisExpression(node) {
- return node.kind === import_typescript5.default.SyntaxKind.ThisKeyword;
- }
- function isThisKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.ThisKeyword;
- }
- function isTrueKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.TrueKeyword;
- }
- function isTrueLiteral(node) {
- return node.kind === import_typescript5.default.SyntaxKind.TrueKeyword;
- }
- function isUndefinedKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.UndefinedKeyword;
- }
- function isUnknownKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.UnknownKeyword;
- }
- function isUnparsedPrologue(node) {
- return node.kind === import_typescript5.default.SyntaxKind.UnparsedPrologue;
- }
- function isUnparsedSyntheticReference(node) {
- return node.kind === import_typescript5.default.SyntaxKind.UnparsedSyntheticReference;
- }
- function isVoidKeyword(node) {
- return node.kind === import_typescript5.default.SyntaxKind.VoidKeyword;
- }
- // src/nodes/typeGuards/union.ts
- var import_typescript7 = __toESM(require("typescript"), 1);
- // src/utils.ts
- var import_typescript6 = __toESM(require("typescript"), 1);
- var [tsMajor, tsMinor] = import_typescript6.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_typescript7.default.isPropertyAccessExpression(node) || import_typescript7.default.isElementAccessExpression(node);
- }
- function isAccessibilityModifier(node) {
- return isPublicKeyword(node) || isPrivateKeyword(node) || isProtectedKeyword(node);
- }
- function isAccessorDeclaration(node) {
- return import_typescript7.default.isGetAccessorDeclaration(node) || import_typescript7.default.isSetAccessorDeclaration(node);
- }
- function isArrayBindingElement(node) {
- return import_typescript7.default.isBindingElement(node) || import_typescript7.default.isOmittedExpression(node);
- }
- function isArrayBindingOrAssignmentPattern(node) {
- return import_typescript7.default.isArrayBindingPattern(node) || import_typescript7.default.isArrayLiteralExpression(node);
- }
- function isAssignmentPattern(node) {
- return import_typescript7.default.isObjectLiteralExpression(node) || import_typescript7.default.isArrayLiteralExpression(node);
- }
- function isBindingOrAssignmentElementRestIndicator(node) {
- if (import_typescript7.default.isSpreadElement(node) || import_typescript7.default.isSpreadAssignment(node)) {
- return true;
- }
- if (isTsVersionAtLeast(4, 4)) {
- return import_typescript7.default.isDotDotDotToken(node);
- }
- return false;
- }
- function isBindingOrAssignmentElementTarget(node) {
- return isBindingOrAssignmentPattern(node) || import_typescript7.default.isIdentifier(node) || import_typescript7.default.isPropertyAccessExpression(node) || import_typescript7.default.isElementAccessExpression(node) || import_typescript7.default.isOmittedExpression(node);
- }
- function isBindingOrAssignmentPattern(node) {
- return isObjectBindingOrAssignmentPattern(node) || isArrayBindingOrAssignmentPattern(node);
- }
- function isBindingPattern(node) {
- return import_typescript7.default.isObjectBindingPattern(node) || import_typescript7.default.isArrayBindingPattern(node);
- }
- function isBlockLike(node) {
- return import_typescript7.default.isSourceFile(node) || import_typescript7.default.isBlock(node) || import_typescript7.default.isModuleBlock(node) || import_typescript7.default.isCaseOrDefaultClause(node);
- }
- function isBooleanLiteral(node) {
- return isTrueLiteral(node) || isFalseLiteral(node);
- }
- function isClassLikeDeclaration(node) {
- return import_typescript7.default.isClassDeclaration(node) || import_typescript7.default.isClassExpression(node);
- }
- function isClassMemberModifier(node) {
- return isAccessibilityModifier(node) || isReadonlyKeyword(node) || isStaticKeyword(node) || isAccessorKeyword(node);
- }
- function isDeclarationName(node) {
- return import_typescript7.default.isIdentifier(node) || import_typescript7.default.isPrivateIdentifier(node) || import_typescript7.default.isStringLiteralLike(node) || import_typescript7.default.isNumericLiteral(node) || import_typescript7.default.isComputedPropertyName(node) || import_typescript7.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_typescript7.default.isInterfaceDeclaration(node) || import_typescript7.default.isTypeAliasDeclaration(node) || import_typescript7.default.isJSDocTemplateTag(node);
- }
- function isDeclarationWithTypeParameters(node) {
- return isDeclarationWithTypeParameterChildren(node) || import_typescript7.default.isJSDocTypedefTag(node) || import_typescript7.default.isJSDocCallbackTag(node) || import_typescript7.default.isJSDocSignature(node);
- }
- function isDestructuringPattern(node) {
- return isBindingPattern(node) || import_typescript7.default.isObjectLiteralExpression(node) || import_typescript7.default.isArrayLiteralExpression(node);
- }
- function isEntityNameExpression(node) {
- return import_typescript7.default.isIdentifier(node) || isPropertyAccessEntityNameExpression(node);
- }
- function isEntityNameOrEntityNameExpression(node) {
- return import_typescript7.default.isEntityName(node) || isEntityNameExpression(node);
- }
- function isForInOrOfStatement(node) {
- return import_typescript7.default.isForInStatement(node) || import_typescript7.default.isForOfStatement(node);
- }
- function isFunctionLikeDeclaration(node) {
- return import_typescript7.default.isFunctionDeclaration(node) || import_typescript7.default.isMethodDeclaration(node) || import_typescript7.default.isGetAccessorDeclaration(node) || import_typescript7.default.isSetAccessorDeclaration(node) || import_typescript7.default.isConstructorDeclaration(node) || import_typescript7.default.isFunctionExpression(node) || import_typescript7.default.isArrowFunction(node);
- }
- function hasDecorators(node) {
- return import_typescript7.default.isParameter(node) || import_typescript7.default.isPropertyDeclaration(node) || import_typescript7.default.isMethodDeclaration(node) || import_typescript7.default.isGetAccessorDeclaration(node) || import_typescript7.default.isSetAccessorDeclaration(node) || import_typescript7.default.isClassExpression(node) || import_typescript7.default.isClassDeclaration(node);
- }
- function hasExpressionInitializer(node) {
- return import_typescript7.default.isVariableDeclaration(node) || import_typescript7.default.isParameter(node) || import_typescript7.default.isBindingElement(node) || import_typescript7.default.isPropertyDeclaration(node) || import_typescript7.default.isPropertyAssignment(node) || import_typescript7.default.isEnumMember(node);
- }
- function hasInitializer(node) {
- return hasExpressionInitializer(node) || import_typescript7.default.isForStatement(node) || import_typescript7.default.isForInStatement(node) || import_typescript7.default.isForOfStatement(node) || import_typescript7.default.isJsxAttribute(node);
- }
- function hasJSDoc(node) {
- if (
- // eslint-disable-next-line deprecation/deprecation -- Keep compatibility with ts <5
- isAccessorDeclaration(node) || import_typescript7.default.isArrowFunction(node) || import_typescript7.default.isBlock(node) || import_typescript7.default.isBreakStatement(node) || import_typescript7.default.isCallSignatureDeclaration(node) || import_typescript7.default.isCaseClause(node) || // eslint-disable-next-line deprecation/deprecation -- Keep compatibility with ts <5
- isClassLikeDeclaration(node) || import_typescript7.default.isConstructorDeclaration(node) || import_typescript7.default.isConstructorTypeNode(node) || import_typescript7.default.isConstructSignatureDeclaration(node) || import_typescript7.default.isContinueStatement(node) || import_typescript7.default.isDebuggerStatement(node) || import_typescript7.default.isDoStatement(node) || import_typescript7.default.isEmptyStatement(node) || isEndOfFileToken(node) || import_typescript7.default.isEnumDeclaration(node) || import_typescript7.default.isEnumMember(node) || import_typescript7.default.isExportAssignment(node) || import_typescript7.default.isExportDeclaration(node) || import_typescript7.default.isExportSpecifier(node) || import_typescript7.default.isExpressionStatement(node) || import_typescript7.default.isForInStatement(node) || import_typescript7.default.isForOfStatement(node) || import_typescript7.default.isForStatement(node) || import_typescript7.default.isFunctionDeclaration(node) || import_typescript7.default.isFunctionExpression(node) || import_typescript7.default.isFunctionTypeNode(node) || import_typescript7.default.isIfStatement(node) || import_typescript7.default.isImportDeclaration(node) || import_typescript7.default.isImportEqualsDeclaration(node) || import_typescript7.default.isIndexSignatureDeclaration(node) || import_typescript7.default.isInterfaceDeclaration(node) || import_typescript7.default.isJSDocFunctionType(node) || import_typescript7.default.isLabeledStatement(node) || import_typescript7.default.isMethodDeclaration(node) || import_typescript7.default.isMethodSignature(node) || import_typescript7.default.isModuleDeclaration(node) || import_typescript7.default.isNamedTupleMember(node) || import_typescript7.default.isNamespaceExportDeclaration(node) || import_typescript7.default.isParameter(node) || import_typescript7.default.isParenthesizedExpression(node) || import_typescript7.default.isPropertyAssignment(node) || import_typescript7.default.isPropertyDeclaration(node) || import_typescript7.default.isPropertySignature(node) || import_typescript7.default.isReturnStatement(node) || import_typescript7.default.isShorthandPropertyAssignment(node) || import_typescript7.default.isSpreadAssignment(node) || import_typescript7.default.isSwitchStatement(node) || import_typescript7.default.isThrowStatement(node) || import_typescript7.default.isTryStatement(node) || import_typescript7.default.isTypeAliasDeclaration(node) || import_typescript7.default.isVariableDeclaration(node) || import_typescript7.default.isVariableStatement(node) || import_typescript7.default.isWhileStatement(node) || import_typescript7.default.isWithStatement(node)
- ) {
- return true;
- }
- if (isTsVersionAtLeast(4, 4) && import_typescript7.default.isClassStaticBlockDeclaration(node)) {
- return true;
- }
- if (isTsVersionAtLeast(5, 0) && (import_typescript7.default.isBinaryExpression(node) || import_typescript7.default.isElementAccessExpression(node) || import_typescript7.default.isIdentifier(node) || import_typescript7.default.isJSDocSignature(node) || import_typescript7.default.isObjectLiteralExpression(node) || import_typescript7.default.isPropertyAccessExpression(node) || import_typescript7.default.isTypeParameterDeclaration(node))) {
- return true;
- }
- return false;
- }
- function hasModifiers(node) {
- return import_typescript7.default.isTypeParameterDeclaration(node) || import_typescript7.default.isParameter(node) || import_typescript7.default.isConstructorTypeNode(node) || import_typescript7.default.isPropertySignature(node) || import_typescript7.default.isPropertyDeclaration(node) || import_typescript7.default.isMethodSignature(node) || import_typescript7.default.isMethodDeclaration(node) || import_typescript7.default.isConstructorDeclaration(node) || import_typescript7.default.isGetAccessorDeclaration(node) || import_typescript7.default.isSetAccessorDeclaration(node) || import_typescript7.default.isIndexSignatureDeclaration(node) || import_typescript7.default.isFunctionExpression(node) || import_typescript7.default.isArrowFunction(node) || import_typescript7.default.isClassExpression(node) || import_typescript7.default.isVariableStatement(node) || import_typescript7.default.isFunctionDeclaration(node) || import_typescript7.default.isClassDeclaration(node) || import_typescript7.default.isInterfaceDeclaration(node) || import_typescript7.default.isTypeAliasDeclaration(node) || import_typescript7.default.isEnumDeclaration(node) || import_typescript7.default.isModuleDeclaration(node) || import_typescript7.default.isImportEqualsDeclaration(node) || import_typescript7.default.isImportDeclaration(node) || import_typescript7.default.isExportAssignment(node) || import_typescript7.default.isExportDeclaration(node);
- }
- function hasType(node) {
- return isSignatureDeclaration(node) || import_typescript7.default.isVariableDeclaration(node) || import_typescript7.default.isParameter(node) || import_typescript7.default.isPropertySignature(node) || import_typescript7.default.isPropertyDeclaration(node) || import_typescript7.default.isTypePredicateNode(node) || import_typescript7.default.isParenthesizedTypeNode(node) || import_typescript7.default.isTypeOperatorNode(node) || import_typescript7.default.isMappedTypeNode(node) || import_typescript7.default.isAssertionExpression(node) || import_typescript7.default.isTypeAliasDeclaration(node) || import_typescript7.default.isJSDocTypeExpression(node) || import_typescript7.default.isJSDocNonNullableType(node) || import_typescript7.default.isJSDocNullableType(node) || import_typescript7.default.isJSDocOptionalType(node) || import_typescript7.default.isJSDocVariadicType(node);
- }
- function hasTypeArguments(node) {
- return import_typescript7.default.isCallExpression(node) || import_typescript7.default.isNewExpression(node) || import_typescript7.default.isTaggedTemplateExpression(node) || import_typescript7.default.isJsxOpeningElement(node) || import_typescript7.default.isJsxSelfClosingElement(node);
- }
- function isJSDocComment(node) {
- if (isJSDocText(node)) {
- return true;
- }
- if (isTsVersionAtLeast(4, 4)) {
- return import_typescript7.default.isJSDocLink(node) || import_typescript7.default.isJSDocLinkCode(node) || import_typescript7.default.isJSDocLinkPlain(node);
- }
- return false;
- }
- function isJSDocNamespaceBody(node) {
- return import_typescript7.default.isIdentifier(node) || isJSDocNamespaceDeclaration(node);
- }
- function isJSDocTypeReferencingNode(node) {
- return import_typescript7.default.isJSDocVariadicType(node) || import_typescript7.default.isJSDocOptionalType(node) || import_typescript7.default.isJSDocNullableType(node) || import_typescript7.default.isJSDocNonNullableType(node);
- }
- function isJsonObjectExpression(node) {
- return import_typescript7.default.isObjectLiteralExpression(node) || import_typescript7.default.isArrayLiteralExpression(node) || isJsonMinusNumericLiteral(node) || import_typescript7.default.isNumericLiteral(node) || import_typescript7.default.isStringLiteral(node) || isBooleanLiteral(node) || isNullLiteral(node);
- }
- function isJsxAttributeLike(node) {
- return import_typescript7.default.isJsxAttribute(node) || import_typescript7.default.isJsxSpreadAttribute(node);
- }
- function isJsxAttributeValue(node) {
- return import_typescript7.default.isStringLiteral(node) || import_typescript7.default.isJsxExpression(node) || import_typescript7.default.isJsxElement(node) || import_typescript7.default.isJsxSelfClosingElement(node) || import_typescript7.default.isJsxFragment(node);
- }
- function isJsxChild(node) {
- return import_typescript7.default.isJsxText(node) || import_typescript7.default.isJsxExpression(node) || import_typescript7.default.isJsxElement(node) || import_typescript7.default.isJsxSelfClosingElement(node) || import_typescript7.default.isJsxFragment(node);
- }
- function isJsxTagNameExpression(node) {
- return import_typescript7.default.isIdentifier(node) || isThisExpression(node) || isJsxTagNamePropertyAccess(node);
- }
- function isLiteralToken(node) {
- return import_typescript7.default.isNumericLiteral(node) || import_typescript7.default.isBigIntLiteral(node) || import_typescript7.default.isStringLiteral(node) || import_typescript7.default.isJsxText(node) || import_typescript7.default.isRegularExpressionLiteral(node) || import_typescript7.default.isNoSubstitutionTemplateLiteral(node);
- }
- function isModuleBody(node) {
- return isNamespaceBody(node) || isJSDocNamespaceBody(node);
- }
- function isModuleName(node) {
- return import_typescript7.default.isIdentifier(node) || import_typescript7.default.isStringLiteral(node);
- }
- function isModuleReference(node) {
- return import_typescript7.default.isEntityName(node) || import_typescript7.default.isExternalModuleReference(node);
- }
- function isNamedImportBindings(node) {
- return import_typescript7.default.isNamespaceImport(node) || import_typescript7.default.isNamedImports(node);
- }
- function isNamedImportsOrExports(node) {
- return import_typescript7.default.isNamedImports(node) || import_typescript7.default.isNamedExports(node);
- }
- function isNamespaceBody(node) {
- return import_typescript7.default.isModuleBlock(node) || isNamespaceDeclaration(node);
- }
- function isObjectBindingOrAssignmentElement(node) {
- return import_typescript7.default.isBindingElement(node) || import_typescript7.default.isPropertyAssignment(node) || import_typescript7.default.isShorthandPropertyAssignment(node) || import_typescript7.default.isSpreadAssignment(node);
- }
- function isObjectBindingOrAssignmentPattern(node) {
- return import_typescript7.default.isObjectBindingPattern(node) || import_typescript7.default.isObjectLiteralExpression(node);
- }
- function isObjectTypeDeclaration(node) {
- return (
- // eslint-disable-next-line deprecation/deprecation -- Keep compatibility with ts <5
- isClassLikeDeclaration(node) || import_typescript7.default.isInterfaceDeclaration(node) || import_typescript7.default.isTypeLiteralNode(node)
- );
- }
- function isParameterPropertyModifier(node) {
- return isAccessibilityModifier(node) || isReadonlyKeyword(node);
- }
- function isPropertyNameLiteral(node) {
- return import_typescript7.default.isIdentifier(node) || import_typescript7.default.isStringLiteralLike(node) || import_typescript7.default.isNumericLiteral(node);
- }
- function isPseudoLiteralToken(node) {
- return import_typescript7.default.isTemplateHead(node) || import_typescript7.default.isTemplateMiddle(node) || import_typescript7.default.isTemplateTail(node);
- }
- function isSignatureDeclaration(node) {
- return import_typescript7.default.isCallSignatureDeclaration(node) || import_typescript7.default.isConstructSignatureDeclaration(node) || import_typescript7.default.isMethodSignature(node) || import_typescript7.default.isIndexSignatureDeclaration(node) || import_typescript7.default.isFunctionTypeNode(node) || import_typescript7.default.isConstructorTypeNode(node) || import_typescript7.default.isJSDocFunctionType(node) || import_typescript7.default.isFunctionDeclaration(node) || import_typescript7.default.isMethodDeclaration(node) || import_typescript7.default.isConstructorDeclaration(node) || // eslint-disable-next-line deprecation/deprecation -- Keep compatibility with ts <5
- isAccessorDeclaration(node) || import_typescript7.default.isFunctionExpression(node) || import_typescript7.default.isArrowFunction(node);
- }
- function isSuperProperty(node) {
- return isSuperPropertyAccessExpression(node) || isSuperElementAccessExpression(node);
- }
- function isTypeOnlyCompatibleAliasDeclaration(node) {
- if (import_typescript7.default.isImportClause(node) || import_typescript7.default.isImportEqualsDeclaration(node) || import_typescript7.default.isNamespaceImport(node) || import_typescript7.default.isImportOrExportSpecifier(node)) {
- return true;
- }
- if (isTsVersionAtLeast(5, 0) && (import_typescript7.default.isExportDeclaration(node) || import_typescript7.default.isNamespaceExport(node))) {
- return true;
- }
- return false;
- }
- function isTypeReferenceType(node) {
- return import_typescript7.default.isTypeReferenceNode(node) || import_typescript7.default.isExpressionWithTypeArguments(node);
- }
- function isUnionOrIntersectionTypeNode(node) {
- return import_typescript7.default.isUnionTypeNode(node) || import_typescript7.default.isIntersectionTypeNode(node);
- }
- function isUnparsedSourceText(node) {
- return import_typescript7.default.isUnparsedPrepend(node) || import_typescript7.default.isUnparsedTextLike(node);
- }
- function isVariableLikeDeclaration(node) {
- return import_typescript7.default.isVariableDeclaration(node) || import_typescript7.default.isParameter(node) || import_typescript7.default.isBindingElement(node) || import_typescript7.default.isPropertyDeclaration(node) || import_typescript7.default.isPropertyAssignment(node) || import_typescript7.default.isPropertySignature(node) || import_typescript7.default.isJsxAttribute(node) || import_typescript7.default.isShorthandPropertyAssignment(node) || import_typescript7.default.isEnumMember(node) || import_typescript7.default.isJSDocPropertyTag(node) || import_typescript7.default.isJSDocParameterTag(node);
- }
- // src/nodes/typeGuards/compound.ts
- function isConstAssertionExpression(node) {
- return import_typescript8.default.isTypeReferenceNode(node.type) && import_typescript8.default.isIdentifier(node.type.typeName) && node.type.typeName.escapedText === "const";
- }
- function isIterationStatement(node) {
- switch (node.kind) {
- case import_typescript8.default.SyntaxKind.DoStatement:
- case import_typescript8.default.SyntaxKind.ForInStatement:
- case import_typescript8.default.SyntaxKind.ForOfStatement:
- case import_typescript8.default.SyntaxKind.ForStatement:
- case import_typescript8.default.SyntaxKind.WhileStatement:
- return true;
- default:
- return false;
- }
- }
- function isJSDocNamespaceDeclaration(node) {
- return import_typescript8.default.isModuleDeclaration(node) && import_typescript8.default.isIdentifier(node.name) && (node.body === void 0 || isJSDocNamespaceBody(node.body));
- }
- function isJsxTagNamePropertyAccess(node) {
- return import_typescript8.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_typescript8.default.isModuleDeclaration(node) && import_typescript8.default.isIdentifier(node.name) && node.body !== void 0 && isNamespaceBody(node.body);
- }
- function isNumericOrStringLikeLiteral(node) {
- switch (node.kind) {
- case import_typescript8.default.SyntaxKind.StringLiteral:
- case import_typescript8.default.SyntaxKind.NumericLiteral:
- case import_typescript8.default.SyntaxKind.NoSubstitutionTemplateLiteral:
- return true;
- default:
- return false;
- }
- }
- function isPropertyAccessEntityNameExpression(node) {
- return import_typescript8.default.isPropertyAccessExpression(node) && import_typescript8.default.isIdentifier(node.name) && isEntityNameExpression(node.expression);
- }
- function isSuperElementAccessExpression(node) {
- return import_typescript8.default.isElementAccessExpression(node) && isSuperExpression(node.expression);
- }
- function isSuperPropertyAccessExpression(node) {
- return import_typescript8.default.isPropertyAccessExpression(node) && isSuperExpression(node.expression);
- }
- // src/scopes.ts
- var import_typescript9 = __toESM(require("typescript"), 1);
- function isFunctionScopeBoundary(node) {
- switch (node.kind) {
- case import_typescript9.default.SyntaxKind.FunctionExpression:
- case import_typescript9.default.SyntaxKind.ArrowFunction:
- case import_typescript9.default.SyntaxKind.Constructor:
- case import_typescript9.default.SyntaxKind.ModuleDeclaration:
- case import_typescript9.default.SyntaxKind.ClassDeclaration:
- case import_typescript9.default.SyntaxKind.ClassExpression:
- case import_typescript9.default.SyntaxKind.EnumDeclaration:
- case import_typescript9.default.SyntaxKind.MethodDeclaration:
- case import_typescript9.default.SyntaxKind.FunctionDeclaration:
- case import_typescript9.default.SyntaxKind.GetAccessor:
- case import_typescript9.default.SyntaxKind.SetAccessor:
- case import_typescript9.default.SyntaxKind.MethodSignature:
- case import_typescript9.default.SyntaxKind.CallSignature:
- case import_typescript9.default.SyntaxKind.ConstructSignature:
- case import_typescript9.default.SyntaxKind.ConstructorType:
- case import_typescript9.default.SyntaxKind.FunctionType:
- return true;
- case import_typescript9.default.SyntaxKind.SourceFile:
- return import_typescript9.default.isExternalModule(node);
- default:
- return false;
- }
- }
- // src/syntax.ts
- var import_typescript10 = __toESM(require("typescript"), 1);
- function isAssignmentKind(kind) {
- return kind >= import_typescript10.default.SyntaxKind.FirstAssignment && kind <= import_typescript10.default.SyntaxKind.LastAssignment;
- }
- function isNumericPropertyName(name) {
- return String(+name) === name;
- }
- function charSize(ch) {
- return ch >= 65536 ? 2 : 1;
- }
- function isValidPropertyAccess(text, languageVersion = import_typescript10.default.ScriptTarget.Latest) {
- if (text.length === 0) {
- return false;
- }
- let ch = text.codePointAt(0);
- if (!import_typescript10.default.isIdentifierStart(ch, languageVersion)) {
- return false;
- }
- for (let i = charSize(ch); i < text.length; i += charSize(ch)) {
- ch = text.codePointAt(i);
- if (!import_typescript10.default.isIdentifierPart(ch, languageVersion)) {
- return false;
- }
- }
- return true;
- }
- // src/types/getters.ts
- var import_typescript15 = __toESM(require("typescript"), 1);
- // src/types/typeGuards/intrinsic.ts
- var import_typescript11 = __toESM(require("typescript"), 1);
- function isIntrinsicAnyType(type) {
- return isTypeFlagSet(type, import_typescript11.default.TypeFlags.Any);
- }
- function isIntrinsicBooleanType(type) {
- return isTypeFlagSet(type, import_typescript11.default.TypeFlags.Boolean);
- }
- function isIntrinsicBigIntType(type) {
- return isTypeFlagSet(type, import_typescript11.default.TypeFlags.BigInt);
- }
- function isIntrinsicErrorType(type) {
- return isIntrinsicType(type) && type.intrinsicName === "error";
- }
- function isIntrinsicESSymbolType(type) {
- return isTypeFlagSet(type, import_typescript11.default.TypeFlags.ESSymbol);
- }
- var IntrinsicTypeFlags = import_typescript11.default.TypeFlags.Intrinsic ?? import_typescript11.default.TypeFlags.Any | import_typescript11.default.TypeFlags.Unknown | import_typescript11.default.TypeFlags.String | import_typescript11.default.TypeFlags.Number | import_typescript11.default.TypeFlags.BigInt | import_typescript11.default.TypeFlags.Boolean | import_typescript11.default.TypeFlags.BooleanLiteral | import_typescript11.default.TypeFlags.ESSymbol | import_typescript11.default.TypeFlags.Void | import_typescript11.default.TypeFlags.Undefined | import_typescript11.default.TypeFlags.Null | import_typescript11.default.TypeFlags.Never | import_typescript11.default.TypeFlags.NonPrimitive;
- function isIntrinsicType(type) {
- return isTypeFlagSet(type, IntrinsicTypeFlags);
- }
- function isIntrinsicNeverType(type) {
- return isTypeFlagSet(type, import_typescript11.default.TypeFlags.Never);
- }
- function isIntrinsicNonPrimitiveType(type) {
- return isTypeFlagSet(type, import_typescript11.default.TypeFlags.NonPrimitive);
- }
- function isIntrinsicNullType(type) {
- return isTypeFlagSet(type, import_typescript11.default.TypeFlags.Null);
- }
- function isIntrinsicNumberType(type) {
- return isTypeFlagSet(type, import_typescript11.default.TypeFlags.Number);
- }
- function isIntrinsicStringType(type) {
- return isTypeFlagSet(type, import_typescript11.default.TypeFlags.String);
- }
- function isIntrinsicUndefinedType(type) {
- return isTypeFlagSet(type, import_typescript11.default.TypeFlags.Undefined);
- }
- function isIntrinsicUnknownType(type) {
- return isTypeFlagSet(type, import_typescript11.default.TypeFlags.Unknown);
- }
- function isIntrinsicVoidType(type) {
- return isTypeFlagSet(type, import_typescript11.default.TypeFlags.Void);
- }
- // src/types/typeGuards/objects.ts
- var import_typescript13 = __toESM(require("typescript"), 1);
- // src/types/typeGuards/single.ts
- var import_typescript12 = __toESM(require("typescript"), 1);
- function isConditionalType(type) {
- return isTypeFlagSet(type, import_typescript12.default.TypeFlags.Conditional);
- }
- function isEnumType(type) {
- return isTypeFlagSet(type, import_typescript12.default.TypeFlags.Enum);
- }
- function isFreshableType(type) {
- return isTypeFlagSet(type, import_typescript12.default.TypeFlags.Freshable);
- }
- function isIndexType(type) {
- return isTypeFlagSet(type, import_typescript12.default.TypeFlags.Index);
- }
- function isIndexedAccessType(type) {
- return isTypeFlagSet(type, import_typescript12.default.TypeFlags.IndexedAccess);
- }
- function isInstantiableType(type) {
- return isTypeFlagSet(type, import_typescript12.default.TypeFlags.Instantiable);
- }
- function isIntersectionType(type) {
- return isTypeFlagSet(type, import_typescript12.default.TypeFlags.Intersection);
- }
- function isObjectType(type) {
- return isTypeFlagSet(type, import_typescript12.default.TypeFlags.Object);
- }
- function isStringMappingType(type) {
- return isTypeFlagSet(type, import_typescript12.default.TypeFlags.StringMapping);
- }
- function isSubstitutionType(type) {
- return isTypeFlagSet(type, import_typescript12.default.TypeFlags.Substitution);
- }
- function isTypeParameter(type) {
- return isTypeFlagSet(type, import_typescript12.default.TypeFlags.TypeParameter);
- }
- function isTypeVariable(type) {
- return isTypeFlagSet(type, import_typescript12.default.TypeFlags.TypeVariable);
- }
- function isUnionType(type) {
- return isTypeFlagSet(type, import_typescript12.default.TypeFlags.Union);
- }
- function isUnionOrIntersectionType(type) {
- return isTypeFlagSet(type, import_typescript12.default.TypeFlags.UnionOrIntersection);
- }
- function isUniqueESSymbolType(type) {
- return isTypeFlagSet(type, import_typescript12.default.TypeFlags.UniqueESSymbol);
- }
- // src/types/typeGuards/objects.ts
- function isEvolvingArrayType(type) {
- return isObjectType(type) && isObjectFlagSet(type, import_typescript13.default.ObjectFlags.EvolvingArray);
- }
- function isTupleType(type) {
- return isObjectType(type) && isObjectFlagSet(type, import_typescript13.default.ObjectFlags.Tuple);
- }
- function isTypeReference(type) {
- return isObjectType(type) && isObjectFlagSet(type, import_typescript13.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_typescript14 = __toESM(require("typescript"), 1);
- function isBooleanLiteralType(type) {
- return isTypeFlagSet(type, import_typescript14.default.TypeFlags.BooleanLiteral);
- }
- function isBigIntLiteralType(type) {
- return isTypeFlagSet(type, import_typescript14.default.TypeFlags.BigIntLiteral);
- }
- function isFalseLiteralType(type) {
- return isBooleanLiteralType(type) && type.intrinsicName === "false";
- }
- function isLiteralType(type) {
- return isTypeFlagSet(type, import_typescript14.default.TypeFlags.Literal);
- }
- function isNumberLiteralType(type) {
- return isTypeFlagSet(type, import_typescript14.default.TypeFlags.NumberLiteral);
- }
- function isStringLiteralType(type) {
- return isTypeFlagSet(type, import_typescript14.default.TypeFlags.StringLiteral);
- }
- function isTemplateLiteralType(type) {
- return isTypeFlagSet(type, import_typescript14.default.TypeFlags.TemplateLiteral);
- }
- function isTrueLiteralType(type) {
- return isBooleanLiteralType(type) && type.intrinsicName === "true";
- }
- function isUnknownLiteralType(type) {
- return isTypeFlagSet(type, import_typescript14.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_typescript15.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_typescript17 = __toESM(require("typescript"), 1);
- // src/nodes/utilities.ts
- var import_typescript16 = __toESM(require("typescript"), 1);
- function isBindableObjectDefinePropertyCall(node) {
- return node.arguments.length === 3 && isEntityNameExpression(node.arguments[0]) && isNumericOrStringLikeLiteral(node.arguments[1]) && import_typescript16.default.isPropertyAccessExpression(node.expression) && node.expression.name.escapedText === "defineProperty" && import_typescript16.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_typescript16.default.SyntaxKind.TypeAssertionExpression:
- case import_typescript16.default.SyntaxKind.AsExpression:
- return isConstAssertionExpression(parent);
- case import_typescript16.default.SyntaxKind.PrefixUnaryExpression:
- if (current.kind !== import_typescript16.default.SyntaxKind.NumericLiteral) {
- return false;
- }
- switch (parent.operator) {
- case import_typescript16.default.SyntaxKind.PlusToken:
- case import_typescript16.default.SyntaxKind.MinusToken:
- current = parent;
- break outer;
- default:
- return false;
- }
- case import_typescript16.default.SyntaxKind.PropertyAssignment:
- if (parent.initializer !== current) {
- return false;
- }
- current = parent.parent;
- break;
- case import_typescript16.default.SyntaxKind.ShorthandPropertyAssignment:
- current = parent.parent;
- break;
- case import_typescript16.default.SyntaxKind.ParenthesizedExpression:
- case import_typescript16.default.SyntaxKind.ArrayLiteralExpression:
- case import_typescript16.default.SyntaxKind.ObjectLiteralExpression:
- case import_typescript16.default.SyntaxKind.TemplateExpression:
- current = parent;
- break;
- default:
- return false;
- }
- }
- }
- // src/types/utilities.ts
- function isFalsyType(type) {
- if (isTypeFlagSet(
- type,
- import_typescript17.default.TypeFlags.Undefined | import_typescript17.default.TypeFlags.Null | import_typescript17.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_typescript17.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_typescript17.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_typescript17.default.ObjectFlags.Mapped)) {
- return;
- }
- const declaration = type.symbol.declarations[0];
- if (declaration.readonlyToken !== void 0 && !/^__@[^@]+$/.test(name)) {
- return declaration.readonlyToken.kind !== import_typescript17.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_typescript17.default.IndexKind.Number) : void 0) ?? typeChecker.getIndexInfoOfType(subType, import_typescript17.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_typescript17.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_typescript17.default.SymbolFlags.Accessor) === import_typescript17.default.SymbolFlags.GetAccessor || symbol.declarations?.some(
- (node) => isModifierFlagSet(node, import_typescript17.default.ModifierFlags.Readonly) || import_typescript17.default.isVariableDeclaration(node) && isNodeFlagSet(node.parent, import_typescript17.default.NodeFlags.Const) || import_typescript17.default.isCallExpression(node) && isReadonlyAssignmentDeclaration(node, typeChecker) || import_typescript17.default.isEnumMember(node) || (import_typescript17.default.isPropertyAssignment(node) || import_typescript17.default.isShorthandPropertyAssignment(node)) && isInConstContext(node.parent)
- ));
- }
- function unionTypeParts(type) {
- return isUnionType(type) ? type.types : [type];
- }
- // src/usage/UsageWalker.ts
- var import_typescript23 = __toESM(require("typescript"), 1);
- // src/usage/Scope.ts
- var import_typescript18 = __toESM(require("typescript"), 1);
- function isBlockScopeBoundary(node) {
- switch (node.kind) {
- case import_typescript18.default.SyntaxKind.Block: {
- const parent = node.parent;
- return parent.kind !== import_typescript18.default.SyntaxKind.CatchClause && // blocks inside SourceFile are block scope boundaries
- (parent.kind === import_typescript18.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_typescript18.default.SyntaxKind.ForStatement:
- case import_typescript18.default.SyntaxKind.ForInStatement:
- case import_typescript18.default.SyntaxKind.ForOfStatement:
- case import_typescript18.default.SyntaxKind.CaseBlock:
- case import_typescript18.default.SyntaxKind.CatchClause:
- case import_typescript18.default.SyntaxKind.WithStatement:
- return 2 /* Block */;
- default:
- return 0 /* None */;
- }
- }
- // src/usage/declarations.ts
- var import_typescript20 = __toESM(require("typescript"), 1);
- // src/usage/utils.ts
- var import_typescript19 = __toESM(require("typescript"), 1);
- function identifierToKeywordKind(node) {
- return "identifierToKeywordKind" in import_typescript19.default ? import_typescript19.default.identifierToKeywordKind(node) : (
- // eslint-disable-next-line deprecation/deprecation
- node.originalKeywordKind
- );
- }
- function canHaveDecorators(node) {
- return "canHaveDecorators" in import_typescript19.default ? import_typescript19.default.canHaveDecorators(node) : "decorators" in node;
- }
- function getDecorators(node) {
- return "getDecorators" in import_typescript19.default ? import_typescript19.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_typescript20.default.SyntaxKind.TypeParameter:
- case import_typescript20.default.SyntaxKind.InterfaceDeclaration:
- case import_typescript20.default.SyntaxKind.TypeAliasDeclaration:
- return 2 /* Type */;
- case import_typescript20.default.SyntaxKind.ClassDeclaration:
- case import_typescript20.default.SyntaxKind.ClassExpression:
- return 2 /* Type */ | 4 /* Value */;
- case import_typescript20.default.SyntaxKind.EnumDeclaration:
- return 7 /* Any */;
- case import_typescript20.default.SyntaxKind.NamespaceImport:
- case import_typescript20.default.SyntaxKind.ImportClause:
- return 7 /* Any */ | 8 /* Import */;
- case import_typescript20.default.SyntaxKind.ImportEqualsDeclaration:
- case import_typescript20.default.SyntaxKind.ImportSpecifier:
- return node.parent.name === node ? 7 /* Any */ | 8 /* Import */ : void 0;
- case import_typescript20.default.SyntaxKind.ModuleDeclaration:
- return 1 /* Namespace */;
- case import_typescript20.default.SyntaxKind.Parameter:
- if (node.parent.parent.kind === import_typescript20.default.SyntaxKind.IndexSignature || identifierToKeywordKind(node) === import_typescript20.default.SyntaxKind.ThisKeyword) {
- return;
- }
- case import_typescript20.default.SyntaxKind.BindingElement:
- case import_typescript20.default.SyntaxKind.VariableDeclaration:
- return node.parent.name === node ? 4 /* Value */ : void 0;
- case import_typescript20.default.SyntaxKind.FunctionDeclaration:
- case import_typescript20.default.SyntaxKind.FunctionExpression:
- return 4 /* Value */;
- }
- }
- // src/usage/getPropertyName.ts
- var import_typescript21 = __toESM(require("typescript"), 1);
- function unwrapParentheses(node) {
- while (node.kind === import_typescript21.default.SyntaxKind.ParenthesizedExpression) {
- node = node.expression;
- }
- return node;
- }
- function getPropertyName(propertyName) {
- if (propertyName.kind === import_typescript21.default.SyntaxKind.ComputedPropertyName) {
- const expression = unwrapParentheses(propertyName.expression);
- if (import_typescript21.default.isPrefixUnaryExpression(expression)) {
- let negate = false;
- switch (expression.operator) {
- case import_typescript21.default.SyntaxKind.MinusToken:
- negate = true;
- case import_typescript21.default.SyntaxKind.PlusToken:
- return import_typescript21.default.isNumericLiteral(expression.operand) ? `${negate ? "-" : ""}${expression.operand.text}` : import_typescript21.default.isBigIntLiteral(expression.operand) ? `${negate ? "-" : ""}${expression.operand.text.slice(0, -1)}` : void 0;
- default:
- return;
- }
- }
- if (import_typescript21.default.isBigIntLiteral(expression)) {
- return expression.text.slice(0, -1);
- }
- if (isNumericOrStringLikeLiteral(expression)) {
- return expression.text;
- }
- return;
- }
- return propertyName.kind === import_typescript21.default.SyntaxKind.PrivateIdentifier ? void 0 : propertyName.text;
- }
- // src/usage/getUsageDomain.ts
- var import_typescript22 = __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_typescript22.default.SyntaxKind.TypeReference:
- return identifierToKeywordKind(node) !== import_typescript22.default.SyntaxKind.ConstKeyword ? 2 /* Type */ : void 0;
- case import_typescript22.default.SyntaxKind.ExpressionWithTypeArguments:
- return parent.parent.token === import_typescript22.default.SyntaxKind.ImplementsKeyword || parent.parent.parent.kind === import_typescript22.default.SyntaxKind.InterfaceDeclaration ? 2 /* Type */ : 4 /* Value */;
- case import_typescript22.default.SyntaxKind.TypeQuery:
- return 5 /* ValueOrNamespace */ | 8 /* TypeQuery */;
- case import_typescript22.default.SyntaxKind.QualifiedName:
- if (parent.left === node) {
- if (getEntityNameParent(parent).kind === import_typescript22.default.SyntaxKind.TypeQuery) {
- return 1 /* Namespace */ | 8 /* TypeQuery */;
- }
- return 1 /* Namespace */;
- }
- break;
- case import_typescript22.default.SyntaxKind.ExportSpecifier:
- if (parent.propertyName === void 0 || parent.propertyName === node) {
- return 7 /* Any */;
- }
- break;
- case import_typescript22.default.SyntaxKind.ExportAssignment:
- return 7 /* Any */;
- case import_typescript22.default.SyntaxKind.BindingElement:
- if (parent.initializer === node) {
- return 5 /* ValueOrNamespace */;
- }
- break;
- case import_typescript22.default.SyntaxKind.Parameter:
- case import_typescript22.default.SyntaxKind.EnumMember:
- case import_typescript22.default.SyntaxKind.PropertyDeclaration:
- case import_typescript22.default.SyntaxKind.VariableDeclaration:
- case import_typescript22.default.SyntaxKind.PropertyAssignment:
- case import_typescript22.default.SyntaxKind.PropertyAccessExpression:
- case import_typescript22.default.SyntaxKind.ImportEqualsDeclaration:
- if (parent.name !== node) {
- return 5 /* ValueOrNamespace */;
- }
- break;
- case import_typescript22.default.SyntaxKind.JsxAttribute:
- case import_typescript22.default.SyntaxKind.FunctionDeclaration:
- case import_typescript22.default.SyntaxKind.FunctionExpression:
- case import_typescript22.default.SyntaxKind.NamespaceImport:
- case import_typescript22.default.SyntaxKind.ClassDeclaration:
- case import_typescript22.default.SyntaxKind.ClassExpression:
- case import_typescript22.default.SyntaxKind.ModuleDeclaration:
- case import_typescript22.default.SyntaxKind.MethodDeclaration:
- case import_typescript22.default.SyntaxKind.EnumDeclaration:
- case import_typescript22.default.SyntaxKind.GetAccessor:
- case import_typescript22.default.SyntaxKind.SetAccessor:
- case import_typescript22.default.SyntaxKind.LabeledStatement:
- case import_typescript22.default.SyntaxKind.BreakStatement:
- case import_typescript22.default.SyntaxKind.ContinueStatement:
- case import_typescript22.default.SyntaxKind.ImportClause:
- case import_typescript22.default.SyntaxKind.ImportSpecifier:
- case import_typescript22.default.SyntaxKind.TypePredicate:
- case import_typescript22.default.SyntaxKind.MethodSignature:
- case import_typescript22.default.SyntaxKind.PropertySignature:
- case import_typescript22.default.SyntaxKind.NamespaceExportDeclaration:
- case import_typescript22.default.SyntaxKind.NamespaceExport:
- case import_typescript22.default.SyntaxKind.InterfaceDeclaration:
- case import_typescript22.default.SyntaxKind.TypeAliasDeclaration:
- case import_typescript22.default.SyntaxKind.TypeParameter:
- case import_typescript22.default.SyntaxKind.NamedTupleMember:
- break;
- default:
- return 5 /* ValueOrNamespace */;
- }
- }
- function getEntityNameParent(name) {
- let parent = name.parent;
- while (parent.kind === import_typescript22.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_typescript23.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_typescript23.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_typescript23.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_typescript23.default.SyntaxKind.InterfaceDeclaration:
- case import_typescript23.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_typescript23.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_typescript23.default.SyntaxKind.ExportKeyword
- )
- )
- );
- case import_typescript23.default.SyntaxKind.ModuleDeclaration:
- return __privateMethod(this, _handleModule, handleModule_fn).call(this, node, continueWithScope);
- case import_typescript23.default.SyntaxKind.MappedType:
- return continueWithScope(
- node,
- new NonRootScope(__privateGet(this, _scope), 4 /* Type */)
- );
- case import_typescript23.default.SyntaxKind.FunctionExpression:
- case import_typescript23.default.SyntaxKind.ArrowFunction:
- case import_typescript23.default.SyntaxKind.Constructor:
- case import_typescript23.default.SyntaxKind.MethodDeclaration:
- case import_typescript23.default.SyntaxKind.FunctionDeclaration:
- case import_typescript23.default.SyntaxKind.GetAccessor:
- case import_typescript23.default.SyntaxKind.SetAccessor:
- case import_typescript23.default.SyntaxKind.MethodSignature:
- case import_typescript23.default.SyntaxKind.CallSignature:
- case import_typescript23.default.SyntaxKind.ConstructSignature:
- case import_typescript23.default.SyntaxKind.ConstructorType:
- case import_typescript23.default.SyntaxKind.FunctionType:
- return __privateMethod(this, _handleFunctionLikeDeclaration, handleFunctionLikeDeclaration_fn).call(this, node, cb, variableCallback);
- case import_typescript23.default.SyntaxKind.ConditionalType:
- return __privateMethod(this, _handleConditionalType, handleConditionalType_fn).call(this, node, cb, variableCallback);
- case import_typescript23.default.SyntaxKind.VariableDeclarationList:
- __privateMethod(this, _handleVariableDeclaration, handleVariableDeclaration_fn).call(this, node);
- break;
- case import_typescript23.default.SyntaxKind.Parameter:
- if (node.parent.kind !== import_typescript23.default.SyntaxKind.IndexSignature && (node.name.kind !== import_typescript23.default.SyntaxKind.Identifier || identifierToKeywordKind(
- node.name
- ) !== import_typescript23.default.SyntaxKind.ThisKeyword)) {
- __privateMethod(this, _handleBindingName, handleBindingName_fn).call(this, node.name, false, false);
- }
- break;
- case import_typescript23.default.SyntaxKind.EnumMember:
- __privateGet(this, _scope).addVariable(
- getPropertyName(node.name),
- node.name,
- 1 /* Function */,
- true,
- 4 /* Value */
- );
- break;
- case import_typescript23.default.SyntaxKind.ImportClause:
- case import_typescript23.default.SyntaxKind.ImportSpecifier:
- case import_typescript23.default.SyntaxKind.NamespaceImport:
- case import_typescript23.default.SyntaxKind.ImportEqualsDeclaration:
- __privateMethod(this, _handleDeclaration, handleDeclaration_fn).call(this, node, false, 7 /* Any */ | 8 /* Import */);
- break;
- case import_typescript23.default.SyntaxKind.TypeParameter:
- __privateGet(this, _scope).addVariable(
- node.name.text,
- node.name,
- node.parent.kind === import_typescript23.default.SyntaxKind.InferType ? 8 /* InferType */ : 7 /* Type */,
- false,
- 2 /* Type */
- );
- break;
- case import_typescript23.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_typescript23.default.SyntaxKind.ExportAssignment:
- if (node.expression.kind === import_typescript23.default.SyntaxKind.Identifier) {
- return __privateGet(this, _scope).markExported(
- node.expression
- );
- }
- break;
- case import_typescript23.default.SyntaxKind.Identifier: {
- const domain = getUsageDomain(node);
- if (domain !== void 0) {
- __privateGet(this, _scope).addUse({ domain, location: node });
- }
- return;
- }
- }
- return import_typescript23.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_typescript23.default.SyntaxKind.CatchClause && node.variableDeclaration !== void 0) {
- __privateMethod(this, _handleBindingName, handleBindingName_fn).call(this, node.variableDeclaration.name, true, false);
- }
- return import_typescript23.default.forEachChild(node, cb);
- };
- import_typescript23.default.forEachChild(sourceFile, cb);
- __privateGet(this, _scope).end(variableCallback);
- return __privateGet(this, _result);
- function forEachChild(node) {
- return import_typescript23.default.forEachChild(node, cb);
- }
- }
- };
- _result = new WeakMap();
- _scope = new WeakMap();
- _handleBindingName = new WeakSet();
- handleBindingName_fn = function(name, blockScoped, exported) {
- if (name.kind === import_typescript23.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_typescript23.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_typescript23.default.SyntaxKind.FunctionDeclaration) {
- __privateMethod(this, _handleDeclaration, handleDeclaration_fn).call(this, node, false, 4 /* Value */);
- }
- const scope = __privateSet(this, _scope, node.kind === import_typescript23.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_typescript23.default.NodeFlags.GlobalAugmentation) {
- return next(
- node,
- __privateGet(this, _scope).createOrReuseNamespaceScope("-global", false, true, false)
- );
- }
- if (node.name.kind === import_typescript23.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_typescript23.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_typescript23.default.SyntaxKind.VariableStatement && includesModifier(
- declarationList.parent.modifiers,
- import_typescript23.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_typescript23.default.SyntaxKind.ModuleDeclaration || includesModifier(node.modifiers, import_typescript23.default.SyntaxKind.ExportKeyword);
- }
- function namespaceHasExportStatement(ns) {
- if (ns.body === void 0 || ns.body.kind !== import_typescript23.default.SyntaxKind.ModuleBlock) {
- return false;
- }
- return containsExportStatement(ns.body);
- }
- function containsExportStatement(block) {
- for (const statement of block.statements) {
- if (statement.kind === import_typescript23.default.SyntaxKind.ExportDeclaration || statement.kind === import_typescript23.default.SyntaxKind.ExportAssignment) {
- return true;
- }
- }
- return false;
- }
- function isBlockScopedVariableDeclarationList(declarationList) {
- return (declarationList.flags & import_typescript23.default.NodeFlags.BlockScoped) !== 0;
- }
- function forEachDestructuringIdentifier(pattern, fn) {
- for (const element of pattern.elements) {
- if (element.kind !== import_typescript23.default.SyntaxKind.BindingElement) {
- continue;
- }
- let result;
- if (element.name.kind === import_typescript23.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 = {
- DeclarationDomain,
- UsageDomain,
- collectVariableUsage,
- forEachComment,
- forEachToken,
- 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
|