routie dev init since i didn't adhere to any proper guidance up until now

This commit is contained in:
2026-04-29 22:27:29 -06:00
commit e1dabb71e2
15301 changed files with 3562618 additions and 0 deletions
@@ -0,0 +1,126 @@
import { TSESLint } from '@typescript-eslint/utils'
import {
NewlinesBetweenOption,
CommonGroupsOptions,
} from '../types/common-groups-options.js'
import { SortingNode } from '../types/sorting-node.js'
/**
* Function type for customizing newlines between specific nodes.
*
* Allows overriding the computed newlines requirement based on the specific
* nodes being compared. Can return 'ignore' to skip newline checking or a
* number to specify exact newlines required.
*
* @template T - Type of the sorting node.
* @param props - Properties for computing newlines.
* @param props.computedNewlinesBetween - Default computed newlines requirement.
* @param props.left - Left/first node.
* @param props.right - Right/second node.
* @returns Number of required newlines or 'ignore' to skip checking.
*/
export type NewlinesBetweenValueGetter<T extends SortingNode> = (props: {
computedNewlinesBetween: NewlinesBetweenOption
right: T
left: T
}) => NewlinesBetweenOption
/**
* Parameters for checking newlines between nodes and generating errors.
*
* @template MessageIds - Type of error message identifiers.
* @template T - Type of the sorting node.
*/
interface GetNewlinesBetweenErrorsParameters<
MessageIds extends string,
T extends SortingNode,
> {
/**
* Optional function to customize newlines between specific nodes.
*/
newlinesBetweenValueGetter?: NewlinesBetweenValueGetter<T>
/**
* Configuration options for newlines and groups.
*/
options: CommonGroupsOptions<string, unknown, unknown>
/**
* ESLint source code object for accessing lines.
*/
sourceCode: TSESLint.SourceCode
/**
* Error message ID for missing required newlines.
*/
missedSpacingError: MessageIds
/**
* Error message ID for extra unwanted newlines.
*/
extraSpacingError: MessageIds
/**
* Group index of the right/second node.
*/
rightGroupIndex: number
/**
* Group index of the left/first node.
*/
leftGroupIndex: number
/**
* Right/second node in the comparison.
*/
right: T
/**
* Left/first node in the comparison.
*/
left: T
}
/**
* Checks if the newlines between two nodes match the required configuration.
*
* Validates the number of empty lines between two nodes against the expected
* newlines based on their group indices and configuration. Generates
* appropriate error messages when the actual newlines don't match the
* requirement.
*
* The function returns no errors if:
*
* - The left node's group index is greater than the right's (wrong order)
* - The nodes are in different partitions
* - The newlines configuration is set to 'ignore'
* - The actual newlines match the expected newlines.
*
* @example
*
* ```ts
* // Configuration requires 1 newline between different groups
* const errors = getNewlinesBetweenErrors({
* options: { newlinesBetween: 1, groups: ['imports', 'types'] },
* leftGroupIndex: 0, // imports group
* rightGroupIndex: 1, // types group
* left: importNode,
* right: typeNode,
* sourceCode,
* missedSpacingError: 'missedNewline',
* extraSpacingError: 'extraNewline',
* })
* // If no newline between nodes: Returns ['missedNewline']
* // If 2+ newlines between nodes: Returns ['extraNewline']
* // If exactly 1 newline: Returns []
* ```
*
* @template MessageIds - Type of error message identifiers.
* @template T - Type of the sorting node.
* @param params - Parameters for newline checking.
* @returns Array of error message IDs (empty if no errors).
*/
export declare function getNewlinesBetweenErrors<
MessageIds extends string,
T extends SortingNode,
>({
newlinesBetweenValueGetter,
missedSpacingError,
extraSpacingError,
rightGroupIndex,
leftGroupIndex,
sourceCode,
options,
right,
left,
}: GetNewlinesBetweenErrorsParameters<MessageIds, T>): MessageIds[]
export {}