29 lines
787 B
JavaScript
29 lines
787 B
JavaScript
/**
|
|
* Retrieves enum members from a TypeScript enum declaration node.
|
|
*
|
|
* Handles AST shape changes in TS-ESTree `@typescript-eslint/types`:
|
|
*
|
|
* - Newer parser versions wrap enum members in `body.members` and deprecate
|
|
* `members` on the enum node.
|
|
* - Older parser versions expose members directly on the enum node as `members`.
|
|
* The fallback keeps backward compatibility with older parser releases.
|
|
*
|
|
* @example
|
|
*
|
|
* ```ts
|
|
* enum Color {
|
|
* Red = 'RED',
|
|
* Green = 'GREEN',
|
|
* Blue = 'BLUE',
|
|
* }
|
|
* // Returns array of three TSEnumMember nodes
|
|
* ```
|
|
*
|
|
* @param value - TypeScript enum declaration AST node.
|
|
* @returns Array of enum member nodes.
|
|
*/
|
|
function getEnumMembers(value) {
|
|
return value.body?.members ?? value.members
|
|
}
|
|
export { getEnumMembers }
|