UNPKG

eslint-codemod-utils

Version:

A collection of AST helper functions for more complex ESLint rule fixes.

180 lines (179 loc) 4.34 kB
import * as ESTree from 'estree-jsx'; import type { StringableASTNode, StringableASTNodeFn, WithoutType } from './types'; export declare const whiteSpace: (loc?: ESTree.SourceLocation) => string; export declare const comments: (comments?: ESTree.Comment[]) => { comments: ESTree.Comment[]; toString: () => string; }; export declare const comment: ({ value, type, loc, ...other }: ESTree.Comment) => { value: string; type: "Line" | "Block"; toString: () => string; range?: [number, number] | undefined; }; /** * __JSXIdentifier__ * * @param param Takes a string or the shape of a {ESTree.JSXIdentifier} node * @returns {ESTree.JSXIdentifier} node */ export declare const jsxIdentifier: (param: WithoutType<ESTree.JSXIdentifier> | string) => StringableASTNode<ESTree.JSXIdentifier>; /** * __JSXOpeningFragment__ * * @example * ```ts * <>hello</> * ^^ * ``` */ export declare const jsxOpeningFragment: StringableASTNodeFn<ESTree.JSXOpeningFragment>; /** * __JSXClosingFragment__ * * @example * ```ts * <>hello</> * ^^ * ``` */ export declare const jsxClosingFragment: StringableASTNodeFn<ESTree.JSXClosingFragment>; /** * __JSXFragment__ * * @example * ```ts * <>hello</> * ^^^^^^^^^^ * ``` */ export declare const jsxFragment: StringableASTNodeFn<ESTree.JSXFragment>; /** * __JSXSpreadChild__ * * @example * ```ts * <>{...child}</> * ^^^^^^^^^^ * ``` */ export declare const jsxSpreadChild: StringableASTNodeFn<ESTree.JSXSpreadChild>; export declare const jsxMemberExpression: StringableASTNodeFn<ESTree.JSXMemberExpression>; /** * __JSXElement__ * * @example * * Usage * ``` * import { jsxElement, jsxOpeningElement, jsxClosingElement, identifier } from 'eslint-codemod-utils' * * const modalName = identifier({ name: 'Modal' }) * const modal = jsxElement({ * openingElement: jsxOpeningElement({ name: modalName, selfClosing: false }), * closingElement: jsxClosingElement({ name: modalName }), * }) * ``` * * @example * * Produces * ```js * <Modal></Modal> * ``` * * @returns {JSXElement} */ export declare const jsxElement: StringableASTNodeFn<ESTree.JSXElement, 'children' | 'closingElement'>; /** * __JSXSpreadAttribute__ * * @example Usage * * ```js * import { jsxSpreadAttribute, identifier } from 'eslint-codemod-utils' * * const spreadAttr = jsxSpreadAttribute({ * argument: identifier({ name: 'spread' }) * }) * ``` * @example * * ```js * // Produces a spread attribute * <div {...spread}> * ⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃ * ``` * * @returns {ESTree.JSXSpreadAttribute} */ export declare const jsxSpreadAttribute: StringableASTNodeFn<ESTree.JSXSpreadAttribute>; export declare const jsxOpeningElement: StringableASTNodeFn<ESTree.JSXOpeningElement, 'attributes' | 'selfClosing'>; /** * __JSXClosingElement__ * * @example * * ```js * // The below jsx div is a closing element. * // A closing element is expected to match a valid opening element of the same name * </div> * ``` * * @returns {ESTree.JSXClosingElement} */ export declare const jsxClosingElement: StringableASTNodeFn<ESTree.JSXClosingElement>; /** * __JSXText__ * * @example * * ```js * // In the below jsx, the string, "hello world" is considered JSXText. * // JSXText can be a any number, boolean, or string value. * <div>hello world</div> * ``` * * @returns {ESTree.JSXText} */ export declare const jsxText: StringableASTNodeFn<ESTree.JSXText>; /** * __JSXEmptyExpression__ * * @example * * ```tsx * <SomeJSX attribute={} /> * ^^ * ``` * * @returns {ESTree.JSXEmptyExpression} */ export declare const jsxEmptyExpression: StringableASTNodeFn<ESTree.JSXEmptyExpression>; /** * __JSXExpressionContainer__ * * @example * * ```tsx * <SomeJSX attribute={someValue} /> * ^^^^^^^^^^^ * ``` * * @returns {ESTree.JSXExpressionContainer} */ export declare const jsxExpressionContainer: StringableASTNodeFn<ESTree.JSXExpressionContainer>; /** * __JSXAttribute__ * * @example * * ```js * // In the below jsx, `a`, `b` and `c` reflect different valid * // jsx attributes. There values can come in many forms. * <div a={10} b="string" c={object} /> * ``` * * @returns {JSXAttribute} */ export declare const jsxAttribute: StringableASTNodeFn<ESTree.JSXAttribute>;