This commit is contained in:
2024-03-22 03:47:51 +05:30
parent 8bcf3d211e
commit 89819f6fe2
28440 changed files with 3211033 additions and 2 deletions

View File

@@ -0,0 +1,53 @@
import { types, ConfigAPI, NodePath } from '@babel/core';
import { TemplateBuilder } from '@babel/template';
interface TemplateVariables {
componentName: string;
interfaces: types.TSInterfaceDeclaration[];
props: (types.ObjectPattern | types.Identifier)[];
imports: types.ImportDeclaration[];
exports: (types.VariableDeclaration | types.ExportDeclaration | types.Statement)[];
jsx: types.JSXElement;
}
interface TemplateContext {
options: Options;
tpl: TemplateBuilder<types.Statement | types.Statement[]>['ast'];
}
interface Template {
(variables: TemplateVariables, context: TemplateContext): types.Statement | types.Statement[];
}
interface State {
componentName: string;
caller?: {
previousExport?: string | null;
};
}
interface JSXRuntimeImport {
source: string;
namespace?: string;
specifiers?: string[];
}
interface Options {
typescript?: boolean;
titleProp?: boolean;
descProp?: boolean;
expandProps?: boolean | 'start' | 'end';
ref?: boolean;
template?: Template;
state: State;
native?: boolean;
memo?: boolean;
exportType?: 'named' | 'default';
namedExport?: string;
jsxRuntime?: 'automatic' | 'classic';
jsxRuntimeImport?: JSXRuntimeImport;
importSource?: string;
}
declare const plugin: (_: ConfigAPI, opts: Options) => {
visitor: {
Program(path: NodePath<types.Program>): void;
};
};
export { Options, Template, plugin as default };