eslint-codemod-utils
Version:
A collection of AST helper functions for more complex ESLint rule fixes.
180 lines (179 loc) • 4.34 kB
TypeScript
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>;