routie dev init since i didn't adhere to any proper guidance up until now
This commit is contained in:
Generated
Vendored
+85
@@ -0,0 +1,85 @@
|
||||
import { CommonGroupsOptions } from '../types/common-groups-options.js'
|
||||
/**
|
||||
* Parameters for validating generated groups configuration.
|
||||
*/
|
||||
interface ValidateGenerateGroupsConfigurationParameters {
|
||||
options: Pick<
|
||||
CommonGroupsOptions<string, unknown, unknown>,
|
||||
'customGroups' | 'groups'
|
||||
>
|
||||
selectors: readonly string[]
|
||||
modifiers: readonly string[]
|
||||
}
|
||||
/**
|
||||
* Validates that all groups in configuration are either predefined or custom.
|
||||
*
|
||||
* Ensures that every group specified in the configuration either:
|
||||
*
|
||||
* 1. Is a valid predefined group (combination of modifiers and selectors)
|
||||
* 2. Is defined in customGroups
|
||||
* 3. Is the special 'unknown' group.
|
||||
*
|
||||
* Also validates that there are no duplicate groups.
|
||||
*
|
||||
* @example
|
||||
*
|
||||
* ```ts
|
||||
* // Valid predefined groups for React imports
|
||||
* validateGeneratedGroupsConfiguration({
|
||||
* options: {
|
||||
* groups: ['react', 'external', 'internal', 'side-effect-import'],
|
||||
* customGroups: [],
|
||||
* },
|
||||
* selectors: ['import', 'export'],
|
||||
* modifiers: ['side-effect', 'type', 'value'],
|
||||
* })
|
||||
* // All groups are valid predefined groups
|
||||
* ```
|
||||
*
|
||||
* @example
|
||||
*
|
||||
* ```ts
|
||||
* // Invalid group that doesn't exist
|
||||
* validateGeneratedGroupsConfiguration({
|
||||
* options: {
|
||||
* groups: ['my-special-group'], // Not predefined, not in customGroups
|
||||
* customGroups: [],
|
||||
* },
|
||||
* selectors: ['property', 'method'],
|
||||
* modifiers: ['static', 'private'],
|
||||
* })
|
||||
* // Throws: Error: Invalid group(s): my-special-group
|
||||
* ```
|
||||
*
|
||||
* @example
|
||||
*
|
||||
* ```ts
|
||||
* // Valid with custom groups for class members
|
||||
* validateGeneratedGroupsConfiguration({
|
||||
* options: {
|
||||
* groups: ['static-property', 'constructor', 'lifecycle-methods'],
|
||||
* customGroups: [
|
||||
* {
|
||||
* groupName: 'lifecycle-methods',
|
||||
* elementNamePattern: [
|
||||
* /^componentDidMount$/,
|
||||
* /^componentWillUnmount$/,
|
||||
* ],
|
||||
* },
|
||||
* ],
|
||||
* },
|
||||
* selectors: ['property', 'method', 'constructor'],
|
||||
* modifiers: ['static', 'private', 'public'],
|
||||
* })
|
||||
* // 'static-property' is predefined, 'lifecycle-methods' is custom
|
||||
* ```
|
||||
*
|
||||
* @param params - Configuration parameters to validate.
|
||||
* @throws {Error} If any group is neither predefined nor custom.
|
||||
*/
|
||||
export declare function validateGroupsConfiguration({
|
||||
selectors,
|
||||
modifiers,
|
||||
options,
|
||||
}: ValidateGenerateGroupsConfigurationParameters): void
|
||||
export {}
|
||||
Reference in New Issue
Block a user