import { basename, dirname } from "path" import type { BabelPlugin } from "./esbuild-babel" export const fileName = ({ hasFileName, hasDirName, path, }: { hasFileName: boolean hasDirName: boolean path: string }): BabelPlugin => ({ types: t }) => ({ name: "__filename polyfill", visitor: { Program(program) { const assign = (id: string, value: string) => t.variableDeclaration("var", [ t.variableDeclarator(t.identifier(id), t.stringLiteral(value)), ]) if (hasFileName) { program.node.body.unshift(assign("__filename", basename(path))) } if (hasDirName) { program.node.body.unshift(assign("__dirname", dirname(path))) } }, }, })