UNPKG

2.03 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6var _exportNames = {
7 renderHook: true,
8 act: true,
9 cleanup: true,
10 addCleanup: true,
11 removeCleanup: true,
12 suppressErrorOutput: true
13};
14exports.suppressErrorOutput = exports.renderHook = exports.removeCleanup = exports.cleanup = exports.addCleanup = exports.act = void 0;
15
16var _react = require("./types/react");
17
18Object.keys(_react).forEach(function (key) {
19 if (key === "default" || key === "__esModule") return;
20 if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
21 if (key in exports && exports[key] === _react[key]) return;
22 Object.defineProperty(exports, key, {
23 enumerable: true,
24 get: function () {
25 return _react[key];
26 }
27 });
28});
29const renderers = [{
30 required: 'react-test-renderer',
31 renderer: './native/pure'
32}, {
33 required: 'react-dom',
34 renderer: './dom/pure'
35}];
36
37function hasDependency(name) {
38 try {
39 require(name);
40
41 return true;
42 } catch {
43 return false;
44 }
45}
46
47function getRenderer() {
48 const validRenderer = renderers.find(({
49 required
50 }) => hasDependency(required));
51
52 if (validRenderer) {
53 // eslint-disable-next-line @typescript-eslint/no-var-requires
54 return require(validRenderer.renderer);
55 } else {
56 const options = renderers.map(({
57 required
58 }) => ` - ${required}`).sort((a, b) => a.localeCompare(b)).join('\n');
59 throw new Error(`Could not auto-detect a React renderer. Are you sure you've installed one of the following\n${options}\nIf you are using a bundler, please update your imports to use a specific renderer.\nFor instructions see: https://react-hooks-testing-library.com/installation#being-specific`);
60 }
61}
62
63const {
64 renderHook,
65 act,
66 cleanup,
67 addCleanup,
68 removeCleanup,
69 suppressErrorOutput
70} = getRenderer();
71exports.suppressErrorOutput = suppressErrorOutput;
72exports.removeCleanup = removeCleanup;
73exports.addCleanup = addCleanup;
74exports.cleanup = cleanup;
75exports.act = act;
76exports.renderHook = renderHook;
\No newline at end of file