/** * Rewrites `import.meta` so Babel can compile Vite source to CommonJS for Jest. * * `import.meta` is only legal inside a real ES module; babel-jest compiles to * CJS, so every file that reads `import.meta.env` (api/doormile/client.js, * lib/distance.js) is a hard parse error without this. * * It resolves to `globalThis.__VITE_IMPORT_META__` — a plain object the test * setup seeds and individual tests can override, which is the seam that lets a * test exercise `VITE_DOORMILE_URL` / `VITE_OSRM_URL` overrides at all. */ module.exports = function importMetaPlugin({ types: t }) { return { name: 'transform-import-meta-for-jest', visitor: { MetaProperty(path) { if (path.node.meta.name !== 'import' || path.node.property.name !== 'meta') return; path.replaceWith( t.logicalExpression( '||', t.memberExpression(t.identifier('globalThis'), t.identifier('__VITE_IMPORT_META__')), t.objectExpression([t.objectProperty(t.identifier('env'), t.objectExpression([]))]) ) ); }, }, }; };