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 | PromiseLike; /** * Null or whatever */ /** * Array, or not yet */ type Arrayable = T | Array; /** * Function */ //#endregion //#region src/core/types.d.ts interface TransformerParsed { transformer: Transformer; nodes: NodeRef[]; } interface NodeRef { value: T; set: (node: T) => void; } interface Transformer { /** * Filter files to transform * @param id - filename * @returns whether to include the file */ transformInclude?: (id: string) => Awaitable; /** * Filter nodes to transform */ onNode?: ((node: Node, parent: Node | null | undefined, index: number | null | undefined) => Awaitable) | ((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; /** * It will be called after all nodes are transformed */ finalize?: (s: MagicStringAST) => Awaitable; } //#endregion export { Awaitable as a, Arrayable as i, Transformer as n, TransformerParsed as r, NodeRef as t };