{"_id":"vitest-native","_rev":"20-779f47fb9b318670f3de88e19a579371","name":"vitest-native","dist-tags":{"latest":"0.13.0"},"versions":{"0.1.0":{"name":"vitest-native","version":"0.1.0","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"author":{"name":"Daniel Fry"},"license":"MIT","_id":"vitest-native@0.1.0","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"homepage":"https://github.com/danielfry/vitest-react-native#readme","bugs":{"url":"https://github.com/danielfry/vitest-react-native/issues"},"dist":{"shasum":"6dc71ab07786b5dd7594753cb04aa8d5d44e35f2","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.1.0.tgz","fileCount":30,"integrity":"sha512-dPP3dVF7rchvHNGfG114bZlvEZa54ioXTx4f0Ne61q96KeBy5XHOOw98KeIaPo2A5k32xp9OPFZf4pABt+H9GQ==","signatures":[{"sig":"MEUCIBvCJ3PWPtba8VEMjQqtSrra5rGxADapTE8IyFsvvvkrAiEA1azm7my073LHEGvBxTQpj1vtkVNy0ASc6eezAN/XxXY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":245006},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./setup":{"import":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"require":{"types":"./dist/setup.d.cts","default":"./dist/setup.cjs"}},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"import":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"require":{"types":"./dist/presets.d.cts","default":"./dist/presets.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}}},"gitHead":"bd0afdaaab4afda6b0aa70ba9ec8ad6a3d7ee851","scripts":{"lint":"oxlint --deny-warnings src/ tests/","test":"vitest run","build":"tsdown","clean":"rm -rf dist","format":"oxfmt --write src/ tests/","typecheck":"tsc --noEmit","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/","prepublishOnly":"bun run build && bun run test && bun run lint && bun run typecheck"},"_npmUser":{"name":"danfry","email":"danf@hotmail.co.za"},"repository":{"url":"git+https://github.com/danielfry/vitest-react-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.6.2","description":"A Vitest plugin for React Native. One install, zero config.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","react":"^19.0.0","tsdown":"^0.21.0","vitest":"^4.0.0","typescript":"^5.7.0","@types/node":"^25.3.5","@types/react":"^19.2.14","react-native":"^0.84.1","react-test-renderer":"^19.0.0","@testing-library/react-native":"^12.9.0"},"peerDependencies":{"vite":">=5","react":">=18","vitest":">=4","@testing-library/react-native":">=12"},"peerDependenciesMeta":{"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vitest-native_0.1.0_1772916513342_0.15226564246381136","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"vitest-native","version":"0.1.1","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"author":{"name":"Daniel Fry"},"license":"MIT","_id":"vitest-native@0.1.1","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"homepage":"https://github.com/danfry1/vitest-react-native#readme","bugs":{"url":"https://github.com/danfry1/vitest-react-native/issues"},"dist":{"shasum":"92edc8e9a1e9d6d39ab48781873cce45cd27e34f","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.1.1.tgz","fileCount":30,"integrity":"sha512-Fb/mIEkyFotlG9m8HH0Ef82RdgXy1kkWXmJHkJi74VDhHzVEFkwMLz8e/QCkc0n67Oqi70RwGOBsL+gSAAvn4Q==","signatures":[{"sig":"MEUCIQCLmrBDfitE8wyE9I2+IUJ+e5NxtR4Goe8471GYjdRH2gIgA41yqVOfQk/Ae911fHC6fPMdoUuZ9dlmhjIqowl3j28=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":245000},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./setup":{"import":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"require":{"types":"./dist/setup.d.cts","default":"./dist/setup.cjs"}},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"import":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"require":{"types":"./dist/presets.d.cts","default":"./dist/presets.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}}},"gitHead":"9217729baeee9a14bda9f92d2adcd8bc3bd2fdf3","scripts":{"lint":"oxlint --deny-warnings src/ tests/","test":"vitest run","build":"tsdown","clean":"rm -rf dist","format":"oxfmt --write src/ tests/","typecheck":"tsc --noEmit","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/","prepublishOnly":"bun run build && bun run test && bun run lint && bun run typecheck"},"_npmUser":{"name":"danfry","email":"danf@hotmail.co.za"},"repository":{"url":"git+https://github.com/danfry1/vitest-react-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.6.2","description":"A Vitest plugin for React Native. One install, zero config.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","react":"^19.0.0","tsdown":"^0.21.0","vitest":"^4.0.0","typescript":"^5.7.0","@types/node":"^25.3.5","@types/react":"^19.2.14","react-native":"^0.84.1","react-test-renderer":"^19.0.0","@testing-library/react-native":"^12.9.0"},"peerDependencies":{"vite":">=5","react":">=18","vitest":">=4","@testing-library/react-native":">=12"},"peerDependenciesMeta":{"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vitest-native_0.1.1_1772916774849_0.8147224901746839","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"vitest-native","version":"0.1.2","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"author":{"name":"Daniel Fry"},"license":"MIT","_id":"vitest-native@0.1.2","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"homepage":"https://github.com/danfry1/vitest-native#readme","bugs":{"url":"https://github.com/danfry1/vitest-native/issues"},"dist":{"shasum":"be2a6cbc6f7e026fd8b4b3e4d7514c7de689b85b","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.1.2.tgz","fileCount":30,"integrity":"sha512-FKKxp3sn3EmazXHEOeZi04GTgfbdQPKVrkoSi87Ir/E4Q+uUGLfjn1PooadO1IO412bnCMw4ZhOcGpzUSi3YAA==","signatures":[{"sig":"MEYCIQDuPVHNGXoIuOunL8jd0MIFlpryYzNG1HhOaFs76PpWQgIhALjZaWp6QkgcM6mNoLRNYBjOtGifq3oNWpkDJvSUCG9k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244982},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./setup":{"import":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"require":{"types":"./dist/setup.d.cts","default":"./dist/setup.cjs"}},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"import":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"require":{"types":"./dist/presets.d.cts","default":"./dist/presets.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}}},"gitHead":"41671052337ade12b720ac076cac0bd7e43a4479","scripts":{"lint":"oxlint --deny-warnings src/ tests/","test":"vitest run","build":"tsdown","clean":"rm -rf dist","format":"oxfmt --write src/ tests/","typecheck":"tsc --noEmit","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/","prepublishOnly":"bun run build && bun run test && bun run lint && bun run typecheck"},"_npmUser":{"name":"danfry","email":"danf@hotmail.co.za"},"repository":{"url":"git+https://github.com/danfry1/vitest-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.6.2","description":"A Vitest plugin for React Native. One install, zero config.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","react":"^19.0.0","tsdown":"^0.21.0","vitest":"^4.0.0","typescript":"^5.7.0","@types/node":"^25.3.5","@types/react":"^19.2.14","react-native":"^0.84.1","react-test-renderer":"^19.0.0","@testing-library/react-native":"^12.9.0"},"peerDependencies":{"vite":">=5","react":">=18","vitest":">=4","@testing-library/react-native":">=12"},"peerDependenciesMeta":{"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vitest-native_0.1.2_1772916959213_0.33158333398878215","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"vitest-native","version":"0.1.3","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"author":{"name":"Daniel Fry"},"license":"MIT","_id":"vitest-native@0.1.3","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"homepage":"https://github.com/danfry1/vitest-native#readme","bugs":{"url":"https://github.com/danfry1/vitest-native/issues"},"dist":{"shasum":"207b07a6f234e56d6e65de829ac89dd23a815bba","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.1.3.tgz","fileCount":31,"integrity":"sha512-2aUFtkyBJOf4Fif+T+2aHh+RM37AURGj8+CARj1AnEDaphtGpkh1ec1w7JQ0uY9F6UKjo6/uH6XM67ZidbQJVg==","signatures":[{"sig":"MEYCIQD8WKNoU1WqnMOIeja6TJiROtV3v3rQBRag3VjbFzBWvgIhAICJDtm3M90qq3EHrrKTOPO+f87zN1G4RdODvFD3Wahy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/vitest-native@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":245148},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./setup":{"import":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"require":{"types":"./dist/setup.d.cts","default":"./dist/setup.cjs"}},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"import":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"require":{"types":"./dist/presets.d.cts","default":"./dist/presets.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}}},"gitHead":"f191b6ccb2f17d00c2dbd058848e8389882844ac","scripts":{"lint":"oxlint --deny-warnings src/ tests/","test":"vitest run","build":"tsdown","clean":"rm -rf dist","format":"oxfmt --write src/ tests/","typecheck":"tsc --noEmit","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/","prepublishOnly":"bun run build && bun run test && bun run lint && bun run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46082819-436a-491f-8764-da6507733356"}},"repository":{"url":"git+https://github.com/danfry1/vitest-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.11.0","description":"A Vitest plugin for React Native. One install, zero config.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","react":"^19.0.0","tsdown":"^0.21.0","vitest":"^4.0.0","typescript":"^5.7.0","@types/node":"^25.3.5","@types/react":"^19.2.14","react-native":"^0.84.1","react-test-renderer":"^19.0.0","@testing-library/react-native":"^12.9.0"},"peerDependencies":{"vite":">=5","react":">=18","vitest":">=4","@testing-library/react-native":">=12"},"peerDependenciesMeta":{"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vitest-native_0.1.3_1772920611636_0.02815389854728445","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"vitest-native","version":"0.2.0","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"author":{"name":"Daniel Fry"},"license":"MIT","_id":"vitest-native@0.2.0","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"homepage":"https://github.com/danfry1/vitest-native#readme","bugs":{"url":"https://github.com/danfry1/vitest-native/issues"},"dist":{"shasum":"46f241c3dcc597edc66a242211eb46604fdd0285","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.2.0.tgz","fileCount":31,"integrity":"sha512-2xmDqOvbYBEe8G89BGYdWuQunYUhZvqiVWaNBr+HFUXwYIcoX2CvGGLKMWvmEamu7BNGjl+BU7MNchTbfUwNCA==","signatures":[{"sig":"MEUCIQCA61tcWaMltue0hsKnYHiNM9rpBi7WgY/5K19OeUXXrQIgNoGRLHIRbAUy/Ch4euhrTYVYPJ/M2PRRDB2jJtmUOT0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/vitest-native@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":252366},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./setup":{"import":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"require":{"types":"./dist/setup.d.cts","default":"./dist/setup.cjs"}},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"import":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"require":{"types":"./dist/presets.d.cts","default":"./dist/presets.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}}},"gitHead":"15ecd81f3da3e03c480b81b35288a57ad2be5009","scripts":{"lint":"oxlint --deny-warnings src/ tests/","test":"vitest run","build":"tsdown","clean":"rm -rf dist","format":"oxfmt --write src/ tests/","typecheck":"tsc --noEmit","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/","prepublishOnly":"bun run build && bun run test && bun run lint && bun run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46082819-436a-491f-8764-da6507733356"}},"repository":{"url":"git+https://github.com/danfry1/vitest-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.11.0","description":"A Vitest plugin for React Native. One install, zero config.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","react":"^19.0.0","tsdown":"^0.21.0","vitest":"^4.0.0","typescript":"^5.7.0","@types/node":"^25.3.5","@types/react":"^19.2.14","react-native":"^0.84.1","react-test-renderer":"^19.0.0","@testing-library/react-native":"^12.9.0"},"peerDependencies":{"vite":">=5","react":">=18","vitest":">=4","@testing-library/react-native":">=12"},"peerDependenciesMeta":{"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vitest-native_0.2.0_1772975071932_0.6831980349192672","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"vitest-native","version":"0.2.1","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"author":{"name":"Daniel Fry"},"license":"MIT","_id":"vitest-native@0.2.1","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"homepage":"https://github.com/danfry1/vitest-native#readme","bugs":{"url":"https://github.com/danfry1/vitest-native/issues"},"dist":{"shasum":"e0f8476cb3660c7c328610331cea579ec683e23a","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.2.1.tgz","fileCount":31,"integrity":"sha512-UB3BICIeh5J0CaSPL4NdB676c27xk9L6NfBI0qLpKP+D3lnIhrfVhuP7QEufgkMjuzwXfelT2n1cQPdwp4qFIQ==","signatures":[{"sig":"MEYCIQDUSdV6zofoaQE+C5jvmJQ1IrpQqTPLiETRI1cgxgYDuwIhAJb62mcRC8F81algmym5Z63DM724c2xcCz362aS9P+Lf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/vitest-native@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":260450},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./setup":{"import":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"require":{"types":"./dist/setup.d.cts","default":"./dist/setup.cjs"}},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"import":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"require":{"types":"./dist/presets.d.cts","default":"./dist/presets.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}}},"gitHead":"ee2f2eff3c90e9ebc4aebe5ceb1e407d59ac100e","scripts":{"lint":"oxlint --deny-warnings src/ tests/","test":"vitest run","build":"tsdown","clean":"rm -rf dist","format":"oxfmt --write src/ tests/","typecheck":"tsc --noEmit","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/","prepublishOnly":"bun run build && bun run test && bun run lint && bun run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46082819-436a-491f-8764-da6507733356"}},"repository":{"url":"git+https://github.com/danfry1/vitest-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.11.0","description":"A Vitest plugin for React Native. One install, zero config.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","react":"^19.0.0","tsdown":"^0.21.0","vitest":"^4.0.0","typescript":"^5.7.0","@types/node":"^25.3.5","@types/react":"^19.2.14","react-native":"^0.84.1","react-test-renderer":"^19.0.0","@testing-library/react-native":"^12.9.0"},"peerDependencies":{"vite":">=5","react":">=18","vitest":">=4","@testing-library/react-native":">=12"},"peerDependenciesMeta":{"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vitest-native_0.2.1_1772978625151_0.4895063286919237","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"vitest-native","version":"0.3.0","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"author":{"name":"Daniel Fry"},"license":"MIT","_id":"vitest-native@0.3.0","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"homepage":"https://github.com/danfry1/vitest-native#readme","bugs":{"url":"https://github.com/danfry1/vitest-native/issues"},"dist":{"shasum":"32cb8f83b17faa13c4d2260888e1a773d253f4e2","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.3.0.tgz","fileCount":31,"integrity":"sha512-hdIr04IBF5EK4rPbTkLLUGi3A3Msf2IlSb/5uQsL6Ck1+Uv1ZapMBnduK7tE1fpp2BCoEfOpIfmUsBeWspsKqg==","signatures":[{"sig":"MEQCIDafssY/SwMWLhzfsuVEe2NnAZP2b84tkQariJgvuGibAiBg3tVi0qslkKGUNDaCFA7mzlb3YudjHCPcue/v7ZQQqQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/vitest-native@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":318591},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./setup":{"import":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"require":{"types":"./dist/setup.d.cts","default":"./dist/setup.cjs"}},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"import":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"require":{"types":"./dist/presets.d.cts","default":"./dist/presets.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}}},"gitHead":"a563223439f813e310445855376b08a0b9e2159b","scripts":{"lint":"oxlint --deny-warnings src/ tests/","test":"vitest run","build":"tsdown","clean":"rm -rf dist","format":"oxfmt --write src/ tests/","typecheck":"tsc --noEmit","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/","prepublishOnly":"bun run build && bun run test && bun run lint && bun run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46082819-436a-491f-8764-da6507733356"}},"repository":{"url":"git+https://github.com/danfry1/vitest-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.11.0","description":"A Vitest plugin for React Native. One install, zero config.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"flow-remove-types":"^2.304.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","react":"^19.0.0","tsdown":"^0.21.0","vitest":"^4.0.0","typescript":"^5.7.0","@types/node":"^25.3.5","@types/react":"^19.2.14","react-native":"^0.84.1","react-test-renderer":"^19.0.0","@testing-library/react-native":"^12.9.0"},"peerDependencies":{"vite":">=5","react":">=18","vitest":">=4","@testing-library/react-native":">=12"},"peerDependenciesMeta":{"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vitest-native_0.3.0_1773179140520_0.25832508271044463","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"vitest-native","version":"0.4.0","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"author":{"name":"Daniel Fry"},"license":"MIT","_id":"vitest-native@0.4.0","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"homepage":"https://github.com/danfry1/vitest-native#readme","bugs":{"url":"https://github.com/danfry1/vitest-native/issues"},"dist":{"shasum":"4cad1446be8d68ce21c62f9b66a6b78cf439ae96","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.4.0.tgz","fileCount":62,"integrity":"sha512-ybOaZ5b8MENLLBYYB4Vtdg1uj/GBu8xDUgo6Bpe/AvzWC2romrZ72EISmROfSGuWYBJK2Q+AmgPolS/zUZEVwg==","signatures":[{"sig":"MEUCIQD/Q4RV9+qKLcOE9vZHqJ3pcc2XMMz0MC3zoO48WT7k7wIgNPh9WRF6E6Of3quyQ8OX26e0Pw+CVrtrWvZLngUw+BE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/vitest-native@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":478452},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./setup":{"import":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"require":{"types":"./dist/setup.d.cts","default":"./dist/setup.cjs"}},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"import":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"require":{"types":"./dist/presets.d.cts","default":"./dist/presets.cjs"}},"./matchers":{"import":{"types":"./dist/matchers.d.mts","default":"./dist/matchers.mjs"},"require":{"types":"./dist/matchers.d.cts","default":"./dist/matchers.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}},"./jest-compat":{"import":{"types":"./dist/jest-compat.d.mts","default":"./dist/jest-compat.mjs"},"require":{"types":"./dist/jest-compat.d.cts","default":"./dist/jest-compat.cjs"}},"./jest-compat/setup":{"types":"./dist/jest-compat/setup.d.mts","default":"./dist/jest-compat/setup.mjs"},"./jest-compat/jest-globals":{"types":"./dist/jest-compat/jest-globals.d.mts","default":"./dist/jest-compat/jest-globals.mjs"},"./jest-compat/extend-expect-noop":{"types":"./dist/jest-compat/noop.d.mts","default":"./dist/jest-compat/noop.mjs"}},"gitHead":"fcdbdca9b3f0b83d05bdfb55ce2934d077e6b76f","scripts":{"lint":"oxlint --deny-warnings src/ tests/","test":"vitest run","build":"tsdown","clean":"rm -rf dist","format":"oxfmt --write src/ tests/","typecheck":"tsc --noEmit","crosscheck":"node scripts/crosscheck.mjs","test:native":"vitest run --config tests-native/vitest.config.mts","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/","prepublishOnly":"bun run build && bun run test && bun run lint && bun run typecheck","test:native:hot":"vitest run --config tests-native/vitest.hot.config.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danfry","email":"danf@hotmail.co.za"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:41ee0f6f-e358-4a2e-9527-cd05efb4b162"}},"repository":{"url":"git+https://github.com/danfry1/vitest-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.15.0","description":"Run real React Native tests under Vitest. One install, zero config.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"magic-string":"^0.30.21","flow-remove-types":"^2.304.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","react":"^19.0.0","tsdown":"0.21.0","vitest":"^4.0.0","typescript":"5.9.3","@babel/core":"^7.29.7","@types/node":"25.3.5","@types/react":"19.2.14","react-native":"^0.84.1","expo-constants":"56.0.16","expo-status-bar":"56.0.4","@vitest/coverage-v8":"4.0.18","react-test-renderer":"^19.0.0","react-native-worklets":"0.9.1","react-native-reanimated":"4.3.1","@react-navigation/native":"7.2.5","@react-native/babel-preset":"^0.85.3","react-native-gesture-handler":"3.0.0","@testing-library/react-native":"^12.9.0","@react-navigation/native-stack":"7.16.0","react-native-safe-area-context":"5.8.0"},"peerDependencies":{"vite":">=5","react":">=18","vitest":">=4","@babel/core":"*","@react-native/babel-preset":"*","@testing-library/react-native":">=12"},"peerDependenciesMeta":{"@babel/core":{"optional":true},"@react-native/babel-preset":{"optional":true},"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vitest-native_0.4.0_1781210420764_0.28837282802136777","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"vitest-native","version":"0.4.1","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"author":{"name":"Daniel Fry"},"license":"MIT","_id":"vitest-native@0.4.1","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"homepage":"https://github.com/danfry1/vitest-native#readme","bugs":{"url":"https://github.com/danfry1/vitest-native/issues"},"dist":{"shasum":"c2d413b3dcea54fd99c563f97e4e762b5c679088","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.4.1.tgz","fileCount":62,"integrity":"sha512-cCa6M0ZQkN94/OTHJOnBsaz3+N7zCr9BRCaY8jlO3qa/5rceNrevbSGXgGJMUmyjp6BMNyLPOwRB6vWXfUEAZw==","signatures":[{"sig":"MEQCIBkm2UeNbhl9SY9WjRo3deQXx80rYqYHtqUv4EAhqvjBAiBYL2oAV88+C2LzTdM7JqSVQrouc9lQ4QMFMnnm4Hp3iA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/vitest-native@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":479839},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./setup":{"import":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"require":{"types":"./dist/setup.d.cts","default":"./dist/setup.cjs"}},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"import":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"require":{"types":"./dist/presets.d.cts","default":"./dist/presets.cjs"}},"./matchers":{"import":{"types":"./dist/matchers.d.mts","default":"./dist/matchers.mjs"},"require":{"types":"./dist/matchers.d.cts","default":"./dist/matchers.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}},"./jest-compat":{"import":{"types":"./dist/jest-compat.d.mts","default":"./dist/jest-compat.mjs"},"require":{"types":"./dist/jest-compat.d.cts","default":"./dist/jest-compat.cjs"}},"./jest-compat/setup":{"types":"./dist/jest-compat/setup.d.mts","default":"./dist/jest-compat/setup.mjs"},"./jest-compat/jest-globals":{"types":"./dist/jest-compat/jest-globals.d.mts","default":"./dist/jest-compat/jest-globals.mjs"},"./jest-compat/extend-expect-noop":{"types":"./dist/jest-compat/noop.d.mts","default":"./dist/jest-compat/noop.mjs"}},"gitHead":"c2b9415f221af1286bc618cc8d3c793ec515ad88","scripts":{"lint":"oxlint --deny-warnings src/ tests/","test":"vitest run","build":"tsdown","clean":"rm -rf dist","format":"oxfmt --write src/ tests/","typecheck":"tsc --noEmit","crosscheck":"node scripts/crosscheck.mjs","test:native":"vitest run --config tests-native/vitest.config.mts","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/","prepublishOnly":"bun run build && bun run test && bun run lint && bun run typecheck","test:native:hot":"vitest run --config tests-native/vitest.hot.config.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danfry","email":"danf@hotmail.co.za"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:41ee0f6f-e358-4a2e-9527-cd05efb4b162"}},"repository":{"url":"git+https://github.com/danfry1/vitest-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.15.0","description":"Run real React Native tests under Vitest. One install, zero config.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"magic-string":"^0.30.21","flow-remove-types":"^2.304.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","react":"^19.0.0","tsdown":"0.21.0","vitest":"^4.0.0","typescript":"5.9.3","@babel/core":"^7.29.7","@types/node":"25.3.5","@types/react":"19.2.14","react-native":"^0.84.1","expo-constants":"56.0.16","expo-status-bar":"56.0.4","@vitest/coverage-v8":"4.0.18","react-test-renderer":"^19.0.0","react-native-worklets":"0.9.1","react-native-reanimated":"4.3.1","@react-navigation/native":"7.2.5","@react-native/babel-preset":"^0.85.3","react-native-gesture-handler":"3.0.0","@testing-library/react-native":"^12.9.0","@react-navigation/native-stack":"7.16.0","react-native-safe-area-context":"5.8.0"},"peerDependencies":{"vite":">=5","react":">=18","vitest":">=4","@babel/core":"*","@react-native/babel-preset":"*","@testing-library/react-native":">=12"},"peerDependenciesMeta":{"@babel/core":{"optional":true},"@react-native/babel-preset":{"optional":true},"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vitest-native_0.4.1_1781210905321_0.2220781318744478","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"vitest-native","version":"0.5.0","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"author":{"name":"Daniel Fry"},"license":"MIT","_id":"vitest-native@0.5.0","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"homepage":"https://github.com/danfry1/vitest-native#readme","bugs":{"url":"https://github.com/danfry1/vitest-native/issues"},"dist":{"shasum":"0a8746f03df413fb8877525b2c97606aa7288f5b","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.5.0.tgz","fileCount":63,"integrity":"sha512-IkoEakFlKCa+aFfym+Main0FJqvQozcXeNM/j8qLxFQz0J0w6SfAOi/YyfRyLGiqNi7wtao4PqiT9U4P4FLWZg==","signatures":[{"sig":"MEYCIQDS9vzy7BHC6mc9yIBHfZQp4fuIBE9tbws0vYClPSO+4gIhAN0nB6W6CQlFyIqL/jqdKNL7HpLsGoB7BlYU2wnuROBe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/vitest-native@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":520204},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./setup":{"import":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"require":{"types":"./dist/setup.d.cts","default":"./dist/setup.cjs"}},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"import":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"require":{"types":"./dist/presets.d.cts","default":"./dist/presets.cjs"}},"./matchers":{"import":{"types":"./dist/matchers.d.mts","default":"./dist/matchers.mjs"},"require":{"types":"./dist/matchers.d.cts","default":"./dist/matchers.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}},"./jest-compat":{"import":{"types":"./dist/jest-compat.d.mts","default":"./dist/jest-compat.mjs"},"require":{"types":"./dist/jest-compat.d.cts","default":"./dist/jest-compat.cjs"}},"./jest-compat/setup":{"types":"./dist/jest-compat/setup.d.mts","import":"./dist/jest-compat/setup.mjs"},"./jest-compat/jest-globals":{"types":"./dist/jest-compat/jest-globals.d.mts","import":"./dist/jest-compat/jest-globals.mjs"},"./jest-compat/extend-expect-noop":{"types":"./dist/jest-compat/noop.d.mts","import":"./dist/jest-compat/noop.mjs"}},"gitHead":"f4771469642a660bbe305bde49768c0a9a1d8316","scripts":{"lint":"oxlint --deny-warnings src/ tests/ tests-native/ crosscheck/ consumer-tests/ scripts/","test":"vitest run","build":"tsdown","clean":"rm -rf dist","format":"oxfmt --write src/ tests/ consumer-tests/ scripts/","typecheck":"tsc --noEmit","crosscheck":"node scripts/crosscheck.mjs","test:native":"vitest run --config tests-native/vitest.config.mts","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/ consumer-tests/ scripts/","prepublishOnly":"bun run build && bun run test && bun run test:native && bun run test:native:android && bun run test:native:hot && bun run test:native:hot:isolation && bun run test:native:hot:soak && bun run crosscheck && bun run test:consumers && bun run lint && bun run typecheck","test:consumers":"node scripts/test-consumers.mjs","test:native:hot":"vitest run --config tests-native/vitest.hot.config.mts","test:native:android":"vitest run --config tests-native/vitest.android.config.mts","test:native:hot:soak":"node scripts/test-hot-soak.mjs","test:native:hot:isolation":"vitest run --config tests-native/vitest.hot-isolation.config.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danfry","email":"danf@hotmail.co.za"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:41ee0f6f-e358-4a2e-9527-cd05efb4b162"}},"repository":{"url":"git+https://github.com/danfry1/vitest-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.15.0","description":"Run real React Native tests under Vitest. One install, zero config.","directories":{},"sideEffects":["./dist/setup.cjs","./dist/setup.mjs","./dist/jest-compat/setup.mjs","./dist/native/*.mjs"],"_nodeVersion":"22.13.0","dependencies":{"magic-string":"^0.30.21","flow-remove-types":"^2.304.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.5","react":"^19.2.3","tsdown":"0.21.10","vitest":"^4.1.8","typescript":"5.9.3","@babel/core":"^7.29.7","@types/node":"25.3.5","@types/react":"19.2.14","react-native":"^0.85.3","expo-constants":"56.0.16","expo-status-bar":"56.0.4","@vitest/coverage-v8":"4.1.8","react-test-renderer":"^19.2.3","react-native-worklets":"0.9.1","react-native-reanimated":"4.3.1","@react-navigation/native":"7.2.5","@react-native/babel-preset":"^0.85.3","react-native-gesture-handler":"3.0.0","@testing-library/react-native":"^12.9.0","@react-navigation/native-stack":"7.16.0","react-native-safe-area-context":"5.8.0"},"peerDependencies":{"vite":"^6.4.2 || ^7.3.2 || ^8.0.5","react":">=18","vitest":">=4 <5","@babel/core":"*","@react-native/babel-preset":"*","@testing-library/react-native":">=12 <15"},"peerDependenciesMeta":{"@babel/core":{"optional":true},"@react-native/babel-preset":{"optional":true},"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vitest-native_0.5.0_1781371626503_0.01309996485598397","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"vitest-native","version":"0.6.0","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"author":{"name":"Daniel Fry"},"license":"MIT","_id":"vitest-native@0.6.0","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"homepage":"https://github.com/danfry1/vitest-native#readme","bugs":{"url":"https://github.com/danfry1/vitest-native/issues"},"dist":{"shasum":"23ef14c1928b3c826f3acb4df77eca59e9c44b1d","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.6.0.tgz","fileCount":63,"integrity":"sha512-Wfwjd3LuiqiQxhv1gNitr0NO3/hvceSlcvnSpYxvjidHZRwHeXEtArI2/0fCnAXK1NSvMJtxCwKqX6HtRrjv7g==","signatures":[{"sig":"MEUCIQD2DvvJaGZItrw6EJ/dImvIgaXneGH9hAyrQGN2seHs3wIgca9hIafHPQw/3zwU/qu8bdlSk1ovRUmGVZiwkXibPV8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/vitest-native@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":531654},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./setup":{"import":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"require":{"types":"./dist/setup.d.cts","default":"./dist/setup.cjs"}},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"import":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"require":{"types":"./dist/presets.d.cts","default":"./dist/presets.cjs"}},"./matchers":{"import":{"types":"./dist/matchers.d.mts","default":"./dist/matchers.mjs"},"require":{"types":"./dist/matchers.d.cts","default":"./dist/matchers.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}},"./jest-compat":{"import":{"types":"./dist/jest-compat.d.mts","default":"./dist/jest-compat.mjs"},"require":{"types":"./dist/jest-compat.d.cts","default":"./dist/jest-compat.cjs"}},"./jest-compat/setup":{"types":"./dist/jest-compat/setup.d.mts","import":"./dist/jest-compat/setup.mjs"},"./jest-compat/jest-globals":{"types":"./dist/jest-compat/jest-globals.d.mts","import":"./dist/jest-compat/jest-globals.mjs"},"./jest-compat/extend-expect-noop":{"types":"./dist/jest-compat/noop.d.mts","import":"./dist/jest-compat/noop.mjs"}},"gitHead":"44c217787582444ce7ba050dd3a9ef1c98d08291","scripts":{"lint":"oxlint --deny-warnings src/ tests/ tests-native/ crosscheck/ consumer-tests/ scripts/","test":"vitest run","build":"tsdown","clean":"rm -rf dist","format":"oxfmt --write src/ tests/ consumer-tests/ scripts/","typecheck":"tsc --noEmit","crosscheck":"node scripts/crosscheck.mjs","test:native":"vitest run --config tests-native/vitest.config.mts","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/ consumer-tests/ scripts/","prepublishOnly":"bun run build && bun run test && bun run test:native && bun run test:native:android && bun run test:native:hot && bun run test:native:hot:isolation && bun run test:native:hot:soak && bun run crosscheck && bun run test:consumers && bun run lint && bun run typecheck","test:consumers":"node scripts/test-consumers.mjs","test:native:hot":"vitest run --config tests-native/vitest.hot.config.mts","test:native:android":"vitest run --config tests-native/vitest.android.config.mts","test:native:hot:soak":"node scripts/test-hot-soak.mjs","test:native:hot:isolation":"vitest run --config tests-native/vitest.hot-isolation.config.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danfry","email":"danf@hotmail.co.za"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:41ee0f6f-e358-4a2e-9527-cd05efb4b162"}},"repository":{"url":"git+https://github.com/danfry1/vitest-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.15.0","description":"Run real React Native tests under Vitest. One install, zero config.","directories":{},"sideEffects":["./dist/setup.cjs","./dist/setup.mjs","./dist/jest-compat/setup.mjs","./dist/native/*.mjs"],"_nodeVersion":"22.13.0","dependencies":{"magic-string":"^0.30.21","flow-remove-types":"^2.304.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.5","react":"^19.2.3","tsdown":"0.21.10","vitest":"^4.1.8","typescript":"6.0.3","@babel/core":"^7.29.7","@types/node":"25.3.5","@types/react":"19.2.14","react-native":"^0.85.3","expo-constants":"56.0.16","expo-status-bar":"56.0.4","@vitest/coverage-v8":"4.1.8","react-test-renderer":"^19.2.3","react-native-worklets":"0.9.1","react-native-reanimated":"4.3.1","@react-navigation/native":"7.2.5","@react-native/babel-preset":"^0.85.3","react-native-gesture-handler":"3.0.0","@testing-library/react-native":"^12.9.0","@react-navigation/native-stack":"7.16.0","react-native-safe-area-context":"5.8.0","@react-native-vector-icons/common":"13.0.1","@react-native-vector-icons/material-icons":"13.1.2"},"peerDependencies":{"vite":"^6.4.2 || ^7.3.2 || ^8.0.5","react":">=18","vitest":">=4 <5","@babel/core":"*","@react-native/babel-preset":"*","@testing-library/react-native":">=12 <15"},"peerDependenciesMeta":{"@babel/core":{"optional":true},"@react-native/babel-preset":{"optional":true},"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vitest-native_0.6.0_1781451240491_0.4707669613583296","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"vitest-native","version":"0.6.1","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"author":{"name":"Daniel Fry"},"license":"MIT","_id":"vitest-native@0.6.1","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"homepage":"https://github.com/danfry1/vitest-native#readme","bugs":{"url":"https://github.com/danfry1/vitest-native/issues"},"dist":{"shasum":"5b1bf91e2ed83d1cbcb23e98c4f00e7d9175ff72","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.6.1.tgz","fileCount":63,"integrity":"sha512-8HrjQyhfgG/BWczO7B/vBlCHBCY4bC7hzzmlTVg9XHh74Cohf1oXWjQs4eReAJGtSxyjNoj24ahNYHku+GZ9Ig==","signatures":[{"sig":"MEUCIQDZBzDPbxObSO55DtQx/r5gb3NTrcYmWkQX4VOXhhAY+gIgUmgpzElcH+sHIavR5JLim8zN0/68aMEmYh/TLSDCgjE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/vitest-native@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":534209},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./setup":{"import":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"require":{"types":"./dist/setup.d.cts","default":"./dist/setup.cjs"}},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"import":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"require":{"types":"./dist/presets.d.cts","default":"./dist/presets.cjs"}},"./matchers":{"import":{"types":"./dist/matchers.d.mts","default":"./dist/matchers.mjs"},"require":{"types":"./dist/matchers.d.cts","default":"./dist/matchers.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}},"./jest-compat":{"import":{"types":"./dist/jest-compat.d.mts","default":"./dist/jest-compat.mjs"},"require":{"types":"./dist/jest-compat.d.cts","default":"./dist/jest-compat.cjs"}},"./jest-compat/setup":{"types":"./dist/jest-compat/setup.d.mts","import":"./dist/jest-compat/setup.mjs"},"./jest-compat/jest-globals":{"types":"./dist/jest-compat/jest-globals.d.mts","import":"./dist/jest-compat/jest-globals.mjs"},"./jest-compat/extend-expect-noop":{"types":"./dist/jest-compat/noop.d.mts","import":"./dist/jest-compat/noop.mjs"}},"gitHead":"8ebe480c82bf66fe3f81189ed67be5143f1ff906","scripts":{"lint":"oxlint --deny-warnings src/ tests/ tests-native/ crosscheck/ consumer-tests/ scripts/","test":"vitest run","build":"tsdown","clean":"rm -rf dist","format":"oxfmt --write src/ tests/ consumer-tests/ scripts/","typecheck":"tsc --noEmit","crosscheck":"node scripts/crosscheck.mjs","test:native":"vitest run --config tests-native/vitest.config.mts","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/ consumer-tests/ scripts/","prepublishOnly":"bun run build && bun run test && bun run test:native && bun run test:native:android && bun run test:native:hot && bun run test:native:hot:isolation && bun run test:native:hot:soak && bun run crosscheck && bun run test:consumers && bun run lint && bun run typecheck","test:consumers":"node scripts/test-consumers.mjs","test:native:hot":"vitest run --config tests-native/vitest.hot.config.mts","test:native:android":"vitest run --config tests-native/vitest.android.config.mts","test:native:hot:soak":"node scripts/test-hot-soak.mjs","test:native:hot:isolation":"vitest run --config tests-native/vitest.hot-isolation.config.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danfry","email":"danf@hotmail.co.za"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:41ee0f6f-e358-4a2e-9527-cd05efb4b162"}},"repository":{"url":"git+https://github.com/danfry1/vitest-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.15.0","description":"Run real React Native tests under Vitest. One install, zero config.","directories":{},"sideEffects":["./dist/setup.cjs","./dist/setup.mjs","./dist/jest-compat/setup.mjs","./dist/native/*.mjs"],"_nodeVersion":"22.13.0","dependencies":{"magic-string":"^0.30.21","flow-remove-types":"^2.304.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.5","react":"^19.2.3","tsdown":"0.21.10","vitest":"^4.1.8","typescript":"6.0.3","@babel/core":"^7.29.7","@types/node":"25.3.5","@types/react":"19.2.14","react-native":"^0.85.3","expo-constants":"56.0.16","expo-status-bar":"56.0.4","ext-rn-named-lib":"file:./tests-native/fixtures/ext-rn-named-lib","@vitest/coverage-v8":"4.1.8","react-test-renderer":"^19.2.3","react-native-worklets":"0.9.1","react-native-reanimated":"4.3.1","@react-navigation/native":"7.2.5","@react-native/babel-preset":"^0.85.3","react-native-gesture-handler":"3.0.0","@testing-library/react-native":"^12.9.0","@react-navigation/native-stack":"7.16.0","react-native-safe-area-context":"5.8.0","@react-native-vector-icons/common":"13.0.1","@react-native-vector-icons/material-icons":"13.1.2"},"peerDependencies":{"vite":"^6.4.2 || ^7.3.2 || ^8.0.5","react":">=18","vitest":">=4 <5","@babel/core":"*","@react-native/babel-preset":"*","@testing-library/react-native":">=12 <15"},"peerDependenciesMeta":{"@babel/core":{"optional":true},"@react-native/babel-preset":{"optional":true},"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vitest-native_0.6.1_1781454802636_0.9415662138448226","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"vitest-native","version":"0.7.0","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"author":{"name":"Daniel Fry"},"license":"MIT","_id":"vitest-native@0.7.0","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"homepage":"https://github.com/danfry1/vitest-native#readme","bugs":{"url":"https://github.com/danfry1/vitest-native/issues"},"dist":{"shasum":"c561b25a70246aae68def4b9e8ac37bcb614c90f","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.7.0.tgz","fileCount":63,"integrity":"sha512-YkwgJAd3nGp24xsnORVCQtyfw/2B2bJzulg5OXRagoYVD7YZ74zqYQXZArwOVprGR+cTsOoecVKZXWXDEhbHzA==","signatures":[{"sig":"MEUCIQD+5nS6KJQ6nX2IiOkSV3omVlnoHmxboxLGYWgDRkN/7gIgOYrcs1LqmKWLkrQnNlVLbF63hE6FvK3XPxuCxn34Wn8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/vitest-native@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":548522},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./setup":{"import":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"require":{"types":"./dist/setup.d.cts","default":"./dist/setup.cjs"}},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"import":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"require":{"types":"./dist/presets.d.cts","default":"./dist/presets.cjs"}},"./matchers":{"import":{"types":"./dist/matchers.d.mts","default":"./dist/matchers.mjs"},"require":{"types":"./dist/matchers.d.cts","default":"./dist/matchers.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}},"./jest-compat":{"import":{"types":"./dist/jest-compat.d.mts","default":"./dist/jest-compat.mjs"},"require":{"types":"./dist/jest-compat.d.cts","default":"./dist/jest-compat.cjs"}},"./jest-compat/setup":{"types":"./dist/jest-compat/setup.d.mts","import":"./dist/jest-compat/setup.mjs"},"./jest-compat/jest-globals":{"types":"./dist/jest-compat/jest-globals.d.mts","import":"./dist/jest-compat/jest-globals.mjs"},"./jest-compat/extend-expect-noop":{"types":"./dist/jest-compat/noop.d.mts","import":"./dist/jest-compat/noop.mjs"}},"gitHead":"e7353f0c118fd3b345cf80a96c1bbc1554cb1c01","scripts":{"lint":"oxlint --deny-warnings src/ tests/ tests-native/ crosscheck/ consumer-tests/ scripts/","test":"vitest run","build":"tsdown","clean":"rm -rf dist","format":"oxfmt --write src/ tests/ consumer-tests/ scripts/","typecheck":"tsc --noEmit","crosscheck":"node scripts/crosscheck.mjs","test:native":"vitest run --config tests-native/vitest.config.mts","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/ consumer-tests/ scripts/","prepublishOnly":"bun run build && bun run test && bun run test:native && bun run test:native:navigation && bun run test:native:android && bun run test:native:hot && bun run test:native:hot:isolation && bun run test:native:hot:soak && bun run crosscheck && bun run test:consumers && bun run lint && bun run typecheck","test:consumers":"node scripts/test-consumers.mjs","test:native:hot":"vitest run --config tests-native/vitest.hot.config.mts","test:native:android":"vitest run --config tests-native/vitest.android.config.mts","test:native:hot:soak":"node scripts/test-hot-soak.mjs","test:native:navigation":"vitest run --config tests-native/vitest.navigation.config.mts","test:native:hot:isolation":"vitest run --config tests-native/vitest.hot-isolation.config.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danfry","email":"danf@hotmail.co.za"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:41ee0f6f-e358-4a2e-9527-cd05efb4b162"}},"repository":{"url":"git+https://github.com/danfry1/vitest-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.15.0","description":"Run real React Native tests under Vitest. One install, zero config.","directories":{},"sideEffects":["./dist/setup.cjs","./dist/setup.mjs","./dist/jest-compat/setup.mjs","./dist/native/*.mjs"],"_nodeVersion":"22.13.0","dependencies":{"magic-string":"^0.30.21","flow-remove-types":"^2.304.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.5","react":"^19.2.3","tsdown":"0.21.10","vitest":"^4.1.8","typescript":"6.0.3","@babel/core":"^7.29.7","@types/node":"25.3.5","@types/react":"19.2.14","react-native":"^0.85.3","expo-constants":"56.0.16","expo-status-bar":"56.0.4","ext-platform-lib":"file:./tests-native/fixtures/ext-platform-lib","ext-rn-named-lib":"file:./tests-native/fixtures/ext-rn-named-lib","@vitest/coverage-v8":"4.1.8","react-test-renderer":"^19.2.3","react-native-worklets":"0.9.1","react-native-reanimated":"4.3.1","@react-navigation/native":"7.2.5","@react-native/babel-preset":"^0.85.3","react-native-gesture-handler":"3.0.0","@testing-library/react-native":"^12.9.0","@react-navigation/native-stack":"7.16.0","react-native-safe-area-context":"5.8.0","@react-native-vector-icons/common":"13.0.1","@react-native-vector-icons/material-icons":"13.1.2"},"peerDependencies":{"vite":"^6.4.2 || ^7.3.2 || ^8.0.5","react":">=18","vitest":">=4 <5","@babel/core":"*","@react-native/babel-preset":"*","@testing-library/react-native":">=12 <15"},"peerDependenciesMeta":{"@babel/core":{"optional":true},"@react-native/babel-preset":{"optional":true},"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vitest-native_0.7.0_1782072173805_0.7051796093789608","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"vitest-native","version":"0.8.0","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"author":{"name":"Daniel Fry"},"license":"MIT","_id":"vitest-native@0.8.0","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"homepage":"https://github.com/danfry1/vitest-native#readme","bugs":{"url":"https://github.com/danfry1/vitest-native/issues"},"dist":{"shasum":"641818e68bff01418699211e1b1a8fdfe27aeab6","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.8.0.tgz","fileCount":64,"integrity":"sha512-5qgJ7V3zFvj1+XgIAbEzf+FAXMNyRyGL6ETDMHrJDmyjzgU7fqqCm0RRFtrxl/qXq3G1G93157AA9nVGIuGPhg==","signatures":[{"sig":"MEYCIQDWNpun3tHQb9gHaBBLQu23WHzhov2m/+vJ5MNpfHCDNAIhANL+osnmH26wE0bZBFD/NeOE7zs+ggfo0Upsd0Vb6RXC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/vitest-native@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":585760},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./setup":{"import":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"require":{"types":"./dist/setup.d.cts","default":"./dist/setup.cjs"}},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"import":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"require":{"types":"./dist/presets.d.cts","default":"./dist/presets.cjs"}},"./matchers":{"import":{"types":"./dist/matchers.d.mts","default":"./dist/matchers.mjs"},"require":{"types":"./dist/matchers.d.cts","default":"./dist/matchers.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}},"./jest-compat":{"import":{"types":"./dist/jest-compat.d.mts","default":"./dist/jest-compat.mjs"},"require":{"types":"./dist/jest-compat.d.cts","default":"./dist/jest-compat.cjs"}},"./jest-compat/setup":{"types":"./dist/jest-compat/setup.d.mts","import":"./dist/jest-compat/setup.mjs"},"./jest-compat/jest-globals":{"types":"./dist/jest-compat/jest-globals.d.mts","import":"./dist/jest-compat/jest-globals.mjs"},"./jest-compat/extend-expect-noop":{"types":"./dist/jest-compat/noop.d.mts","import":"./dist/jest-compat/noop.mjs"}},"gitHead":"04bf9085068c3e220961d185cef6371b537d70eb","scripts":{"lint":"oxlint --deny-warnings src/ tests/ tests-native/ crosscheck/ consumer-tests/ scripts/","test":"vitest run","build":"tsdown","clean":"rm -rf dist","format":"oxfmt --write src/ tests/ consumer-tests/ scripts/","typecheck":"tsc --noEmit","crosscheck":"node scripts/crosscheck.mjs","test:native":"vitest run --config tests-native/vitest.config.mts","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/ consumer-tests/ scripts/","prepublishOnly":"bun run build && bun run test && bun run test:native && bun run test:native:navigation && bun run test:native:android && bun run test:native:hot && bun run test:native:hot:isolation && bun run test:native:hot:soak && bun run crosscheck && bun run test:consumers && bun run lint && bun run typecheck","test:consumers":"node scripts/test-consumers.mjs","test:native:hot":"vitest run --config tests-native/vitest.hot.config.mts","test:native:android":"vitest run --config tests-native/vitest.android.config.mts","test:native:hot:soak":"node scripts/test-hot-soak.mjs","test:native:navigation":"vitest run --config tests-native/vitest.navigation.config.mts","test:native:hot:isolation":"vitest run --config tests-native/vitest.hot-isolation.config.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danfry","email":"danf@hotmail.co.za"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:41ee0f6f-e358-4a2e-9527-cd05efb4b162"}},"repository":{"url":"git+https://github.com/danfry1/vitest-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.15.0","description":"Run real React Native tests under Vitest. One install, zero config.","directories":{},"sideEffects":["./dist/setup.cjs","./dist/setup.mjs","./dist/jest-compat/setup.mjs","./dist/native/*.mjs"],"_nodeVersion":"22.13.0","dependencies":{"magic-string":"^0.30.21","flow-remove-types":"^2.318.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.5","react":"^19.2.3","tsdown":"0.21.10","vitest":"^4.1.8","typescript":"6.0.3","@babel/core":"^7.29.7","@types/node":"25.3.5","@types/react":"19.2.14","react-native":"^0.86.0","test-renderer":"^1.2.0","expo-constants":"56.0.16","expo-status-bar":"56.0.4","ext-platform-lib":"file:./tests-native/fixtures/ext-platform-lib","ext-rn-named-lib":"file:./tests-native/fixtures/ext-rn-named-lib","@shopify/flash-list":"2.3.2","@vitest/coverage-v8":"4.1.8","react-test-renderer":"^19.2.3","@gorhom/bottom-sheet":"5.2.14","react-native-worklets":"0.9.1","react-native-reanimated":"4.3.1","@react-navigation/native":"7.2.5","@react-native/babel-preset":"^0.85.3","react-native-gesture-handler":"3.0.0","@testing-library/react-native":"14.0.0","@react-navigation/native-stack":"7.16.0","react-native-safe-area-context":"5.8.0","react-native-keyboard-controller":"1.21.11","@react-native-vector-icons/common":"13.0.1","@react-native-vector-icons/material-icons":"13.1.2"},"peerDependencies":{"vite":"^6.4.2 || ^7.3.2 || ^8.0.5","react":">=18","vitest":">=4 <5","@babel/core":"*","@react-native/babel-preset":"*","@testing-library/react-native":">=12 <15"},"peerDependenciesMeta":{"@babel/core":{"optional":true},"@react-native/babel-preset":{"optional":true},"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vitest-native_0.8.0_1782474376961_0.22780411909129605","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"vitest-native","version":"0.9.0","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"author":{"name":"Daniel Fry"},"license":"MIT","_id":"vitest-native@0.9.0","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"homepage":"https://github.com/danfry1/vitest-native#readme","bugs":{"url":"https://github.com/danfry1/vitest-native/issues"},"bin":{"vitest-native":"dist/cli.mjs"},"dist":{"shasum":"2b42964a97dbd5cbf8059493faadca15cc4d8081","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.9.0.tgz","fileCount":73,"integrity":"sha512-75oZx1LpeKrfWN7/xADQkMEHvrV5SeTaur9KlStvNOGVxqlijEFAkxbScHLmDQhmEGK4ZnJ4tMYowzGrg9aBCw==","signatures":[{"sig":"MEUCICSKZ05puwEUiHlIMicj/mOyMRkc7qpciQBR7TWy3En9AiEAoq82f+y0Q1ncScvpnWnPOsLYgV/EjmXuBG1uaH3RVSw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/vitest-native@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":780481},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./setup":{"import":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"require":{"types":"./dist/setup.d.cts","default":"./dist/setup.cjs"}},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"import":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"require":{"types":"./dist/presets.d.cts","default":"./dist/presets.cjs"}},"./matchers":{"import":{"types":"./dist/matchers.d.mts","default":"./dist/matchers.mjs"},"require":{"types":"./dist/matchers.d.cts","default":"./dist/matchers.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}},"./jest-compat":{"import":{"types":"./dist/jest-compat.d.mts","default":"./dist/jest-compat.mjs"},"require":{"types":"./dist/jest-compat.d.cts","default":"./dist/jest-compat.cjs"}},"./jest-compat/setup":{"types":"./dist/jest-compat/setup.d.mts","import":"./dist/jest-compat/setup.mjs"},"./jest-compat/jest-globals":{"types":"./dist/jest-compat/jest-globals.d.mts","import":"./dist/jest-compat/jest-globals.mjs"},"./jest-compat/extend-expect-noop":{"types":"./dist/jest-compat/noop.d.mts","import":"./dist/jest-compat/noop.mjs"}},"gitHead":"4a2cd63607d4da0093d88cdb4562dabe34a7cfa2","scripts":{"lint":"oxlint --deny-warnings src/ tests/ tests-native/ crosscheck/ consumer-tests/ scripts/","test":"vitest run","build":"tsdown","clean":"rm -rf dist","format":"oxfmt --write src/ tests/ consumer-tests/ scripts/","typecheck":"tsc --noEmit","check:size":"node scripts/check-package-size.mjs","crosscheck":"node scripts/crosscheck.mjs","test:native":"vitest run --config tests-native/vitest.config.mts","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/ consumer-tests/ scripts/","fidelity:check":"node scripts/fidelity-report.mjs --check && node scripts/fidelity-matrix.mjs --check","prepublishOnly":"bun run build && bun run check:size && bun run test && bun run test:native && bun run test:native:navigation && bun run test:native:android && bun run test:native:hot && bun run test:native:hot:isolation && bun run test:native:hot:soak && bun run fidelity:check && bun run test:consumers && bun run lint && bun run typecheck","test:consumers":"node scripts/test-consumers.mjs","fidelity:report":"node scripts/fidelity-report.mjs","test:native:hot":"vitest run --config tests-native/vitest.hot.config.mts","test:native:android":"vitest run --config tests-native/vitest.android.config.mts","validate:hot-parity":"node validation/idiomatic/scale/run-compare.mjs","test:native:hot:soak":"node scripts/test-hot-soak.mjs","test:native:navigation":"vitest run --config tests-native/vitest.navigation.config.mts","test:native:hot:isolation":"vitest run --config tests-native/vitest.hot-isolation.config.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danfry","email":"danf@hotmail.co.za"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:41ee0f6f-e358-4a2e-9527-cd05efb4b162"}},"repository":{"url":"git+https://github.com/danfry1/vitest-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.15.0","description":"Run real React Native tests under Vitest. One install, zero config.","directories":{},"sideEffects":["./dist/setup.cjs","./dist/setup.mjs","./dist/jest-compat/setup.mjs","./dist/native/*.mjs"],"_nodeVersion":"22.13.0","dependencies":{"magic-string":"^0.30.21","flow-remove-types":"^2.322.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.5","react":"^19.2.3","tsdown":"0.21.10","vitest":"^4.1.8","typescript":"6.0.3","@babel/core":"^7.29.7","@types/node":"25.3.5","@types/react":"19.2.14","react-native":"^0.86.0","test-renderer":"^1.2.0","expo-constants":"56.0.16","expo-status-bar":"56.0.4","ext-platform-lib":"file:./tests-native/fixtures/ext-platform-lib","ext-rn-named-lib":"file:./tests-native/fixtures/ext-rn-named-lib","rn-condition-lib":"file:./tests-native/fixtures/rn-condition-lib","rn-ecosystem-lib":"file:./tests-native/fixtures/rn-ecosystem-lib","rn-mainfield-lib":"file:./tests-native/fixtures/rn-mainfield-lib","@shopify/flash-list":"2.3.2","@vitest/coverage-v8":"4.1.8","react-test-renderer":"^19.2.3","@gorhom/bottom-sheet":"5.2.14","untranspiled-jsx-lib":"file:./tests-native/fixtures/untranspiled-jsx-lib","generic-mainfield-lib":"file:./tests-native/fixtures/generic-mainfield-lib","react-native-worklets":"0.9.1","react-native-reanimated":"4.3.1","@react-navigation/native":"7.2.5","@react-native/babel-preset":"^0.85.3","react-native-gesture-handler":"3.0.0","@testing-library/react-native":"14.0.0","@react-navigation/native-stack":"7.16.0","react-native-safe-area-context":"5.8.0","react-native-keyboard-controller":"1.21.11","@react-native-vector-icons/common":"13.0.1","@react-native-vector-icons/material-icons":"13.1.2"},"peerDependencies":{"vite":"^6.4.2 || ^7.3.2 || ^8.0.5","react":">=18","vitest":">=4 <6","@babel/core":"*","@react-native/babel-preset":"*","@testing-library/react-native":">=12 <15"},"peerDependenciesMeta":{"@babel/core":{"optional":true},"@react-native/babel-preset":{"optional":true},"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vitest-native_0.9.0_1784931606732_0.11930641900444106","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"vitest-native","version":"0.10.0","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"author":{"name":"Daniel Fry"},"license":"MIT","_id":"vitest-native@0.10.0","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"homepage":"https://github.com/danfry1/vitest-native#readme","bugs":{"url":"https://github.com/danfry1/vitest-native/issues"},"bin":{"vitest-native":"dist/cli.mjs"},"dist":{"shasum":"55661ea05bc51074e3acbb4738a386c1e3f6bd55","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.10.0.tgz","fileCount":75,"integrity":"sha512-TRNxh+3X2X62ivDRbR8XHw4q0NmQ+JfVOp/mdA9q94Z53y0NYQIX6GO9pQbyuyj0FGNvhQpUprJEIWM3qCLeTg==","signatures":[{"sig":"MEUCIDhaly1NHqTvZwuqzwCFAisZ/SqaSxDU/qAlBefUQ/AZAiEArYC72/ZQ8cmT07jl3H/eWlE31as8HUQ12OVI5MqmIaA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/vitest-native@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":801662},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./setup":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"./matchers":{"import":{"types":"./dist/matchers.d.mts","default":"./dist/matchers.mjs"},"require":{"types":"./dist/matchers.d.cts","default":"./dist/matchers.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}},"./jest-compat":{"import":{"types":"./dist/jest-compat.d.mts","default":"./dist/jest-compat.mjs"},"require":{"types":"./dist/jest-compat.d.cts","default":"./dist/jest-compat.cjs"}},"./rntl-matchers":{"types":"./dist/rntl-matchers.d.ts"},"./jest-compat/setup":{"types":"./dist/jest-compat/setup.d.mts","import":"./dist/jest-compat/setup.mjs"},"./jest-compat/jest-globals":{"types":"./dist/jest-compat/jest-globals.d.mts","import":"./dist/jest-compat/jest-globals.mjs"},"./jest-compat/extend-expect-noop":{"types":"./dist/jest-compat/noop.d.mts","import":"./dist/jest-compat/noop.mjs"}},"gitHead":"79b1de224d09d122f10aafba1d17110919fe3066","scripts":{"lint":"oxlint --deny-warnings src/ tests/ tests-native/ crosscheck/ consumer-tests/ scripts/","test":"vitest run","build":"tsdown && node scripts/copy-static-types.mjs","clean":"rm -rf dist","format":"oxfmt --write src/ tests/ consumer-tests/ scripts/","typecheck":"tsc --noEmit","check:size":"node scripts/check-package-size.mjs","crosscheck":"node scripts/crosscheck.mjs","test:native":"vitest run --config tests-native/vitest.config.mts","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/ consumer-tests/ scripts/","check:exports":"node scripts/check-exports.mjs","fidelity:check":"node scripts/fidelity-report.mjs --check && node scripts/fidelity-matrix.mjs --check","prepublishOnly":"bun run build && bun run check:size && bun run test && bun run test:native && bun run test:native:forks && bun run test:native:navigation && bun run test:native:android && bun run test:native:advice && bun run test:native:hot && bun run test:native:hot:isolation && bun run test:native:hot:soak && bun run validate:hot-parity && bun run fidelity:check && bun run test:consumers && bun run lint && bun run typecheck","test:consumers":"node scripts/test-consumers.mjs","fidelity:report":"node scripts/fidelity-report.mjs","test:native:hot":"vitest run --config tests-native/vitest.hot.config.mts","test:native:forks":"vitest run --config tests-native/vitest.forks.config.mts","test:native:advice":"vitest run --config tests-native/vitest.advice.config.mts","test:native:android":"vitest run --config tests-native/vitest.android.config.mts","validate:hot-parity":"node validation/idiomatic/scale/run-compare.mjs","test:native:hot:soak":"node scripts/test-hot-soak.mjs","test:native:navigation":"vitest run --config tests-native/vitest.navigation.config.mts","test:native:hot:isolation":"vitest run --config tests-native/vitest.hot-isolation.config.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danfry","email":"danf@hotmail.co.za"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:41ee0f6f-e358-4a2e-9527-cd05efb4b162"}},"repository":{"url":"git+https://github.com/danfry1/vitest-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.15.0","description":"Run real React Native tests under Vitest. One install, zero config.","directories":{},"sideEffects":["./dist/setup.mjs","./dist/jest-compat/setup.mjs","./dist/native/*.mjs"],"_nodeVersion":"22.13.0","dependencies":{"magic-string":"^1.1.0","flow-remove-types":"^2.322.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.5","react":"^19.2.8","tsdown":"0.21.10","vitest":"4.1.9","typescript":"6.0.3","@babel/core":"^7.29.7","@types/node":"25.3.5","@types/react":"19.2.14","react-native":"^0.86.0","test-renderer":"^1.2.0","expo-constants":"56.0.16","expo-status-bar":"56.0.4","ext-platform-lib":"file:./tests-native/fixtures/ext-platform-lib","ext-rn-named-lib":"file:./tests-native/fixtures/ext-rn-named-lib","rn-condition-lib":"file:./tests-native/fixtures/rn-condition-lib","rn-ecosystem-lib":"file:./tests-native/fixtures/rn-ecosystem-lib","rn-mainfield-lib":"file:./tests-native/fixtures/rn-mainfield-lib","rn-singleton-lib":"file:./tests-native/fixtures/rn-singleton-lib","resident-singleton":"file:./tests-native/fixtures/resident-singleton","@shopify/flash-list":"2.3.2","@vitest/coverage-v8":"4.1.9","react-test-renderer":"^19.2.8","@gorhom/bottom-sheet":"5.2.14","rn-platform-flow-lib":"file:./tests-native/fixtures/rn-platform-flow-lib","untranspiled-jsx-lib":"file:./tests-native/fixtures/untranspiled-jsx-lib","generic-mainfield-lib":"file:./tests-native/fixtures/generic-mainfield-lib","react-native-worklets":"0.9.1","react-native-reanimated":"4.3.1","@react-navigation/native":"7.2.5","@react-native/babel-preset":"^0.85.3","react-native-gesture-handler":"3.0.0","@testing-library/react-native":"14.0.0","@react-navigation/native-stack":"7.16.0","react-native-safe-area-context":"5.8.0","react-native-keyboard-controller":"1.21.11","@react-native-vector-icons/common":"13.0.1","@react-native-vector-icons/material-icons":"13.1.2"},"peerDependencies":{"vite":"^6.4.2 || ^7.3.2 || ^8.0.5","react":">=18","vitest":">=4 <6","@babel/core":"*","@react-native/babel-preset":"*","@testing-library/react-native":">=12 <15"},"peerDependenciesMeta":{"@babel/core":{"optional":true},"@react-native/babel-preset":{"optional":true},"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vitest-native_0.10.0_1786287907254_0.03284391034830536","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"vitest-native","version":"0.11.0","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"author":{"name":"Daniel Fry"},"license":"MIT","_id":"vitest-native@0.11.0","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"homepage":"https://github.com/danfry1/vitest-native#readme","bugs":{"url":"https://github.com/danfry1/vitest-native/issues"},"bin":{"vitest-native":"dist/cli.mjs"},"dist":{"shasum":"c3373372aa893e6bac511d671245211b1e3b874a","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.11.0.tgz","fileCount":76,"integrity":"sha512-bodnKnGGZnCYmvYSFnhgf8gWvlNGZ9Vblgh767weIXiuhOKVxpKaUJ9qKGpR+A+yz92RTKC5CmRcafPVMy+Czw==","signatures":[{"sig":"MEYCIQDYpYdcF/FGTiPZj/RWML9jzllRw/6YoMpsY/PkfKAgiwIhAPDpehmWL5+MAruCDhR0BGfuj1nYY3SJEeXMlXN3xYiy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/vitest-native@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":851815},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./setup":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"./matchers":{"import":{"types":"./dist/matchers.d.mts","default":"./dist/matchers.mjs"},"require":{"types":"./dist/matchers.d.cts","default":"./dist/matchers.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}},"./jest-compat":{"import":{"types":"./dist/jest-compat.d.mts","default":"./dist/jest-compat.mjs"},"require":{"types":"./dist/jest-compat.d.cts","default":"./dist/jest-compat.cjs"}},"./rntl-matchers":{"types":"./dist/rntl-matchers.d.ts"},"./jest-compat/setup":{"types":"./dist/jest-compat/setup.d.mts","import":"./dist/jest-compat/setup.mjs"},"./jest-compat/jest-globals":{"types":"./dist/jest-compat/jest-globals.d.mts","import":"./dist/jest-compat/jest-globals.mjs"},"./jest-compat/extend-expect-noop":{"types":"./dist/jest-compat/noop.d.mts","import":"./dist/jest-compat/noop.mjs"}},"gitHead":"1675ff2bc637e81aa1cafe723d79dd4b94385b2c","scripts":{"lint":"oxlint --deny-warnings src/ tests/ tests-native/ crosscheck/ consumer-tests/ scripts/","test":"vitest run","build":"bunx --bun tsdown && node scripts/copy-static-types.mjs","clean":"rm -rf dist","format":"oxfmt --write src/ tests/ consumer-tests/ scripts/","typecheck":"tsc --noEmit","check:size":"node scripts/check-package-size.mjs","crosscheck":"node scripts/crosscheck.mjs","test:native":"vitest run --config tests-native/vitest.config.mts","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/ consumer-tests/ scripts/","check:exports":"node scripts/check-exports.mjs","fidelity:check":"node scripts/fidelity-report.mjs --check && node scripts/fidelity-matrix.mjs --check","prepublishOnly":"bun run build && bun run check:size && bun run test && bun run test:native && bun run test:native:forks && bun run test:native:navigation && bun run test:native:android && bun run test:native:advice && bun run test:native:hot && bun run test:native:hot:isolation && bun run test:native:hot:soak && bun run validate:hot-parity && bun run fidelity:check && bun run test:consumers && bun run lint && bun run typecheck","test:consumers":"node scripts/test-consumers.mjs","fidelity:report":"node scripts/fidelity-report.mjs","test:native:hot":"vitest run --config tests-native/vitest.hot.config.mts","test:native:forks":"vitest run --config tests-native/vitest.forks.config.mts","test:native:advice":"vitest run --config tests-native/vitest.advice.config.mts","test:native:android":"vitest run --config tests-native/vitest.android.config.mts","validate:hot-parity":"node validation/idiomatic/scale/run-compare.mjs","test:native:hot:soak":"node scripts/test-hot-soak.mjs","test:native:navigation":"vitest run --config tests-native/vitest.navigation.config.mts","test:native:hot:isolation":"vitest run --config tests-native/vitest.hot-isolation.config.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danfry","email":"danf@hotmail.co.za"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:41ee0f6f-e358-4a2e-9527-cd05efb4b162"}},"repository":{"url":"git+https://github.com/danfry1/vitest-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.15.0","description":"Run real React Native tests under Vitest. One install, zero config.","directories":{},"sideEffects":["./dist/setup.mjs","./dist/jest-compat/setup.mjs","./dist/native/*.mjs"],"_nodeVersion":"22.13.0","dependencies":{"magic-string":"^1.1.0","flow-remove-types":"^2.325.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","react":"^19.2.8","tsdown":"0.22.14","vitest":"4.1.10","typescript":"6.0.3","@babel/core":"^7.29.7","@types/node":"25.3.5","@types/react":"19.2.18","react-native":"^0.86.0","test-renderer":"^1.2.0","expo-constants":"56.0.16","expo-status-bar":"56.0.4","ext-platform-lib":"file:./tests-native/fixtures/ext-platform-lib","ext-rn-named-lib":"file:./tests-native/fixtures/ext-rn-named-lib","rn-condition-lib":"file:./tests-native/fixtures/rn-condition-lib","rn-ecosystem-lib":"file:./tests-native/fixtures/rn-ecosystem-lib","rn-mainfield-lib":"file:./tests-native/fixtures/rn-mainfield-lib","rn-singleton-lib":"file:./tests-native/fixtures/rn-singleton-lib","resident-singleton":"file:./tests-native/fixtures/resident-singleton","@shopify/flash-list":"2.3.2","@vitest/coverage-v8":"4.1.10","react-test-renderer":"^19.2.8","@gorhom/bottom-sheet":"5.2.14","rn-condition-cjs-lib":"file:./tests-native/fixtures/rn-condition-cjs-lib","rn-platform-flow-lib":"file:./tests-native/fixtures/rn-platform-flow-lib","untranspiled-jsx-lib":"file:./tests-native/fixtures/untranspiled-jsx-lib","generic-mainfield-lib":"file:./tests-native/fixtures/generic-mainfield-lib","react-native-worklets":"0.11.3","react-native-reanimated":"4.5.3","@react-navigation/native":"7.3.14","@react-native/babel-preset":"^0.86.2","react-native-gesture-handler":"3.1.0","@testing-library/react-native":"14.0.0","@react-navigation/native-stack":"7.18.6","react-native-safe-area-context":"5.8.0","@react-native-community/netinfo":"12.0.1","react-native-keyboard-controller":"1.22.2","@react-native-vector-icons/common":"13.0.1","@react-native-vector-icons/material-icons":"13.1.2"},"peerDependencies":{"vite":"^6.4.2 || ^7.3.2 || ^8.0.5","react":">=18","vitest":">=4 <6","@babel/core":"*","@react-native/babel-preset":"*","@testing-library/react-native":">=12 <15"},"peerDependenciesMeta":{"@babel/core":{"optional":true},"@react-native/babel-preset":{"optional":true},"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vitest-native_0.11.0_1786400618873_0.003328844870907899","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"vitest-native","version":"0.11.1","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"author":{"name":"Daniel Fry"},"license":"MIT","_id":"vitest-native@0.11.1","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"homepage":"https://github.com/danfry1/vitest-native#readme","bugs":{"url":"https://github.com/danfry1/vitest-native/issues"},"bin":{"vitest-native":"dist/cli.mjs"},"dist":{"shasum":"15ef4b8c9b8f5c7cce126c15282300a0b6d5b249","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.11.1.tgz","fileCount":76,"integrity":"sha512-KDYPs1Kpvei1/GCY0TKlqlZJ3l/afLH2i74aXMNACOfTRc2jtbc8rkqLpE/mazKiqBaucc5Yih3hj+dYO97G5Q==","signatures":[{"sig":"MEUCIGrcm7ozGheSUoQzUAFD4NGp5kJ61aManpXH+3niaiBxAiEA0Wmega7QXYIPsZcRt7ODRAxgiVKYhko4fsVyxj2iYtA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/vitest-native@0.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":860289},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./setup":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"./matchers":{"import":{"types":"./dist/matchers.d.mts","default":"./dist/matchers.mjs"},"require":{"types":"./dist/matchers.d.cts","default":"./dist/matchers.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}},"./jest-compat":{"import":{"types":"./dist/jest-compat.d.mts","default":"./dist/jest-compat.mjs"},"require":{"types":"./dist/jest-compat.d.cts","default":"./dist/jest-compat.cjs"}},"./rntl-matchers":{"types":"./dist/rntl-matchers.d.ts"},"./jest-compat/setup":{"types":"./dist/jest-compat/setup.d.mts","import":"./dist/jest-compat/setup.mjs"},"./jest-compat/jest-globals":{"types":"./dist/jest-compat/jest-globals.d.mts","import":"./dist/jest-compat/jest-globals.mjs"},"./jest-compat/extend-expect-noop":{"types":"./dist/jest-compat/noop.d.mts","import":"./dist/jest-compat/noop.mjs"}},"gitHead":"828519ca8b2b07ef1ded94303f13ddac372455ce","scripts":{"lint":"oxlint --deny-warnings src/ tests/ tests-native/ crosscheck/ consumer-tests/ scripts/","test":"vitest run","build":"bunx --bun tsdown && node scripts/copy-static-types.mjs","clean":"rm -rf dist","format":"oxfmt --write src/ tests/ consumer-tests/ scripts/","typecheck":"tsc --noEmit","check:size":"node scripts/check-package-size.mjs","crosscheck":"node scripts/crosscheck.mjs","test:native":"vitest run --config tests-native/vitest.config.mts","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/ consumer-tests/ scripts/","check:exports":"node scripts/check-exports.mjs","fidelity:check":"node scripts/fidelity-report.mjs --check && node scripts/fidelity-matrix.mjs --check","prepublishOnly":"bun run build && bun run check:size && bun run test && bun run test:native && bun run test:native:forks && bun run test:native:navigation && bun run test:native:android && bun run test:native:advice && bun run test:native:hot && bun run test:native:hot:isolation && bun run test:native:hot:soak && bun run validate:hot-parity && bun run fidelity:check && bun run test:consumers && bun run lint && bun run typecheck","test:consumers":"node scripts/test-consumers.mjs","fidelity:report":"node scripts/fidelity-report.mjs","test:native:hot":"vitest run --config tests-native/vitest.hot.config.mts","test:native:forks":"vitest run --config tests-native/vitest.forks.config.mts","test:native:advice":"vitest run --config tests-native/vitest.advice.config.mts","test:native:android":"vitest run --config tests-native/vitest.android.config.mts","validate:hot-parity":"node validation/idiomatic/scale/run-compare.mjs","test:native:hot:soak":"node scripts/test-hot-soak.mjs","test:native:navigation":"vitest run --config tests-native/vitest.navigation.config.mts","test:native:hot:isolation":"vitest run --config tests-native/vitest.hot-isolation.config.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danfry","email":"danf@hotmail.co.za"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:41ee0f6f-e358-4a2e-9527-cd05efb4b162"}},"repository":{"url":"git+https://github.com/danfry1/vitest-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.15.0","description":"Run real React Native tests under Vitest. One install, zero config.","directories":{},"sideEffects":["./dist/setup.mjs","./dist/jest-compat/setup.mjs","./dist/native/*.mjs"],"_nodeVersion":"22.13.0","dependencies":{"magic-string":"^1.1.0","flow-remove-types":"^2.325.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","react":"^19.2.8","tsdown":"0.22.14","vitest":"4.1.10","typescript":"6.0.3","@babel/core":"^7.29.7","@types/node":"25.3.5","@types/react":"19.2.18","react-native":"^0.86.0","test-renderer":"^1.2.0","expo-constants":"56.0.16","expo-status-bar":"56.0.4","ext-platform-lib":"file:./tests-native/fixtures/ext-platform-lib","ext-rn-named-lib":"file:./tests-native/fixtures/ext-rn-named-lib","rn-condition-lib":"file:./tests-native/fixtures/rn-condition-lib","rn-ecosystem-lib":"file:./tests-native/fixtures/rn-ecosystem-lib","rn-mainfield-lib":"file:./tests-native/fixtures/rn-mainfield-lib","rn-singleton-lib":"file:./tests-native/fixtures/rn-singleton-lib","resident-singleton":"file:./tests-native/fixtures/resident-singleton","@shopify/flash-list":"2.3.2","@vitest/coverage-v8":"4.1.10","react-test-renderer":"^19.2.8","@gorhom/bottom-sheet":"5.2.14","rn-condition-cjs-lib":"file:./tests-native/fixtures/rn-condition-cjs-lib","rn-platform-flow-lib":"file:./tests-native/fixtures/rn-platform-flow-lib","untranspiled-jsx-lib":"file:./tests-native/fixtures/untranspiled-jsx-lib","generic-mainfield-lib":"file:./tests-native/fixtures/generic-mainfield-lib","react-native-worklets":"0.11.3","react-native-reanimated":"4.5.3","@react-navigation/native":"7.3.14","@react-native/babel-preset":"^0.86.2","react-native-gesture-handler":"3.1.0","@testing-library/react-native":"14.0.0","@react-navigation/native-stack":"7.18.6","react-native-safe-area-context":"5.8.0","@react-native-community/netinfo":"12.0.1","react-native-keyboard-controller":"1.22.2","@react-native-vector-icons/common":"13.0.1","@react-native-vector-icons/material-icons":"13.1.2"},"peerDependencies":{"vite":"^6.4.2 || ^7.3.2 || ^8.0.5","react":">=18","vitest":">=4 <6","@babel/core":"*","@react-native/babel-preset":"*","@testing-library/react-native":">=12 <15"},"peerDependenciesMeta":{"@babel/core":{"optional":true},"@react-native/babel-preset":{"optional":true},"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vitest-native_0.11.1_1786998316635_0.4580460052518702","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"vitest-native","version":"0.12.0","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"author":{"name":"Daniel Fry"},"license":"MIT","_id":"vitest-native@0.12.0","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"homepage":"https://github.com/danfry1/vitest-native#readme","bugs":{"url":"https://github.com/danfry1/vitest-native/issues"},"bin":{"vitest-native":"dist/cli.mjs"},"dist":{"shasum":"ea03d5e91bd7cf9576bcefd709f11b9a75ea2348","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.12.0.tgz","fileCount":76,"integrity":"sha512-dO5AW9YpClQtPuRgRFdGmg8XaEpqgHMN8o4tdTbNJ0uFU1UcXbvqtmN+LxbLgOKevsO8q2v+ohq+jQIiR8zyoA==","signatures":[{"sig":"MEQCID3Xwkgiwv57LpxFeh6j+M4khYyB8o2tdb6cX/5145JRAiButpr5d6iXqm66E+e2FqK0edEIcuR44FIVWu/QLeEwBQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/vitest-native@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":897687},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./setup":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"./matchers":{"import":{"types":"./dist/matchers.d.mts","default":"./dist/matchers.mjs"},"require":{"types":"./dist/matchers.d.cts","default":"./dist/matchers.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}},"./jest-compat":{"import":{"types":"./dist/jest-compat.d.mts","default":"./dist/jest-compat.mjs"},"require":{"types":"./dist/jest-compat.d.cts","default":"./dist/jest-compat.cjs"}},"./rntl-matchers":{"types":"./dist/rntl-matchers.d.ts"},"./jest-compat/setup":{"types":"./dist/jest-compat/setup.d.mts","import":"./dist/jest-compat/setup.mjs"},"./jest-compat/jest-globals":{"types":"./dist/jest-compat/jest-globals.d.mts","import":"./dist/jest-compat/jest-globals.mjs"},"./jest-compat/extend-expect-noop":{"types":"./dist/jest-compat/noop.d.mts","import":"./dist/jest-compat/noop.mjs"}},"gitHead":"7a1c269091c200b979f4a2be6e4b5f0279eff70c","scripts":{"lint":"oxlint --deny-warnings src/ tests/ tests-native/ crosscheck/ consumer-tests/ scripts/","test":"vitest run","build":"bunx --bun tsdown && node scripts/copy-static-types.mjs","clean":"rm -rf dist","format":"oxfmt --write src/ tests/ consumer-tests/ scripts/","typecheck":"tsc --noEmit","check:size":"node scripts/check-package-size.mjs","crosscheck":"node scripts/crosscheck.mjs","test:native":"vitest run --config tests-native/vitest.config.mts","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/ consumer-tests/ scripts/","check:exports":"node scripts/check-exports.mjs","fidelity:check":"node scripts/fidelity-report.mjs --check && node scripts/fidelity-matrix.mjs --check","prepublishOnly":"bun run build && bun run check:size && bun run test && bun run test:native && bun run test:native:forks && bun run test:native:navigation && bun run test:native:android && bun run test:native:advice && bun run test:native:hot && bun run test:native:hot:isolation && bun run test:native:hot:soak && bun run validate:hot-parity && bun run fidelity:check && bun run test:consumers && bun run lint && bun run typecheck","test:consumers":"node scripts/test-consumers.mjs","fidelity:report":"node scripts/fidelity-report.mjs","test:native:hot":"vitest run --config tests-native/vitest.hot.config.mts","test:native:forks":"vitest run --config tests-native/vitest.forks.config.mts","test:native:advice":"vitest run --config tests-native/vitest.advice.config.mts","test:native:android":"vitest run --config tests-native/vitest.android.config.mts","validate:hot-parity":"node validation/idiomatic/scale/run-compare.mjs","test:native:hot:soak":"node scripts/test-hot-soak.mjs","test:native:navigation":"vitest run --config tests-native/vitest.navigation.config.mts","test:native:hot:isolation":"vitest run --config tests-native/vitest.hot-isolation.config.mts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danfry","email":"danf@hotmail.co.za"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:41ee0f6f-e358-4a2e-9527-cd05efb4b162"}},"repository":{"url":"git+https://github.com/danfry1/vitest-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.15.0","description":"Run real React Native tests under Vitest. One install, zero config.","directories":{},"sideEffects":["./dist/setup.mjs","./dist/jest-compat/setup.mjs","./dist/native/*.mjs"],"_nodeVersion":"22.13.0","dependencies":{"magic-string":"^1.1.0","flow-remove-types":"^2.325.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","react":"^19.2.8","tsdown":"0.22.14","vitest":"4.1.10","typescript":"6.0.3","@babel/core":"^7.29.7","@types/node":"25.3.5","@types/react":"19.2.18","react-native":"^0.86.0","test-renderer":"^1.2.0","expo-constants":"56.0.16","metro-resolver":"0.87.0","expo-status-bar":"56.0.4","ext-platform-lib":"file:./tests-native/fixtures/ext-platform-lib","ext-rn-named-lib":"file:./tests-native/fixtures/ext-rn-named-lib","rn-condition-lib":"file:./tests-native/fixtures/rn-condition-lib","rn-ecosystem-lib":"file:./tests-native/fixtures/rn-ecosystem-lib","rn-mainfield-lib":"file:./tests-native/fixtures/rn-mainfield-lib","rn-singleton-lib":"file:./tests-native/fixtures/rn-singleton-lib","resident-singleton":"file:./tests-native/fixtures/resident-singleton","@shopify/flash-list":"2.3.2","@vitest/coverage-v8":"4.1.10","react-test-renderer":"^19.2.8","@gorhom/bottom-sheet":"5.2.14","rn-condition-cjs-lib":"file:./tests-native/fixtures/rn-condition-cjs-lib","rn-platform-flow-lib":"file:./tests-native/fixtures/rn-platform-flow-lib","untranspiled-jsx-lib":"file:./tests-native/fixtures/untranspiled-jsx-lib","generic-mainfield-lib":"file:./tests-native/fixtures/generic-mainfield-lib","react-native-worklets":"0.11.3","react-native-reanimated":"4.5.3","@react-navigation/native":"7.3.14","@react-native/babel-preset":"^0.86.2","react-native-gesture-handler":"3.1.0","@testing-library/react-native":"14.0.0","@react-navigation/native-stack":"7.18.6","react-native-safe-area-context":"5.8.0","@react-native-community/netinfo":"12.0.1","react-native-keyboard-controller":"1.22.2","@react-native-vector-icons/common":"13.0.1","@react-native-vector-icons/material-icons":"13.1.2"},"peerDependencies":{"vite":"^6.4.2 || ^7.3.2 || ^8.0.5","react":">=18","vitest":">=4 <6","@babel/core":"*","@react-native/babel-preset":"*","@testing-library/react-native":">=12 <15"},"peerDependenciesMeta":{"@babel/core":{"optional":true},"@react-native/babel-preset":{"optional":true},"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vitest-native_0.12.0_1786998326700_0.16628026990016664","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"_id":"vitest-native@0.13.0","bin":{"vitest-native":"dist/cli.mjs"},"bugs":{"url":"https://github.com/danfry1/vitest-native/issues"},"dist":{"shasum":"f143946deaa1cce0335f317ce9a3a61bc69247ef","tarball":"https://registry.npmjs.org/vitest-native/-/vitest-native-0.13.0.tgz","integrity":"sha512-ofQqWjGwM8kOD97IckYdF6PNJj2vaRivtt9n8ZJq/ptxIuezJkDqc+Tb16A/VixWiJg70tli74+otVTmdypUOw==","fileCount":76,"unpackedSize":911017,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/vitest-native@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBksrpagvB73BEmPysoC3xYD/E/MAQx75gF79eMpGQBtAiBgy3PkznNV8OGEhQ+kaiBpqfed82+aFiDpzavuxU+v4g=="}]},"main":"./dist/index.mjs","name":"vitest-native","type":"module","types":"./dist/index.d.mts","author":{"name":"Daniel Fry"},"module":"./dist/index.mjs","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./setup":{"types":"./dist/setup.d.mts","default":"./dist/setup.mjs"},"./helpers":{"import":{"types":"./dist/helpers.d.mts","default":"./dist/helpers.mjs"},"require":{"types":"./dist/helpers.d.cts","default":"./dist/helpers.cjs"}},"./presets":{"types":"./dist/presets.d.mts","default":"./dist/presets.mjs"},"./matchers":{"import":{"types":"./dist/matchers.d.mts","default":"./dist/matchers.mjs"},"require":{"types":"./dist/matchers.d.cts","default":"./dist/matchers.cjs"}},"./serializer":{"import":{"types":"./dist/serializer.d.mts","default":"./dist/serializer.mjs"},"require":{"types":"./dist/serializer.d.cts","default":"./dist/serializer.cjs"}},"./jest-compat":{"import":{"types":"./dist/jest-compat.d.mts","default":"./dist/jest-compat.mjs"},"require":{"types":"./dist/jest-compat.d.cts","default":"./dist/jest-compat.cjs"}},"./rntl-matchers":{"types":"./dist/rntl-matchers.d.ts"},"./jest-compat/setup":{"types":"./dist/jest-compat/setup.d.mts","import":"./dist/jest-compat/setup.mjs"},"./jest-compat/jest-globals":{"types":"./dist/jest-compat/jest-globals.d.mts","import":"./dist/jest-compat/jest-globals.mjs"},"./jest-compat/extend-expect-noop":{"types":"./dist/jest-compat/noop.d.mts","import":"./dist/jest-compat/noop.mjs"}},"gitHead":"33bb64807a7b0719d5818757747e10d5bbc0f1f8","license":"MIT","scripts":{"lint":"oxlint --deny-warnings src/ tests/ tests-native/ crosscheck/ consumer-tests/ scripts/","test":"vitest run","build":"bunx --bun tsdown && node scripts/copy-static-types.mjs","clean":"rm -rf dist","format":"oxfmt --write src/ tests/ consumer-tests/ scripts/","typecheck":"tsc --noEmit","check:size":"node scripts/check-package-size.mjs","crosscheck":"node scripts/crosscheck.mjs","test:native":"vitest run --config tests-native/vitest.config.mts","check-compat":"bun scripts/check-compat.ts","format:check":"oxfmt --check src/ tests/ consumer-tests/ scripts/","check:exports":"node scripts/check-exports.mjs","fidelity:check":"node scripts/fidelity-report.mjs --check && node scripts/fidelity-matrix.mjs --check","prepublishOnly":"bun run build && bun run check:size && bun run test && bun run test:native && bun run test:native:forks && bun run test:native:navigation && bun run test:native:android && bun run test:native:advice && bun run test:native:hot && bun run test:native:hot:isolation && bun run test:native:hot:soak && bun run validate:hot-parity && bun run fidelity:check && bun run test:consumers && bun run lint && bun run typecheck","test:consumers":"node scripts/test-consumers.mjs","fidelity:report":"node scripts/fidelity-report.mjs","test:native:hot":"vitest run --config tests-native/vitest.hot.config.mts","test:native:forks":"vitest run --config tests-native/vitest.forks.config.mts","test:native:advice":"vitest run --config tests-native/vitest.advice.config.mts","test:native:android":"vitest run --config tests-native/vitest.android.config.mts","validate:hot-parity":"node validation/idiomatic/scale/run-compare.mjs","test:native:hot:soak":"node scripts/test-hot-soak.mjs","test:native:navigation":"vitest run --config tests-native/vitest.navigation.config.mts","test:native:hot:isolation":"vitest run --config tests-native/vitest.hot-isolation.config.mts"},"version":"0.13.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:41ee0f6f-e358-4a2e-9527-cd05efb4b162"},"approver":{"name":"danfry","email":"danf@hotmail.co.za"}},"homepage":"https://github.com/danfry1/vitest-native#readme","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"repository":{"url":"git+https://github.com/danfry1/vitest-native.git","type":"git","directory":"packages/vitest-native"},"_npmVersion":"11.15.0","description":"Run real React Native tests under Vitest. One install, zero config.","directories":{},"maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"sideEffects":["./dist/setup.mjs","./dist/jest-compat/setup.mjs","./dist/native/*.mjs"],"_nodeVersion":"22.13.0","dependencies":{"magic-string":"^1.1.0","flow-remove-types":"^2.325.0"},"publishConfig":{"access":"public"},"devDependencies":{"vite":"^8.2.0","react":"^19.2.8","tsdown":"0.22.14","vitest":"4.1.10","typescript":"6.0.3","@babel/core":"^7.29.7","@types/node":"25.3.5","@types/react":"19.2.18","react-native":"0.87.0","test-renderer":"^1.2.0","expo-constants":"56.0.16","metro-resolver":"0.87.0","expo-status-bar":"56.0.4","ext-platform-lib":"file:./tests-native/fixtures/ext-platform-lib","ext-rn-named-lib":"file:./tests-native/fixtures/ext-rn-named-lib","rn-condition-lib":"file:./tests-native/fixtures/rn-condition-lib","rn-ecosystem-lib":"file:./tests-native/fixtures/rn-ecosystem-lib","rn-mainfield-lib":"file:./tests-native/fixtures/rn-mainfield-lib","rn-singleton-lib":"file:./tests-native/fixtures/rn-singleton-lib","resident-singleton":"file:./tests-native/fixtures/resident-singleton","@shopify/flash-list":"2.3.2","@vitest/coverage-v8":"4.1.10","react-test-renderer":"^19.2.8","@gorhom/bottom-sheet":"5.2.14","rn-condition-cjs-lib":"file:./tests-native/fixtures/rn-condition-cjs-lib","rn-platform-flow-lib":"file:./tests-native/fixtures/rn-platform-flow-lib","untranspiled-jsx-lib":"file:./tests-native/fixtures/untranspiled-jsx-lib","generic-mainfield-lib":"file:./tests-native/fixtures/generic-mainfield-lib","react-native-worklets":"0.11.3","react-native-reanimated":"4.5.3","@react-navigation/native":"7.3.14","@react-native/babel-preset":"0.87.0","react-native-gesture-handler":"3.1.0","@testing-library/react-native":"14.0.0","@react-navigation/native-stack":"7.18.6","react-native-safe-area-context":"5.8.0","@react-native-community/netinfo":"12.0.1","react-native-keyboard-controller":"1.22.2","@react-native-vector-icons/common":"13.0.1","@react-native-vector-icons/material-icons":"13.1.2"},"peerDependencies":{"vite":"^6.4.2 || ^7.3.2 || ^8.0.5","react":">=18","vitest":">=4 <6","@babel/core":"*","@react-native/babel-preset":"*","@testing-library/react-native":">=12 <15"},"peerDependenciesMeta":{"@babel/core":{"optional":true},"@react-native/babel-preset":{"optional":true},"@testing-library/react-native":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vitest-native_0.13.0_1787085815608_0.9962580992077061"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-07T20:48:33.193Z","modified":"2026-08-18T20:43:36.026Z","0.1.0":"2026-03-07T20:48:33.493Z","0.1.1":"2026-03-07T20:52:54.989Z","0.1.2":"2026-03-07T20:55:59.394Z","0.1.3":"2026-03-07T21:56:51.810Z","0.2.0":"2026-03-08T13:04:32.085Z","0.2.1":"2026-03-08T14:03:45.313Z","0.3.0":"2026-03-10T21:45:40.670Z","0.4.0":"2026-06-11T20:40:20.868Z","0.4.1":"2026-06-11T20:48:25.452Z","0.5.0":"2026-06-13T17:27:06.600Z","0.6.0":"2026-06-14T15:34:00.655Z","0.6.1":"2026-06-14T16:33:22.720Z","0.7.0":"2026-06-21T20:02:53.921Z","0.8.0":"2026-06-26T11:46:17.117Z","0.9.0":"2026-07-24T22:20:06.833Z","0.10.0":"2026-08-09T15:05:07.392Z","0.11.0":"2026-08-10T22:23:39.003Z","0.11.1":"2026-08-17T20:25:16.740Z","0.12.0":"2026-08-17T20:25:26.784Z","0.13.0":"2026-08-18T20:43:35.713Z"},"bugs":{"url":"https://github.com/danfry1/vitest-native/issues"},"author":{"name":"Daniel Fry"},"license":"MIT","homepage":"https://github.com/danfry1/vitest-native#readme","keywords":["vitest","react-native","testing","mock","vite","plugin","expo","react"],"repository":{"url":"git+https://github.com/danfry1/vitest-native.git","type":"git","directory":"packages/vitest-native"},"description":"Run real React Native tests under Vitest. One install, zero config.","maintainers":[{"name":"danfry","email":"danf@hotmail.co.za"}],"readme":"# vitest-native\n\n[![RN fidelity](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fdanfry1%2Fvitest-native%2Fmain%2Fpackages%2Fvitest-native%2Fcrosscheck%2Ffidelity-badge.json)](https://github.com/danfry1/vitest-native/blob/main/website/guide/fidelity.md)\n\nRun your React Native tests under Vitest, against **real React Native** — the same JavaScript that ships in your app, with only the native-module boundary mocked. That is the default and the point of the project. A lightweight pure-JS mock engine is available as an opt-in for fast, RN-free unit tests.\n\n> **Beta.** The release-supported native engine is validated across React Native 0.81–0.86,\n> Vite 6–8, Vitest 4, RNTL 12–14, bare apps, Expo 56, and hoisted monorepos. The optional\n> hot runtime remains experimental because it uses Vitest's experimental custom-pool APIs.\n>\n> Maintained successor to [`vitest-community/vitest-react-native`](https://github.com/vitest-community/vitest-react-native) — same core idea (externalize RN, run its real JS under Node), rebuilt for modern Vitest (4+). Coming from it? See [Migrating from `vitest-react-native`](#migrating-from-vitest-react-native).\n\n---\n\n## Table of Contents\n\n- [Why vitest-native?](#why-vitest-native)\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n- [Plugin Options](#plugin-options)\n- [Mocked Components and APIs](#mocked-components-and-apis)\n- [React Native Test Suite Conformance](#react-native-test-suite-conformance)\n- [Test Helpers](#test-helpers)\n- [Auto-Detect Presets](#auto-detect-presets)\n- [Migrating from `vitest-react-native`](#migrating-from-vitest-react-native)\n- [Migrating from Jest](#migrating-from-jest)\n- [Troubleshooting](#troubleshooting)\n- [RNTL Matchers](#rntl-matchers)\n- [Animated Matchers (Reanimated)](#animated-matchers-reanimated)\n- [Snapshot Serializer](#snapshot-serializer)\n- [Platform Extensions](#platform-extensions)\n- [Asset Stubs](#asset-stubs)\n- [Diagnostics](#diagnostics)\n- [Support Policy](#support-policy)\n- [Requirements](#requirements)\n- [License](#license)\n\n---\n\n## Why vitest-native?\n\nTesting React Native code with Jest has traditionally required a patchwork of configuration: custom transformers, manual mock files, preset packages, and brittle `jest.setup.js` scripts that break across React Native versions. Each new library (Reanimated, Gesture Handler, Safe Area, Navigation) adds another mock to maintain.\n\n`vitest-native` replaces all of that with a single Vite plugin:\n\n- **Real React Native, by default.** `reactNative()` with no options runs React Native's real JavaScript — the same source that ships in your app — mocking only the native-module boundary. Jest's preset replaces many components and modules (`View`, `Text`, `ScrollView`, `Linking`, `AccessibilityInfo`, `Image`, …) with stubs; vitest-native runs the real ones. See [`engine`](#engine).\n- **The runner you already use.** Already on Vitest for web? Write your React Native tests in the same runner — same config patterns, native ESM, watch mode, and UI. One test stack across web and native.\n- **No Jest config patchwork.** Add one plugin instead of custom transformers, `transformIgnorePatterns`, and brittle `jest.setup.js` mock files.\n- **Auto-detect presets.** The plugin scans your `node_modules` and shadows native-runtime libraries (Reanimated, Gesture Handler, Safe Area, Navigation) automatically — under both engines.\n- **Opt-in mock engine.** Prefer no React Native at all for a pure-logic suite? `engine: 'mock'` reimplements RN in pure JS with **zero extra dependencies**. It is the escape hatch, not the headline — see [Choosing an engine](#engine).\n\n> **Coming from Jest?** This is not a drop-in swap. New tests are friction-free; an existing Jest suite needs porting off `@react-native/jest-preset`, `@jest/globals`, and `jest.mock('react-native')`. See [Migrating from Jest](#migrating-from-jest). Coming from `vitest-react-native`? You are already vitest-shaped — migration is close to a package swap.\n\n---\n\n## Installation\n\n```bash\n# bun\nbun add -d vitest-native\n\n# npm\nnpm install -D vitest-native\n\n# yarn\nyarn add -D vitest-native\n\n# pnpm\npnpm add -D vitest-native\n```\n\nA real React Native project already provides what the native engine needs —\n`react-native`, `@react-native/babel-preset`, and `@babel/core`. Add\n`@testing-library/react-native` if you don't have it yet (the examples below use it):\n\n```bash\nnpm install -D @testing-library/react-native\n```\n\nSee [Requirements](#requirements) for exact versions.\n\n---\n\n## Quick Start\n\nCreate or update your `vitest.config.ts`:\n\n```ts\nimport { defineConfig } from \"vitest/config\";\nimport { reactNative } from \"vitest-native\";\n\nexport default defineConfig({\n  plugins: [reactNative()],\n});\n```\n\nThat is it. Write a test:\n\n```tsx\nimport { test, expect } from \"vitest\";\nimport { render, screen } from \"@testing-library/react-native\";\nimport { View, Text } from \"react-native\";\n\nfunction Greeting({ name }: { name: string }) {\n  return (\n    <View>\n      <Text>Hello, {name}</Text>\n    </View>\n  );\n}\n\ntest(\"renders a greeting\", async () => {\n  await render(<Greeting name=\"World\" />);\n  expect(screen.getByText(\"Hello, World\")).toBeTruthy();\n});\n```\n\n> Prefer Jest-style globals (`test`/`expect` without imports)? Set\n> `test: { globals: true }` in your Vitest config. vitest-native does not enable the full\n> globals mode; it only exposes `expect` when RNTL needs it to register matchers.\n> Awaiting `render` works with RNTL 12–13 and is required by RNTL 14.\n\nRun it:\n\n```bash\nnpx vitest\n```\n\n---\n\n## Plugin Options\n\nThe `reactNative()` function accepts an optional configuration object:\n\n```ts\nimport { defineConfig } from \"vitest/config\";\nimport { reactNative } from \"vitest-native\";\n\nexport default defineConfig({\n  plugins: [\n    reactNative({\n      engine: \"auto\", // 'auto' | 'mock' | 'native' — auto → native when RN's babel deps are present, else mock\n      platform: \"ios\", // 'ios' | 'android' (default: 'ios')\n      presets: [], // Preset[] -- omit for auto-detect\n      mocks: {}, // Custom mock overrides for the react-native module\n      diagnostics: false, // Enable verbose logging\n      assetExts: [\".lottie\"], // Additional asset extensions to stub\n      transform: [], // Extra native-engine packages to Flow/TS transform\n      hotRuntime: false, // Experimental persistent RN workers\n    }),\n  ],\n});\n```\n\n| Option        | Type                           | Default     | Description                                                                                                                                                                                                                                                                                                |\n| ------------- | ------------------------------ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `engine`      | `'auto' \\| 'mock' \\| 'native'` | `'auto'`    | How React Native is provided to your tests. `auto` runs real RN (native) when available, else mock. See [`engine`](#engine) below.                                                                                                                                                                         |\n| `platform`    | `'ios' \\| 'android'`           | `'ios'`     | Target platform. Controls `Platform.OS`, version defaults, and file extension resolution.                                                                                                                                                                                                                  |\n| `presets`     | `Preset[]`                     | auto-detect | Built-in library presets. When omitted, installed packages are detected automatically. Only built-in presets are supported; for custom module mocking, use `vi.mock()` in a setup file.                                                                                                                    |\n| `mocks`       | `Record<string, any>`          | `{}`        | **`engine: 'mock'` only.** JSON-serializable overrides merged into the `react-native` module mock. Function values are not supported; use `vi.mock()` in a setup file for function-based overrides.                                                                                                        |\n| `diagnostics` | `boolean`                      | `false`     | Log plugin activity to the console for debugging.                                                                                                                                                                                                                                                          |\n| `assetExts`   | `string[]`                     | `[]`        | Additional file extensions to stub as asset imports (beyond the built-in set).                                                                                                                                                                                                                             |\n| `transform`   | `string[]`                     | `[]`        | **`engine: 'native'` only.** Extra `node_modules` packages whose source the native engine should transform (Flow/TS/JSX stripped) as it loads them — for third-party RN libraries that ship untranspiled source (e.g. `react-native-reanimated`). Analogous to Jest's `transformIgnorePatterns` allowlist. |\n| `hotRuntime`  | `boolean \\| HotRuntimeOptions` | `false`     | **Experimental, `engine: 'native'` only.** Reuse workers while keeping app/test modules isolated per file. See [Hot runtime](#hot-runtime).                                                                                                                                                                |\n\n### `engine`\n\nChoose how React Native is provided to your tests:\n\n- `'native'` — runs the **real** React Native JavaScript (component logic, prop\n  computation, validation, reconciliation), mocking only the native module boundary that\n  requires a device. Jest's `react-native` preset replaces many of these modules with\n  stubs, so the native engine exercises behavior Jest's mocks skip (see [Fidelity](#fidelity)\n  below). Best for components, integration, RNTL, virtualized lists, and anywhere a false\n  pass is costly. Requires `@react-native/babel-preset` and `@babel/core` (present by\n  default in React Native apps).\n- `'mock'` — a lightweight, pure-JS reimplementation of React Native with **zero extra\n  dependencies**. Best for pure-logic/unit tests, maximum determinism, or when you can't\n  add the babel deps. Like Jest's preset, it is a simplification — see [Fidelity](#fidelity).\n- `'auto'` _(default)_ — picks automatically, and **resolves to `'native'`** whenever\n  `@react-native/babel-preset` and `@babel/core` are present (i.e. in any real RN app). It\n  falls back to `'mock'` only when those deps are absent, printing one line to explain why.\n  So `reactNative()` with no options runs real React Native. Set `engine: 'mock'` to opt out.\n\n```ts\nreactNative({ engine: \"native\" });\n```\n\n#### Fidelity\n\nJest's `react-native` preset replaces many real modules with stubs, so behavior they\ndon't implement passes silently. The `native` engine runs the real implementations, so\nthose checks actually run. For example:\n\n| Behavior               | `engine: 'native'` (real RN)                                                 | Jest `react-native` preset |\n| ---------------------- | ---------------------------------------------------------------------------- | -------------------------- |\n| `Linking.openURL(123)` | throws `Invalid URL: should be a string`                                     | accepts without validating |\n| `Linking.openURL('')`  | throws `Invalid URL: cannot be empty`                                        | accepts without validating |\n| `<Text>` host props    | `accessible`, `allowFontScaling`, `ellipsizeMode` computed by real `Text.js` | not set                    |\n\nThe `mock` engine is a simplification too, so it diverges from real RN the same way — reach\nfor `native` when a false pass would be costly. These specific differences are produced by\nthe cross-check/fidelity harnesses in the repository's `bench/` directory.\n\n#### Hot runtime\n\n`engine: 'native'` normally uses Vitest's safest isolation model: each test file gets a fresh\nworker, so React Native reloads for every file. Large suites can opt into persistent workers:\n\n```ts\nreactNative({\n  engine: \"native\",\n  hotRuntime: true,\n});\n```\n\nThe hot runtime keeps React Native's externalized module graph resident while Vitest still resets\nthe app/test module graph for every file. It also restores direct `process.env` mutations,\nfile-created globals, RN event subscriptions, dimensions, timers, and plugin mock state between\nfiles. A dedicated one-worker CI test exercises this cross-file isolation contract.\n\n**Known limitation.** Because React Native stays resident, state held inside React Native's own\ninternal modules is _not_ reset between files — the per-file reset deliberately does not reach into\nthird-party or RN-internal module internals, because doing so generically is unsafe. Suites that\nlean on deep resident-RN-internal state can therefore see cross-file interference under the hot\nruntime that they would not see under the default per-file isolation. The clearest example is heavy\ncross-file `Animated` usage, where animations driven in one file can alter how a later file renders.\nThe tell-tale sign is a test that passes in isolation but fails when run after other files; if you\nsee that, move the affected suite (or the project) back to the default per-file isolation. This is\nwhy the hot runtime is opt-in and experimental rather than the default; closing the gap for all\nsuites depends on a per-file module reset inside a persistent worker that Vitest does not yet\nprovide.\n\nFor additional leak containment:\n\n```ts\nreactNative({\n  engine: \"native\",\n  hotRuntime: {\n    recycleAfterFiles: 100,\n    memoryLimit: 512 * 1024 * 1024,\n    preserveGlobals: [\"MY_RESIDENT_LIBRARY_REGISTRY\"],\n  },\n});\n```\n\nRecycling is applied between Vitest scheduler tasks. Vitest can place multiple files in one task,\nespecially with `maxWorkers: 1`, so a worker cannot be retired in the middle of that batch. Use\nmore than one worker when strict per-file retirement matters. `preserveGlobals` is an exact\nallowlist for registries created by resident external dependencies; Storybook's preview registry\nis preserved automatically.\n\nThis mode uses Vitest's custom pool and worker APIs, so it remains experimental. CI runs the\ncomplete native suite under both the lockfile Vitest and the newest supported Vitest 4 release,\nplus a generated 100-file isolation soak and an end-to-end memory-triggered recycling test.\n\n---\n\n## Mocked Components and APIs\n\nUnder the `mock` engine, the plugin provides a comprehensive mock of the `react-native` module. Every mocked component renders as a named host element (making snapshots readable), and every mocked API function is a Vitest `vi.fn()` spy.\n\n### Components (24)\n\n| Component               | Component            | Component                |\n| ----------------------- | -------------------- | ------------------------ |\n| View                    | Text                 | Image                    |\n| TextInput               | ScrollView           | FlatList                 |\n| SectionList             | Modal                | Pressable                |\n| TouchableOpacity        | TouchableHighlight   | TouchableWithoutFeedback |\n| TouchableNativeFeedback | ActivityIndicator    | Button                   |\n| Switch                  | RefreshControl       | StatusBar                |\n| SafeAreaView            | KeyboardAvoidingView | ImageBackground          |\n| VirtualizedList         | InputAccessoryView   | DrawerLayoutAndroid      |\n\n### APIs (25+)\n\n| API                | API                | API                |\n| ------------------ | ------------------ | ------------------ |\n| Platform           | Dimensions         | StyleSheet         |\n| Animated           | Alert              | Linking            |\n| AppState           | Keyboard           | BackHandler        |\n| Vibration          | PermissionsAndroid | Appearance         |\n| PixelRatio         | LayoutAnimation    | Clipboard          |\n| Share              | AccessibilityInfo  | InteractionManager |\n| PanResponder       | ToastAndroid       | ActionSheetIOS     |\n| LogBox             | Easing             | I18nManager        |\n| DeviceEventEmitter |                    |                    |\n\n### Native Bridge\n\n| Export                   | Description                                  |\n| ------------------------ | -------------------------------------------- |\n| `NativeModules`          | Proxy that returns no-op modules for any key |\n| `TurboModuleRegistry`    | Proxy with `getEnforcing` / `get` stubs      |\n| `UIManager`              | Stubbed layout manager                       |\n| `NativeEventEmitter`     | Event emitter constructor mock               |\n| `requireNativeComponent` | Returns a named component mock               |\n\n### Hooks\n\n| Hook                  | Default Value                                         |\n| --------------------- | ----------------------------------------------------- |\n| `useColorScheme`      | `'light'`                                             |\n| `useWindowDimensions` | `{ width: 390, height: 844, scale: 3, fontScale: 1 }` |\n\n---\n\n## React Native Test Suite Conformance\n\nvitest-native ports tests from React Native's own test suite (Flow stripped, Jest → Vitest) to validate mock behavioral parity — the same checks Meta uses to verify React Native itself:\n\n- **Easing** — all 24 easing curve tests including sample data for quad, cubic, sin, exp, circle, and back\n- **Bezier** — 9 cubic bezier mathematical property tests (symmetry, projection, boundary conditions)\n- **flattenStyle** — 12 style merging tests covering override precedence, reference identity, and recursive flattening\n- **processColor** — 9 color format conversion tests for named colors, RGB, RGBA, HSL, HSLA, and hex\n- **Interpolation** — 12 numeric and string range mapping tests, including string output ranges (`deg`/`%`/arbitrary suffixes) and extrapolate modes (extend/clamp/identity)\n- **Animated** — 36 tests for listeners, events, forkEvent, diffClamp, Color normalization, sequence chaining/interruption/restart, parallel start/stop/no-double-stop, loop iterations/indefinite/interrupt/resetBeforeIteration, delay in sequence, stagger, and value tracking\n\n118 tests ported from React Native's own test suite — 115 passing, with 3 edge cases (hex-colour interpolation and infinite input ranges) skipped and documented in the test files (`vitest run tests/rn-conformance/`).\n\n---\n\n## Test Helpers\n\nImport helpers from `vitest-native/helpers` to control test state. `setDimensions`,\n`setColorScheme`, `setInsets`, `mockNativeModule`, and `resetAllMocks` work under both engines.\n`setPlatform` is mock-engine-only because the native engine selects platform files while loading\nthe module graph.\n\n```ts\nimport {\n  setPlatform,\n  setDimensions,\n  setColorScheme,\n  setInsets,\n  mockNativeModule,\n  resetAllMocks,\n} from \"vitest-native/helpers\";\n```\n\n### `setPlatform(os)`\n\nSwitch the platform for the current test under `engine: 'mock'`. Updates `Platform.OS`,\n`Platform.Version`, and `Platform.select`.\n\n```ts\nimport { setPlatform } from \"vitest-native/helpers\";\n\ntest(\"renders Android-specific UI\", () => {\n  setPlatform(\"android\");\n  // Platform.OS is now 'android', Platform.Version is 34\n  // Platform.select({ ios: 'A', android: 'B' }) returns 'B'\n});\n```\n\nUnder `engine: 'native'`, configure `reactNative({ platform: 'android' })` or use separate Vitest\nprojects. Calling `setPlatform()` there throws because changing `Platform.OS` after platform-specific\nmodules have resolved would create an inconsistent graph.\n\n### `setDimensions(dims)`\n\nUpdate `Dimensions.get()` and the `useWindowDimensions` hook return value.\n\n```ts\nimport { setDimensions } from \"vitest-native/helpers\";\n\ntest(\"adapts to tablet dimensions\", () => {\n  setDimensions({ width: 768, height: 1024, scale: 2, fontScale: 1 });\n  // Dimensions.get('window') returns { width: 768, height: 1024, ... }\n  // useWindowDimensions() returns the same\n});\n```\n\n### `setColorScheme(scheme)`\n\nSwitch the color scheme. Affects `Appearance.getColorScheme()` and the `useColorScheme` hook.\n\n```ts\nimport { setColorScheme } from \"vitest-native/helpers\";\n\ntest(\"renders dark mode styles\", () => {\n  setColorScheme(\"dark\");\n  // useColorScheme() returns 'dark'\n  // Appearance.getColorScheme() returns 'dark'\n});\n```\n\n### `setInsets(insets)`\n\nUpdate the safe area insets returned by `useSafeAreaInsets()` from `react-native-safe-area-context`. Requires the `safeAreaContext` preset to be active.\n\n```ts\nimport { setInsets } from \"vitest-native/helpers\";\n\ntest(\"renders with no bottom inset (Android)\", () => {\n  setInsets({ top: 24, bottom: 0 });\n  // useSafeAreaInsets() returns { top: 24, right: 0, bottom: 0, left: 0 }\n});\n```\n\n### `mockNativeModule(name, impl)`\n\nRegister a custom native module mock. The module becomes available through both\n`NativeModules[name]` and `TurboModuleRegistry.get(name)`.\n\n```ts\nimport { mockNativeModule } from \"vitest-native/helpers\";\n\ntest(\"uses a custom native module\", () => {\n  mockNativeModule(\"MyBridge\", {\n    getValue: vi.fn().mockResolvedValue(42),\n  });\n\n  const { NativeModules } = require(\"react-native\");\n  await expect(NativeModules.MyBridge.getValue()).resolves.toBe(42);\n});\n```\n\n### `resetAllMocks()`\n\nReset plugin-controlled state. Under the mock engine this restores the mock defaults, including\niOS platform defaults. Under the native engine it restores the configured platform's initial\ndimensions and color scheme. Both engines reset active preset stores, clear mock call history, and\nundo `mockNativeModule` calls.\n\n```ts\nimport { resetAllMocks } from \"vitest-native/helpers\";\n\nafterEach(() => {\n  resetAllMocks();\n});\n```\n\n---\n\n## Auto-Detect Presets\n\nWhen the `presets` option is omitted, the plugin scans your `node_modules` and automatically enables mocks for installed third-party libraries:\n\n| Package                                     | What Gets Mocked                                                                                     |\n| ------------------------------------------- | ---------------------------------------------------------------------------------------------------- |\n| `react-native-reanimated`                   | Animated values, `useSharedValue`, `useAnimatedStyle`, layout animations                             |\n| `react-native-gesture-handler`              | Gesture components, `GestureHandlerRootView`, state constants                                        |\n| `react-native-safe-area-context`            | `SafeAreaProvider`, `useSafeAreaInsets`, `SafeAreaView`                                              |\n| `@react-navigation/native`                  | `NavigationContainer`, `useNavigation`, `useRoute`                                                   |\n| `@react-native-async-storage/async-storage` | `getItem`, `setItem`, `removeItem`, `clear`, `getAllKeys`                                            |\n| `react-native-screens`                      | `enableScreens`, screen components                                                                   |\n| `expo`                                      | `expo-constants`, `expo-font`, `expo-asset`, `expo-splash-screen`, `expo-linking`, `expo-status-bar` |\n\nAuto-detection means zero additional config for most projects. If you need to restrict which presets are active, pass them explicitly:\n\n```ts\nimport { defineConfig } from \"vitest/config\";\nimport { reactNative, presets } from \"vitest-native\";\n\nexport default defineConfig({\n  plugins: [\n    reactNative({\n      presets: [presets.reanimated(), presets.gestureHandler(), presets.safeAreaContext()],\n    }),\n  ],\n});\n```\n\n### Available Presets\n\n| Import                         | Function                                  |\n| ------------------------------ | ----------------------------------------- |\n| `presets.reanimated()`         | react-native-reanimated                   |\n| `presets.gestureHandler()`     | react-native-gesture-handler              |\n| `presets.safeAreaContext()`    | react-native-safe-area-context            |\n| `presets.navigation()`         | @react-navigation/native                  |\n| `presets.asyncStorage()`       | @react-native-async-storage/async-storage |\n| `presets.screens()`            | react-native-screens                      |\n| `presets.expo()`               | Expo modules                              |\n| `presets.deviceInfo()`         | react-native-device-info                  |\n| `presets.mmkv()`               | react-native-mmkv                         |\n| `presets.netInfo()`            | @react-native-community/netinfo           |\n| `presets.svg()`                | react-native-svg                          |\n| `presets.webview()`            | react-native-webview                      |\n| `presets.vectorIcons()`        | react-native-vector-icons                 |\n| `presets.flashList()`          | @shopify/flash-list                       |\n| `presets.bottomSheet()`        | @gorhom/bottom-sheet                      |\n| `presets.keyboardController()` | react-native-keyboard-controller          |\n\nPresets apply under **both** engines: the mock engine and `engine: 'native'` (where they shadow each\nlibrary's native runtime — worklets, native modules — exactly as Jest does, while the surrounding tree\nrenders through real React Native).\n\n### Expo\n\nThe `expo` preset shadows the common Expo modules (`expo-constants`, `expo-status-bar`, `expo-font`,\n`expo-asset`, `expo-splash-screen`, `expo-linking`) the way `jest-expo` mocks them. A component that\nimports those renders under the native engine with no extra setup — there's a gated proof in\n`tests-native/expo.test.tsx`. Two honest caveats:\n\n- **Expo modules without a built-in preset** (e.g. `expo-image`, `expo-haptics`) still need a\n  setup-file `vi.mock` at a Vite-managed boundary. The native engine externalizes native-side\n  libraries to Node, so imports made entirely inside that externalized graph cannot be intercepted\n  by Vitest's mocker.\n- **Expo SDK trails React Native.** Pin your `react-native` to the version your Expo SDK supports\n  (which is within this plugin's validated range), not the newest RN release.\n\nA packed Expo 56 consumer is installed from the release tarball and tested in CI. That gate covers\nExpo preset auto-detection, `expo-constants`, `expo-status-bar`, real RN rendering, and RNTL 13.\n\n---\n\n## Migrating from `vitest-react-native`\n\nUsed [`vitest-community/vitest-react-native`](https://github.com/vitest-community/vitest-react-native)\nand it broke on a newer Vitest? `vitest-native` is the maintained continuation — same core\narchitecture (externalize RN, run its real JS under Node, mock only the native boundary). For the\ncommon case it's a config swap:\n\n```diff\n- import reactNative from 'vitest-react-native';\n- import react from '@vitejs/plugin-react';\n+ import { reactNative } from 'vitest-native';\n  import { defineConfig } from 'vitest/config';\n\n  export default defineConfig({\n-   plugins: [reactNative(), react()],\n+   plugins: [reactNative()],\n  });\n```\n\nNamed import, and drop `@vitejs/plugin-react` (vitest-native handles the JSX runtime itself). The\nfull walkthrough — install, gotchas, what's the same — is in\n**[docs/migrating-from-vitest-react-native.md](docs/migrating-from-vitest-react-native.md)**.\n\n---\n\n## Migrating from Jest\n\nvitest-native ships a small compat layer that clears the mechanical Jest-API coupling in an existing\nsuite (the `jest` global, `@jest/globals`, jest-native's extend-expect):\n\n```ts\n// vitest.config.mts\nimport { reactNative } from \"vitest-native\";\nimport { jestCompatAliases, jestCompatSetup } from \"vitest-native/jest-compat\";\n\nexport default defineConfig({\n  plugins: [reactNative({ engine: \"native\" })],\n  resolve: { alias: { ...jestCompatAliases() } },\n  test: { globals: true, setupFiles: [jestCompatSetup] },\n});\n```\n\nThis is **not** a turnkey drop-in — a real suite still needs a small per-suite cleanup (convert\ntop-level `jest.mock` → `vi.mock`, RNTL ≥ 12, re-record snapshots once with `-u`). The full recipe,\nwith a worked real-app example, is in **[docs/migrating-from-jest.md](docs/migrating-from-jest.md)**.\n\n---\n\n## Troubleshooting\n\n**`@react-native/babel-preset not found — using the mock engine`**\nYou asked for the default (`auto`) engine but the native babel deps aren't installed, so it\nfell back to the mock engine. To run real React Native, install them:\n\n```bash\nnpm i -D @react-native/babel-preset @babel/core\n```\n\nTo silence the notice and stay on mock deliberately, set `reactNative({ engine: 'mock' })`.\n\n**`vi.mock('some-rn-library')` doesn't take effect (native engine)**\nUnder `engine: 'native'`, React Native and its native-side libraries are _externalized_ to Node,\nso they load outside Vite's module graph — and Vitest's mocker only intercepts modules inside that\ngraph. Your **own** source modules mock normally; the gap is third-party RN-side packages. Options:\n\n- Use a **[preset](#auto-detect-presets)** if one exists (it shadows the library the way Jest does).\n- For a pure-JS library shipping untranspiled source, add it to the [`transform`](#plugin-options)\n  allowlist so the engine strips its Flow/TS as it loads.\n- Or test that boundary on the **mock engine**, where `vi.mock` applies normally.\n\n**`Unexpected token` / Flow syntax errors from a third-party library (native engine)**\nThe require hook strips Flow/TS from `react-native` and active presets, but not from arbitrary\npackages. If a dependency ships untranspiled Flow/TS, add it to the\n[`transform`](#plugin-options) allowlist.\n\n**My `babel.config.js` plugin isn't running**\nTransforms go through Vite's JSX transformer, not your Babel config, so custom Babel plugins don't\napply. Vite 6–7 use esbuild and Vite 8 uses Oxc; the plugin configures the automatic JSX runtime for\nboth. RN/preset Flow-stripping is handled separately; for anything else, prefer a Vite plugin or a\npreset.\n\n**Snapshots differ after switching from Jest or the mock engine**\nReal RN computes host props (e.g. `<Text>`'s `accessible`, `allowFontScaling`) that mocks omit, so\nthe tree is richer. Re-record once with `npx vitest -u` after migrating.\n\n**`Worker terminated due to reaching memory limit` / `JS heap out of memory` (large native suites)**\nEvery test file that renders real React Native loads a full renderer, so a large suite can grow a\nworker's heap past Node's default ceiling. Cap it with Vitest's per-worker limit — Vitest recycles a\nworker once its heap exceeds the limit, so growth never reaches the hard OOM:\n\n```ts\n// vitest.config.ts\nexport default defineConfig({\n  test: { poolOptions: { threads: { memoryLimit: \"512MB\" } } },\n});\n```\n\nThe experimental `reactNative({ hotRuntime: true })` also helps: it keeps React Native resident\nacross files (loaded once per worker instead of per file) and recycles workers on a memory/file\nbudget.\n\n**`Vitest caught N unhandled errors` in error-boundary tests**\nA test that intentionally throws inside a component (to exercise an error boundary) makes React log\na \"recovered from an error during concurrent rendering\" message and Vitest count it — even though\nthe boundary worked and the test passes. It's cosmetic and the assertions are unaffected. Silence it\nin a setup file if you like (e.g. filter the message in an `onConsoleLog`/`console.error` wrapper).\n\n**Overriding a preset's mock (e.g. navigation route params)**\nAuto-detected presets shadow a library with a built-in mock. To change what that mock returns for a\ntest or project, `vi.mock` the module in a setup file and spread the preset's mock — presets expose\nthe module to Vitest's graph, so `vi.mock` applies and `importOriginal()` returns the preset mock:\n\n```ts\n// vitest.setup.ts\nvi.mock(\"@react-navigation/native\", async (importOriginal) => ({\n  ...(await importOriginal()),\n  useRoute: () => ({ key: \"r\", name: \"Screen\", params: { id: \"1\" } }),\n}));\n```\n\n---\n\n## RNTL Matchers\n\nWhen supported `@testing-library/react-native` 12–14 is installed, `vitest-native`\nauto-registers its custom matchers across each major's export layout. No manual\n`extend(matchers)` call or setup file is needed.\n\n### TypeScript\n\nThe matchers run without any setup, but their **types** need one line. RNTL declares\nthem only for Jest — it augments the global `jest` namespace and `@jest/expect`, and\nneither reaches Vitest's `Assertion` — so without this they are\n`Property 'toHaveTextContent' does not exist on type 'Assertion<...>'` even though the\nassertion works at runtime.\n\nReference the types once, anywhere in the project:\n\n```ts\n/// <reference types=\"vitest-native/rntl-matchers\" />\n```\n\nor add it to `compilerOptions.types` in `tsconfig.json`:\n\n```json\n{ \"compilerOptions\": { \"types\": [\"vitest-native/rntl-matchers\"] } }\n```\n\nIt is opt-in rather than automatic because `@testing-library/react-native` is an\noptional peer: a type import of an absent package is invisible under\n`skipLibCheck: true` (React Native's default) but reports `TS2307` under\n`skipLibCheck: false`, which would break projects that use the mock engine without\nRNTL. Referencing nothing loads nothing — the file is not part of the program unless\nasked for.\n\nThe following matchers become available on `expect()`:\n\n| Matcher                           | Description                                   |\n| --------------------------------- | --------------------------------------------- |\n| `toBeVisible()`                   | Element is visible                            |\n| `toBeEmptyElement()`              | Element has no children                       |\n| `toBeEnabled()`                   | Element is not disabled                       |\n| `toBeDisabled()`                  | Element is disabled                           |\n| `toHaveTextContent(text)`         | Element contains the given text               |\n| `toHaveProp(name, value?)`        | Element has the specified prop                |\n| `toHaveStyle(style)`              | Element has the specified styles              |\n| `toBeOnTheScreen()`               | Element is in the component tree              |\n| `toContainElement(element)`       | Element contains the given child              |\n| `toHaveAccessibilityState(state)` | Element has the specified accessibility state |\n| `toHaveAccessibilityValue(value)` | Element has the specified accessibility value |\n| `toBeSelected()`                  | Element is selected                           |\n| `toBeChecked()`                   | Element is checked                            |\n| `toBePartiallyChecked()`          | Element is partially checked                  |\n| `toBeBusy()`                      | Element is busy                               |\n| `toBeExpanded()`                  | Element is expanded                           |\n| `toBeCollapsed()`                 | Element is collapsed                          |\n\n```tsx\nimport { render, screen } from \"@testing-library/react-native\";\nimport { View, Text } from \"react-native\";\n\ntest(\"greeting is visible with correct style\", async () => {\n  await render(\n    <View>\n      <Text style={{ color: \"red\", fontSize: 18 }}>Hello</Text>\n    </View>,\n  );\n\n  const text = screen.getByText(\"Hello\");\n  expect(text).toBeVisible();\n  expect(text).toHaveStyle({ color: \"red\" });\n  expect(text).toHaveTextContent(\"Hello\");\n});\n```\n\n---\n\n## Animated Matchers (Reanimated)\n\n`react-native-reanimated` ships `toHaveAnimatedStyle` and `toHaveAnimatedProps` through its Jest setup, which isn't available under Vitest. `vitest-native` registers Vitest-native equivalents automatically — no `setUpTests()` call or setup file needed.\n\n| Matcher                               | Description                                                                                                             |\n| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |\n| `toHaveAnimatedStyle(style, config?)` | Element's (flattened) style contains the given entries. Pass `{ shouldMatchAllProps: true }` to require an exact match. |\n| `toHaveAnimatedProps(props)`          | Element's animated props contain the given entries.                                                                     |\n\nBecause the `reanimated` preset resolves `useAnimatedStyle`/`useAnimatedProps` synchronously, the animated values land on the rendered element and these matchers read straight from it:\n\n```tsx\nimport { render, screen } from \"@testing-library/react-native\";\nimport Animated, { useSharedValue, useAnimatedStyle } from \"react-native-reanimated\";\n\nfunction Skeleton({ visible }: { visible: boolean }) {\n  const opacity = useSharedValue(visible ? 1 : 0);\n  const style = useAnimatedStyle(() => ({ opacity: opacity.value }));\n  return <Animated.View testID=\"bone\" style={style} />;\n}\n\ntest(\"starts with full opacity\", async () => {\n  await render(<Skeleton visible />);\n  expect(screen.getByTestId(\"bone\")).toHaveAnimatedStyle({ opacity: 1 });\n});\n```\n\n### Reanimated + Gesture Handler without manual mocks\n\nBoth libraries are auto-detected, so a component using a `Gesture` + `GestureDetector` driving an animated style needs no `vi.mock()` calls:\n\n```tsx\nimport { render, screen, fireEvent } from \"@testing-library/react-native\";\nimport { Gesture, GestureDetector } from \"react-native-gesture-handler\";\nimport Animated, { useSharedValue, useAnimatedStyle } from \"react-native-reanimated\";\n\nfunction Card() {\n  const pressed = useSharedValue(false);\n  const style = useAnimatedStyle(() => ({ opacity: pressed.value ? 0.5 : 1 }));\n  const tap = Gesture.Tap().onStart(() => {\n    pressed.value = true;\n  });\n  return (\n    <GestureDetector gesture={tap}>\n      <Animated.View testID=\"card\" style={style} />\n    </GestureDetector>\n  );\n}\n\ntest(\"card renders at full opacity\", async () => {\n  await render(<Card />);\n  expect(screen.getByTestId(\"card\")).toHaveAnimatedStyle({ opacity: 1 });\n});\n```\n\n> RNGH's `Pressable` is also exported by the preset and mirrors React Native's `Pressable` (including not firing `onPress` when `disabled`), so you can swap `import { Pressable } from 'react-native-gesture-handler'` straight into tests.\n\n### TypeScript\n\nTo type the matchers on `expect()`, add the matcher types to your `tsconfig.json`:\n\n```jsonc\n{\n  \"compilerOptions\": {\n    \"types\": [\"vitest-native/matchers\"],\n  },\n}\n```\n\n---\n\n## Snapshot Serializer\n\nA snapshot serializer is auto-registered that produces clean, JSX-like output for React Native components. Instead of deeply nested `ReactTestInstance` objects, snapshots read naturally:\n\n```\n<View>\n  <Text\n    style={\n      {\n        \"fontSize\": 18,\n      }\n    }\n  >\n    Hello, World\n  </Text>\n</View>\n```\n\nNo configuration is required. The serializer is active for all snapshot tests automatically.\n\n---\n\n## Platform Extensions\n\nThe plugin resolves platform-specific files following React Native conventions. When `platform` is set to `'ios'` (the default), imports resolve in this order:\n\n1. `./Component.ios.ts`\n2. `./Component.native.ts`\n3. `./Component.ts`\n\nWhen `platform` is `'android'`:\n\n1. `./Component.android.ts`\n2. `./Component.native.ts`\n3. `./Component.ts`\n\nThis works for all supported extensions: `.ts`, `.tsx`, `.js`, `.jsx`.\n\n```ts\n// vitest.config.ts -- test Android-specific code\nexport default defineConfig({\n  plugins: [reactNative({ platform: \"android\" })],\n});\n```\n\nPlatform resolution applies both to your app/test code (resolved by Vite) **and** to\nthird-party `node_modules` packages with platform-specific files (e.g.\n`@react-navigation`'s `useLinking.native.js`). The latter matters because Vitest\nexternalizes most `node_modules` dependencies — they load through Node, whose resolver\nhas no notion of `.native.js`. The native engine fills that gap so externalized packages\nresolve the same `.native`/`.ios`/`.android` variant Metro would, instead of silently\nfalling back to the default (often web) file.\n\n---\n\n## Asset Stubs\n\nImage, font, video, and audio imports are automatically stubbed. The import resolves to the filename string, so code that passes asset paths through continues to work without errors.\n\n```ts\nimport logo from \"./logo.png\";\n// logo === 'logo.png'\n```\n\nBuilt-in extensions include common formats like `.png`, `.jpg`, `.gif`, `.svg`, `.mp4`, `.ttf`, `.otf`, and more. To add additional extensions:\n\n```ts\nreactNative({\n  assetExts: [\".lottie\", \".m4b\"],\n});\n```\n\n---\n\n## Diagnostics\n\nEnable verbose logging to see exactly what the plugin is doing during configuration and module resolution:\n\n```ts\nreactNative({\n  diagnostics: true,\n});\n```\n\nThis prints details about which presets were detected, which modules are being mocked, and how imports are resolved. Useful for debugging unexpected behavior.\n\n---\n\n## Support Policy\n\nThe stock `mock` and `native` engines are release-supported: regressions in their documented\nversion ranges block pull requests and releases. The `hotRuntime` option is experimental because\nVitest labels the custom-pool API it depends on experimental; it has the same correctness suite,\nisolation soak, and recycling gates, but may require a minor-version adaptation when Vitest changes\nthat API.\n\nEvery release must pass:\n\n- Linux on Node 20.19 and 22.13, plus macOS and Windows on Node 22.13.\n- The mock, native iOS, native Android, hot-runtime, isolation, and 100-file soak suites.\n- React Native 0.81–0.86 against both locked and newest-supported Vitest 4.\n- Packed bare RN 0.83/RNTL 12, Expo 56/RNTL 13, Vite 8 monorepo/RNTL 14, and RN 0.86 consumers.\n- Mock-versus-real-RN behavioral cross-checks, example-app tests, typecheck, lint, formatting, and\n  package export analysis.\n\nCurrent React Native edge releases are also tested weekly. See\n[the release-readiness policy](docs/release-readiness.md) for the exact gates and stability labels.\n\nFor what is *promised* rather than what is tested — which exports and options are protected by\nsemver, which are experimental, how the version ranges above may move, and what 1.0 will mean —\nsee [versioning and stability](docs/versioning.md).\n\n---\n\n## Requirements\n\n| Dependency                                   | Supported version                         |\n| -------------------------------------------- | ----------------------------------------- |\n| `react`                                      | >= 18; use RN's matching React version    |\n| `vite`                                       | ^6.4.2, ^7.3.2, or ^8.0.5                |\n| `vitest`                                     | 4.x                                       |\n| `node`                                       | >= 20.19; RN/RNTL may impose a higher floor |\n| `react-native` (native engine)               | 0.81–0.86 validated                       |\n| `@react-native/babel-preset` (native engine) | Match the installed React Native minor    |\n| `@testing-library/react-native` (optional)   | 12.x, 13.x, or 14.x                       |\n\nRNTL 14 requires Node 22.13 or 24+ and uses async rendering APIs. React Native 0.86 requires\nNode 20.19.4, 22.13, or 24.3 or newer. Those are upstream requirements; the mock engine itself\ncontinues to support Node 20.\n\n---\n\n## License\n\nMIT\n","readmeFilename":"README.md"}