📄 helpers.ts
¶
📊 Analysis Summary¶
Metric | Count |
---|---|
🔧 Functions | 5 |
📦 Imports | 3 |
📊 Variables & Constants | 2 |
📑 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 |
Variables & Constants¶
Name | Type | Kind | Value | Exported |
---|---|---|---|---|
entries |
ObjectEntries<TSESTree.Node> |
const | Object.entries(conditions) as ObjectEntries<TSESTree.Node> |
✗ |
entries |
ObjectEntries<TSESTree.Token> |
const | Object.entries(conditions) as ObjectEntries<TSESTree.Token> |
✗ |
Functions¶
isNodeOfType(nodeType: NodeType): (node: any) => node is any
¶
Code
- Parameters:
nodeType: NodeType
- Return Type:
(node: any) => node is any
isNodeOfTypes(nodeTypes: NodeTypes): (node: any) => node is any
¶
Code
- Parameters:
nodeTypes: NodeTypes
- Return Type:
(node: any) => node is any
`isNodeOfTypeWithConditions(nodeType: NodeType, conditions: Conditions): ((¶
node: TSESTree.Node | null | undefined, ) => node is Conditions & ExtractedNode)`
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);
}
- Parameters:
nodeType: NodeType
conditions: Conditions
- Return Type:
(( node: TSESTree.Node | null | undefined, ) => node is Conditions & ExtractedNode)
- Calls:
Object.entries
entries.every
`isTokenOfTypeWithConditions(tokenType: TokenType, conditions: Conditions): ((¶
token: TSESTree.Token | null | undefined, ) => token is Conditions & ExtractedToken)`
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,
);
}
- Parameters:
tokenType: TokenType
conditions: Conditions
- Return Type:
(( token: TSESTree.Token | null | undefined, ) => token is Conditions & ExtractedToken)
- Calls:
Object.entries
entries.every
`isNotTokenOfTypeWithConditions(tokenType: TokenType, conditions: Conditions): ((¶
token: TSESTree.Token | null | undefined,
) => token is Exclude
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)
- Parameters:
tokenType: TokenType
conditions: Conditions
- Return Type:
(( token: TSESTree.Token | null | undefined, ) => token is Exclude<TSESTree.Token, Conditions & ExtractedToken>)
Type Aliases¶
ObjectEntry<BaseType>
¶
type ObjectEntry<BaseType> = BaseType extends unknown
? [keyof BaseType, BaseType[keyof BaseType]]
: never;