29 lines
1.1 KiB
JavaScript
29 lines
1.1 KiB
JavaScript
/**
|
|
* 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([]))])
|
|
)
|
|
);
|
|
},
|
|
},
|
|
};
|
|
};
|