β¬ οΈ Back to Table of Contents
π ast-utils/helpers¶
π Analysis Summary¶
| Metric | Count |
|---|---|
| π§ Functions | 5 |
| π¦ Imports | 3 |
| π Type Aliases | 2 |
π Table of Contents¶
π οΈ File Location:¶
π packages/utils/src/ast-utils/helpers.ts
π¦ Imports¶
| Name | Source |
|---|---|
AST_NODE_TYPES |
../ts-estree |
AST_TOKEN_TYPES |
../ts-estree |
TSESTree |
../ts-estree |
Functions¶
isNodeOfType(nodeType: NodeType): (node: TSESTree.Node | null | undefined) => node is Extract⦶
Parameters:
nodeTypeNodeType
Returns: (node: TSESTree.Node | null | undefined) => node is Extract<TSESTree.Node, { type: NodeType; }>
Code
isNodeOfTypes(nodeTypes: NodeTypes): (node: TSESTree.Node | null | undefined) => node is Extract⦶
Parameters:
nodeTypesNodeTypes
Returns: (node: TSESTree.Node | null | undefined) => node is Extract<TSESTree.Node, { type: NodeTypes[number]; }>
Code
isNodeOfTypeWithConditions(nodeType: NodeType, conditions: Conditions): (( node: TSESTree.Node | null | undefined, ) => node is Con⦶
Parameters:
nodeTypeNodeTypeconditionsConditions
Returns: ((
node: TSESTree.Node | null | undefined,
) => node is Conditions & ExtractedNode)
Calls:
Object.entriesentries.every
Code
<
NodeType extends AST_NODE_TYPES,
ExtractedNode extends Extract<TSESTree.Node, { type: NodeType }>,
Conditions extends Partial<ExtractedNode>,
>(
nodeType: NodeType,
conditions: Conditions,
): ((
node: TSESTree.Node | null | undefined,
) => node is Conditions & ExtractedNode) => {
const entries = Object.entries(conditions) as ObjectEntries<TSESTree.Node>;
return (
node: TSESTree.Node | null | undefined,
): node is Conditions & ExtractedNode =>
node?.type === nodeType &&
entries.every(([key, value]) => node[key as keyof TSESTree.Node] === value);
}
isTokenOfTypeWithConditions(tokenType: TokenType, conditions: Conditions): (( token: TSESTree.Token | null | undefined, ) => token is ⦶
Parameters:
tokenTypeTokenTypeconditionsConditions
Returns: ((
token: TSESTree.Token | null | undefined,
) => token is Conditions & ExtractedToken)
Calls:
Object.entriesentries.every
Code
<
TokenType extends AST_TOKEN_TYPES,
// This is technically unsafe, but we find it useful to extract out the type
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters
ExtractedToken extends Extract<TSESTree.Token, { type: TokenType }>,
Conditions extends Partial<{ type: TokenType } & TSESTree.Token>,
>(
tokenType: TokenType,
conditions: Conditions,
): ((
token: TSESTree.Token | null | undefined,
) => token is Conditions & ExtractedToken) => {
const entries = Object.entries(conditions) as ObjectEntries<TSESTree.Token>;
return (
token: TSESTree.Token | null | undefined,
): token is Conditions & ExtractedToken =>
token?.type === tokenType &&
entries.every(
([key, value]) => token[key as keyof TSESTree.Token] === value,
);
}
isNotTokenOfTypeWithConditions(tokenType: TokenType, conditions: Conditions): (( token: TSESTree.Token | null | undefined, ) => token is ⦶
Parameters:
tokenTypeTokenTypeconditionsConditions
Returns: ((
token: TSESTree.Token | null | undefined,
) => token is Exclude<TSESTree.Token, Conditions & ExtractedToken>)
Code
<
TokenType extends AST_TOKEN_TYPES,
ExtractedToken extends Extract<TSESTree.Token, { type: TokenType }>,
Conditions extends Partial<ExtractedToken>,
>(
tokenType: TokenType,
conditions: Conditions,
): ((
token: TSESTree.Token | null | undefined,
) => token is Exclude<TSESTree.Token, Conditions & ExtractedToken>) =>
(token): token is Exclude<TSESTree.Token, Conditions & ExtractedToken> =>
!isTokenOfTypeWithConditions(tokenType, conditions)(token)
Type Aliases¶
ObjectEntry<BaseType>¶
type ObjectEntry<BaseType> = BaseType extends unknown
? [keyof BaseType, BaseType[keyof BaseType]]
: never;
ObjectEntries<BaseType>¶
Generated by Syntax Scribe