UNPKG

unplugin-ast

Version:

Manipulate the AST to transform your code.

55 lines (53 loc) 1.53 kB
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 };