unplugin-ast
Version:
Manipulate the AST to transform your code.
55 lines (53 loc) • 1.53 kB
text/typescript
import { MagicStringAST } from "magic-string-ast";
import { Node } from "@babel/types";
//#region node_modules/.pnpm/@antfu+utils@9.3.0/node_modules/@antfu/utils/dist/index.d.mts
/**
* Promise, or maybe not
*/
type Awaitable<T> = T | PromiseLike<T>;
/**
* Null or whatever
*/
/**
* Array, or not yet
*/
type Arrayable<T> = T | Array<T>;
/**
* Function
*/
//#endregion
//#region src/core/types.d.ts
interface TransformerParsed {
transformer: Transformer;
nodes: NodeRef<Node | undefined>[];
}
interface NodeRef<T = Node> {
value: T;
set: (node: T) => void;
}
interface Transformer<T extends Node = Node> {
/**
* Filter files to transform
* @param id - filename
* @returns whether to include the file
*/
transformInclude?: (id: string) => Awaitable<boolean>;
/**
* Filter nodes to transform
*/
onNode?: ((node: Node, parent: Node | null | undefined, index: number | null | undefined) => Awaitable<boolean>) | ((node: Node, parent: Node | null | undefined, index: number | null | undefined) => node is T);
/**
* Transform the node to a new node or string
*
* @returns the new node or string, or `false` to remove the node
*/
transform: (node: T, code: string, context: {
id: string;
}) => Awaitable<string | Node | false | undefined | null>;
/**
* It will be called after all nodes are transformed
*/
finalize?: (s: MagicStringAST) => Awaitable<void>;
}
//#endregion
export { Awaitable as a, Arrayable as i, Transformer as n, TransformerParsed as r, NodeRef as t };