26 lines
1.0 KiB
TypeScript
26 lines
1.0 KiB
TypeScript
// Vitest cannot transform React Native's Flow-typed source. We monkey-patch
|
|
// Node's CommonJS resolver so every bare `react-native` request returns our
|
|
// minimal host-component shim. This file is referenced by `setupFiles` in
|
|
// vitest.config.ts and runs before any test file imports execute.
|
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
const Module = require('node:module');
|
|
import * as path from 'node:path';
|
|
import { fileURLToPath } from 'node:url';
|
|
|
|
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
const shimPath = path.join(here, 'vitest.rn-shim.ts');
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
const originalResolve = (Module as any)._resolveFilename;
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
(Module as any)._resolveFilename = function patched(
|
|
request: string,
|
|
parent: unknown,
|
|
...rest: unknown[]
|
|
): string {
|
|
if (request === 'react-native' || request.startsWith('react-native/')) {
|
|
return shimPath;
|
|
}
|
|
return originalResolve.call(this, request, parent, ...rest);
|
|
};
|