{"_id":"@stealthscale/vite-config-react","_rev":"10-f235aeef7976cf4e78b5e21da1c1a52e","name":"@stealthscale/vite-config-react","dist-tags":{"latest":"0.8.0"},"versions":{"0.1.0":{"name":"@stealthscale/vite-config-react","version":"0.1.0","keywords":["config","eslint","jsx","react","vite"],"license":"MIT","_id":"@stealthscale/vite-config-react@0.1.0","maintainers":[{"name":"stealth-rklopper","email":"roy.klopper@stealthscale.io"}],"homepage":"https://github.com/stealth-scale/config/tree/main/packages/vite-config-react#readme","bugs":{"url":"https://github.com/stealth-scale/config/issues"},"dist":{"shasum":"9d0ae1431f9ed03541b2a788615218bc346fc8ad","tarball":"https://registry.npmjs.org/@stealthscale/vite-config-react/-/vite-config-react-0.1.0.tgz","fileCount":15,"integrity":"sha512-VWiH8YcmMlCguauMwFxKHfBzSN7ELk+V0pnJZHj3U7duSJIalxeIcFMPuKgTC4Kx2TRW7ensEx4Bum5wJn8h4Q==","signatures":[{"sig":"MEQCIDVVL4kMAOCBlOSS5L0BlW2uGx/safmElra8MVd2ZLBnAiAMqLOOJTI9VvNDbgXIlKKb98iyhbH7HVrVUzyQgbstGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51590},"type":"module","_from":"file:/tmp/release/stealthscale-vite-config-react-0.1.0.tgz","engines":{"node":">=24.0.0"},"exports":{".":{"default":"./dist/index.mjs","stealth-source":"./src/index.ts"},"./web.json":"./web.json","./preset/app":{"default":"./dist/preset/app.mjs","stealth-source":"./src/preset/app.ts"},"./preset/web":{"default":"./dist/preset/web.mjs","stealth-source":"./src/preset/web.ts"},"./package.json":"./package.json","./vitest.setup.ts":"./vitest.setup.ts"},"imports":{"#*":"./src/*"},"scripts":{"test":"vp test","build":"vp pack","check":"vp check"},"_npmUser":{"name":"stealth-rklopper","email":"roy.klopper@stealthscale.io"},"_resolved":"/tmp/release/stealthscale-vite-config-react-0.1.0.tgz","_integrity":"sha512-VWiH8YcmMlCguauMwFxKHfBzSN7ELk+V0pnJZHj3U7duSJIalxeIcFMPuKgTC4Kx2TRW7ensEx4Bum5wJn8h4Q==","repository":{"url":"git+https://github.com/stealth-scale/config.git","type":"git","directory":"packages/vite-config-react"},"_npmVersion":"11.19.0","description":"What a stealth package that renders is configured, checked and formatted by.","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public","exports":{".":"./dist/index.mjs","./web.json":"./web.json","./preset/app":"./dist/preset/app.mjs","./preset/web":"./dist/preset/web.mjs","./package.json":"./package.json","./vitest.setup.ts":"./vitest.setup.ts"}},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.3.0","publint":"^0.3.24","react-dom":"^19.3.0","vite-plus":"0.3.1","typescript":"^7.0.2","@types/node":"^26","@vitest/coverage-v8":"4.1.11","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@arethetypeswrong/core":"^0.18.5","@stealthscale/vite-config":"^0.1.0","@stealthscale/vite-config-typescript":"^0.1.0"},"peerDependencies":{"react":"^19.3.0","react-dom":"^19.3.0","vite-plus":"0.3.1","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@stealthscale/vite-config":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-config-react_0.1.0_1789163975337_0.2863798297696707","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@stealthscale/vite-config-react","version":"0.1.1","keywords":["config","eslint","jsx","react","vite"],"license":"MIT","_id":"@stealthscale/vite-config-react@0.1.1","maintainers":[{"name":"stealth-rklopper","email":"roy.klopper@stealthscale.io"}],"homepage":"https://github.com/stealth-scale/config/tree/main/packages/vite-config-react#readme","bugs":"https://github.com/stealth-scale/config/issues","dist":{"shasum":"a8a04769be1822adc5fa7aeb09a24e1fa6e6f767","tarball":"https://registry.npmjs.org/@stealthscale/vite-config-react/-/vite-config-react-0.1.1.tgz","fileCount":15,"integrity":"sha512-ELtAjUNS20AF0JXVRz5j9D0xXnzPRKK/dEFAv4OLcJDC7bjtcrd9bdhT6U6YKyWDlxQMa/3xbGaLYpt5OfFQTw==","signatures":[{"sig":"MEQCIDzenST6ASZj1tR0kapoaAqWGfPXAeJhMPiXmJRg3zmmAiAGDbwR7vcbP6Yk4l1rfJIIoa+r5UWsoeD1aoIkZuirtw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICFfIoRE13X5GqId0CK83l5Q5tU6A5Be1oI4uP1KJxScAiEAgcCj5lrjnyR8gMgx54lMDr7uvSHQ/xVc22HMbYuO9AM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@stealthscale%2fvite-config-react@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50885},"type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./dist/index.mjs","./web.json":"./web.json","./preset/app":"./dist/preset/app.mjs","./preset/web":"./dist/preset/web.mjs","./package.json":"./package.json","./vitest.setup.ts":"./vitest.setup.ts"},"imports":{"#*":"./src/*"},"scripts":{"test":"vp test","build":"vp pack","check":"vp check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:58960cd7-0f4b-4146-bf78-0d86754a0193"}},"repository":{"url":"git+https://github.com/stealth-scale/config.git","type":"git","directory":"packages/vite-config-react"},"description":"What a stealth package that renders is configured, checked and formatted by.","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.3.0","publint":"^0.3.24","react-dom":"^19.3.0","vite-plus":"0.3.1","typescript":"^7.0.2","@types/node":"^26","@vitest/coverage-v8":"4.1.11","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@arethetypeswrong/core":"^0.18.5","@stealthscale/vite-config":"^0.1.1","@stealthscale/vite-config-typescript":"^0.1.1"},"peerDependencies":{"react":"^19.3.0","react-dom":"^19.3.0","vite-plus":"0.3.1","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@stealthscale/vite-config":"^0.1.1"},"_npmOperationalInternal":{"tmp":"tmp/vite-config-react_0.1.1_1789169171154_0.30253945762593926","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@stealthscale/vite-config-react","version":"0.2.0","keywords":["config","eslint","jsx","react","vite"],"license":"MIT","_id":"@stealthscale/vite-config-react@0.2.0","maintainers":[{"name":"stealth-rklopper","email":"roy.klopper@stealthscale.io"}],"homepage":"https://github.com/stealth-scale/config/tree/main/packages/vite-config-react#readme","bugs":"https://github.com/stealth-scale/config/issues","dist":{"shasum":"ef4a8cdd5f64d27e782a7dd57322bb42ed044f47","tarball":"https://registry.npmjs.org/@stealthscale/vite-config-react/-/vite-config-react-0.2.0.tgz","fileCount":15,"integrity":"sha512-vqfEerbUQxJvY1EZ75DfMAr5pCAUpH9QH0zunWc7NtQ12ATZ6BMtWEH/oWpRbPRJOxsyLW+PtMED/CfqDeCkAw==","signatures":[{"sig":"MEUCIF42pFMizx0Vu7+GNSBFaXcb4lGGB0yHwWbyD3J0Q/ElAiEA4L0wBmK/9G/fecdkWwNan7oHTww2YTOOgVgVPipWGUo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDU5/D1rxTPJRptbqRuC6jLtkHZLfN3q3oqAL8uFjRT6AiEA1hCfxiE0F8kbk60qLQh3EyHo9xf2xBWe14cojmLBxFg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@stealthscale%2fvite-config-react@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51219},"type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./dist/index.mjs","./web.json":"./web.json","./preset/app":"./dist/preset/app.mjs","./preset/web":"./dist/preset/web.mjs","./package.json":"./package.json","./vitest.setup.ts":"./vitest.setup.ts"},"imports":{"#*":"./src/*"},"scripts":{"test":"vp test","build":"vp pack","check":"vp check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:58960cd7-0f4b-4146-bf78-0d86754a0193"}},"repository":{"url":"git+https://github.com/stealth-scale/config.git","type":"git","directory":"packages/vite-config-react"},"description":"What a stealth package that renders is configured, checked and formatted by.","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.3.0","publint":"^0.3.24","react-dom":"^19.3.0","vite-plus":"0.3.1","typescript":"^7.0.2","@types/node":"^26","@vitest/coverage-v8":"4.1.11","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@arethetypeswrong/core":"^0.18.5","@stealthscale/vite-config":"^0.1.2","@stealthscale/vite-config-typescript":"^0.1.1"},"peerDependencies":{"react":"^19.3.0","react-dom":"^19.3.0","vite-plus":"0.3.1","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@stealthscale/vite-config":"^0.1.2"},"_npmOperationalInternal":{"tmp":"tmp/vite-config-react_0.2.0_1789207684141_0.0950980362027205","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@stealthscale/vite-config-react","version":"0.3.0","keywords":["config","eslint","jsx","react","vite"],"license":"MIT","_id":"@stealthscale/vite-config-react@0.3.0","maintainers":[{"name":"stealth-rklopper","email":"roy.klopper@stealthscale.io"}],"homepage":"https://github.com/stealth-scale/config/tree/main/packages/vite-config-react#readme","bugs":"https://github.com/stealth-scale/config/issues","dist":{"shasum":"65639c717dd7d3fe8f8c96eb1586f6a5e9df3fc5","tarball":"https://registry.npmjs.org/@stealthscale/vite-config-react/-/vite-config-react-0.3.0.tgz","fileCount":15,"integrity":"sha512-mSnQbw48igcRK8H8PoWsJlQEk/Zzp0ljLpZAXv+wyVsNx4oauVQLLXZtw62rF4Q58dwiVPPDhiG9IkeuvwaCmw==","signatures":[{"sig":"MEUCIHnLo+qCaGjp2onMXMPn/xezM4xHcLe4Y6ge1t21gfzzAiEAz5hwcB0Jd2+mejJHEikEV0rkaNWU68yeu4zLYK84Xx8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC4YKtZxny/xhXnN7d95ItwuQrwlCddkAhMS+pue4hnpgIgHSnuYACMrpf4PbZb+14+QRJZrS9STNdqlsGmKsu44Mo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@stealthscale%2fvite-config-react@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":52763},"type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./dist/index.mjs","./web.json":"./web.json","./preset/app":"./dist/preset/app.mjs","./preset/web":"./dist/preset/web.mjs","./package.json":"./package.json","./vitest.setup.ts":"./vitest.setup.ts"},"imports":{"#*":"./src/*"},"scripts":{"test":"vp test","build":"vp pack","check":"vp check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:58960cd7-0f4b-4146-bf78-0d86754a0193"}},"repository":{"url":"git+https://github.com/stealth-scale/config.git","type":"git","directory":"packages/vite-config-react"},"description":"What a stealth package that renders is configured, checked and formatted by.","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.3.0","publint":"^0.3.24","react-dom":"^19.3.0","vite-plus":"0.3.1","typescript":"^7.0.2","@types/node":"^26","@vitest/coverage-v8":"4.1.11","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@arethetypeswrong/core":"^0.18.5","@stealthscale/vite-config":"^0.1.3","@stealthscale/vite-config-typescript":"^0.1.1"},"peerDependencies":{"react":"^19.3.0","react-dom":"^19.3.0","vite-plus":"0.3.1","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@stealthscale/vite-config":"^0.1.3"},"_npmOperationalInternal":{"tmp":"tmp/vite-config-react_0.3.0_1789209353553_0.020495152372311143","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@stealthscale/vite-config-react","version":"0.4.0","keywords":["config","eslint","jsx","react","vite"],"license":"MIT","_id":"@stealthscale/vite-config-react@0.4.0","maintainers":[{"name":"stealth-rklopper","email":"roy.klopper@stealthscale.io"}],"homepage":"https://github.com/stealth-scale/config/tree/main/packages/vite-config-react#readme","bugs":"https://github.com/stealth-scale/config/issues","dist":{"shasum":"00b6f85b7e1927ee39beaea1da75526ab194015c","tarball":"https://registry.npmjs.org/@stealthscale/vite-config-react/-/vite-config-react-0.4.0.tgz","fileCount":15,"integrity":"sha512-r8HYodfqXcnvotZAgcv+koc7UKQ1nViGgzrca5XdcXwBosyfNeEkfhnacOgRb1RY/ne2h3BdECXblm1sByx1SQ==","signatures":[{"sig":"MEUCIBiQFo3DEf/njbhK3RYUI1SQCu99929FF3Ta6ysOg8EuAiEAwGBTMlmGNiPzf+b8paHiS3cfz1TUiUPWYCO/d11vMrU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCBr61MBTPOirsXALhlRBeX4pN6UnALcwiZwr5RnNRvIgIhANz42zm/lnB3HZA2r9Ngf666TP5layILED2QkxH9p8KZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@stealthscale%2fvite-config-react@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":54515},"type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./dist/index.mjs","./web.json":"./web.json","./preset/app":"./dist/preset/app.mjs","./preset/web":"./dist/preset/web.mjs","./package.json":"./package.json","./vitest.setup.ts":"./vitest.setup.ts"},"imports":{"#*":"./src/*"},"scripts":{"test":"vp test","build":"vp pack","check":"vp check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:58960cd7-0f4b-4146-bf78-0d86754a0193"}},"repository":{"url":"git+https://github.com/stealth-scale/config.git","type":"git","directory":"packages/vite-config-react"},"description":"What a stealth package that renders is configured, checked and formatted by.","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.3.0","publint":"^0.3.24","react-dom":"^19.3.0","vite-plus":"0.3.1","typescript":"^7.0.2","@types/node":"^26","@vitest/coverage-v8":"4.1.11","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@arethetypeswrong/core":"^0.18.5","@stealthscale/vite-config":"^0.1.5","@stealthscale/vite-config-typescript":"^0.1.1"},"peerDependencies":{"react":"^19.3.0","happy-dom":"^20.14.3","react-dom":"^19.3.0","vite-plus":"0.3.1","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@stealthscale/vite-config":"^0.1.5"},"_npmOperationalInternal":{"tmp":"tmp/vite-config-react_0.4.0_1789212850486_0.981482441513537","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@stealthscale/vite-config-react","version":"0.4.1","keywords":["config","eslint","jsx","react","vite"],"license":"MIT","_id":"@stealthscale/vite-config-react@0.4.1","maintainers":[{"name":"stealth-rklopper","email":"roy.klopper@stealthscale.io"}],"homepage":"https://github.com/stealth-scale/config/tree/main/packages/vite-config-react#readme","bugs":"https://github.com/stealth-scale/config/issues","dist":{"shasum":"4f7de18d39b51fef099cbc4870751cc6de3e46d0","tarball":"https://registry.npmjs.org/@stealthscale/vite-config-react/-/vite-config-react-0.4.1.tgz","fileCount":15,"integrity":"sha512-7eTAh9n1PRAJ/EOv1Oenx1xlIVY/RCDN8bpNVc63BD1bya3GUi6a9Y0kKPeJDXcf2PtyksueLPVgMU5MZ0wwCw==","signatures":[{"sig":"MEQCIGrJo8BBvVTqtFJiu8lYotXPszEVQ8rKEGMj+GEGEUYfAiA+bgfayub0pNt1WOVJtyTgXcZDCRBhwxUwMhKJKQx2Bg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICPNEgOqDNpCyS0/pZACdqr32734taUigIFuqiNDFT25AiEArrR9o+WOjixVaQXq5zGof8Q4rqDquR9qxQ5Q5P7xMmc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@stealthscale%2fvite-config-react@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":54551},"type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./dist/index.mjs","./web.json":"./web.json","./preset/app":"./dist/preset/app.mjs","./preset/web":"./dist/preset/web.mjs","./package.json":"./package.json","./vitest.setup.ts":"./vitest.setup.ts"},"imports":{"#*":"./src/*"},"scripts":{"test":"vp test","build":"vp pack","check":"vp check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:58960cd7-0f4b-4146-bf78-0d86754a0193"}},"repository":{"url":"git+https://github.com/stealth-scale/config.git","type":"git","directory":"packages/vite-config-react"},"description":"What a stealth package that renders is configured, checked and formatted by.","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.3.0","publint":"^0.3.24","react-dom":"^19.3.0","vite-plus":"0.3.1","typescript":"^7.0.2","@types/node":"^26","@vitest/coverage-v8":"4.1.11","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@arethetypeswrong/core":"^0.18.5","@stealthscale/vite-config":"^0.1.5","@stealthscale/vite-config-typescript":"^0.1.1"},"peerDependencies":{"react":"^19.3.0","happy-dom":"^20.14.3","react-dom":"^19.3.0","vite-plus":"0.3.1","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@stealthscale/vite-config":"^0.1.5"},"_npmOperationalInternal":{"tmp":"tmp/vite-config-react_0.4.1_1789214648614_0.028189564354148988","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@stealthscale/vite-config-react","version":"0.5.0","keywords":["config","eslint","jsx","react","vite"],"license":"MIT","_id":"@stealthscale/vite-config-react@0.5.0","maintainers":[{"name":"stealth-rklopper","email":"roy.klopper@stealthscale.io"}],"homepage":"https://github.com/stealth-scale/config/tree/main/packages/vite-config-react#readme","bugs":"https://github.com/stealth-scale/config/issues","dist":{"shasum":"316f953bdcf44d199400628c27477c4fb59e4b68","tarball":"https://registry.npmjs.org/@stealthscale/vite-config-react/-/vite-config-react-0.5.0.tgz","fileCount":14,"integrity":"sha512-4KpBo0khToEKALocatwEG6Y+5cT9ynhoSZbBnuOd3LyKXyPHekvl8Xyi4XZizXbYz5R0sM/o9+VHd8N+1aV+6w==","signatures":[{"sig":"MEUCIQC+SkjqrqT5x8Esbc93VPm+z5jZeckahtdyoWlW3YatgQIgZuDmJtR/w1ZV3ZYsAZI/HrsPbuvp83J+ZU7uduFWa4Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDFEKnUqLu8Q+c3bYsm4sRUS4DD5WbVBcIrYZpb+IZbsQIgQ9Xm6yja2AFFPIM0vUK6J4qWs7oeXCcu0PHGJ5aUjTs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@stealthscale%2fvite-config-react@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":52321},"type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./dist/index.mjs","./web.json":"./web.json","./preset/app":"./dist/preset/app.mjs","./preset/web":"./dist/preset/web.mjs","./package.json":"./package.json","./vitest.setup.ts":"./vitest.setup.ts"},"imports":{"#*":"./src/*"},"scripts":{"test":"vp test","build":"vp pack","check":"vp check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:58960cd7-0f4b-4146-bf78-0d86754a0193"}},"repository":{"url":"git+https://github.com/stealth-scale/config.git","type":"git","directory":"packages/vite-config-react"},"description":"What a stealth package that renders is configured, checked and formatted by.","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.3.0","publint":"^0.3.24","react-dom":"^19.3.0","vite-plus":"0.3.1","typescript":"^7.0.2","@types/node":"^26","@vitest/coverage-v8":"4.1.11","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@arethetypeswrong/core":"^0.18.5","@stealthscale/vite-config":"^0.2.0","@stealthscale/vite-config-typescript":"^0.1.1"},"peerDependencies":{"react":"^19.3.0","happy-dom":"^20.14.3","react-dom":"^19.3.0","vite-plus":"0.3.1","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@stealthscale/vite-config":"^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-config-react_0.5.0_1789219831574_0.557019834544719","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@stealthscale/vite-config-react","version":"0.5.1","keywords":["config","eslint","jsx","react","vite"],"license":"MIT","_id":"@stealthscale/vite-config-react@0.5.1","maintainers":[{"name":"stealth-rklopper","email":"roy.klopper@stealthscale.io"}],"homepage":"https://github.com/stealth-scale/config/tree/main/packages/vite-config-react#readme","bugs":"https://github.com/stealth-scale/config/issues","dist":{"shasum":"2106fd965b8132de02d4b138c427f293a1447e82","tarball":"https://registry.npmjs.org/@stealthscale/vite-config-react/-/vite-config-react-0.5.1.tgz","fileCount":14,"integrity":"sha512-80ahdgdJRvj54ZWAR7N9exAIq4BmyA43b8Xvoommh5olsx5vaUiXCeGC1iSHRXUlUpt8eFHChx2J1yikZT0ssA==","signatures":[{"sig":"MEUCIQClGyr8IFxErGZrfy+//oLxf7ZI3gVUliJSaojbtJpiTwIgTrS5WJCTpC3yNYR9EecmqDoAxxHKpsY78LmJdHmtHhQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCSA87n7R/iKkHzF+n1wDVdvs9zWAFcajRMrfrtrByC3AIhAObkN6EWWA/56EkjXMjVCw56eWBhsXUjfTZFEpbHLOcV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@stealthscale%2fvite-config-react@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":52321},"type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./dist/index.mjs","./web.json":"./web.json","./preset/app":"./dist/preset/app.mjs","./preset/web":"./dist/preset/web.mjs","./package.json":"./package.json","./vitest.setup.ts":"./vitest.setup.ts"},"imports":{"#*":"./src/*"},"scripts":{"test":"vp test","build":"vp pack","check":"vp check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:58960cd7-0f4b-4146-bf78-0d86754a0193"}},"repository":{"url":"git+https://github.com/stealth-scale/config.git","type":"git","directory":"packages/vite-config-react"},"description":"What a stealth package that renders is configured, checked and formatted by.","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.3.0","publint":"^0.3.24","react-dom":"^19.3.0","vite-plus":"0.3.1","typescript":"^7.0.2","@types/node":"^26","@vitest/coverage-v8":"4.1.11","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@arethetypeswrong/core":"^0.18.5","@stealthscale/vite-config":"^0.3.0","@stealthscale/vite-config-typescript":"^0.1.1"},"peerDependencies":{"react":"^19.3.0","happy-dom":"^20.14.3","react-dom":"^19.3.0","vite-plus":"0.3.1","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@stealthscale/vite-config":"^0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-config-react_0.5.1_1789333221023_0.3679112278029779","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@stealthscale/vite-config-react","version":"0.7.0","keywords":["config","eslint","jsx","mdx","react","vite"],"license":"MIT","_id":"@stealthscale/vite-config-react@0.7.0","maintainers":[{"name":"stealth-rklopper","email":"roy.klopper@stealthscale.io"}],"homepage":"https://github.com/stealth-scale/config/tree/main/packages/vite-config-react#readme","bugs":"https://github.com/stealth-scale/config/issues","dist":{"shasum":"0c522b0e6142eba132f511196906f2901813400e","tarball":"https://registry.npmjs.org/@stealthscale/vite-config-react/-/vite-config-react-0.7.0.tgz","fileCount":10,"integrity":"sha512-A8r0bfRKJbyTMrX+FnsqlIsUS6X8920rlqJ069Ajb9cDVj9JOXCf1QMM6BN2Em4NkB/zwA1R2Q22PXxdNib2HA==","signatures":[{"sig":"MEUCID9KuU4PF4bm7RIQy6dwltnGE5S4dM2yky2Njs85Ni/YAiEA2/Gib3P5z52XPfFTZUrFife1LeEgSm2nhfkUQkt6W8w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCM92YI5SxQmImAYF2ScMI3bgvinZ3ZypopnqN1y1YUTQIhAMa+/yflAfi+Rlb1GDuNu7k2W3NWKdDMXAi8Txkc3mKB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@stealthscale%2fvite-config-react@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":58285},"type":"module","engines":{"node":">=26.0.0"},"exports":{".":"./dist/index.mjs","./mdx":"./mdx.d.ts","./web.json":"./web.json","./package.json":"./package.json","./vitest.setup.ts":"./vitest.setup.ts"},"imports":{"#*":"./src/*"},"scripts":{"test":"vp test","build":"vp pack","check":"vp check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:58960cd7-0f4b-4146-bf78-0d86754a0193"}},"repository":{"url":"git+https://github.com/stealth-scale/config.git","type":"git","directory":"packages/vite-config-react"},"description":"Adds the JSX transform, the React lint rules, a test document and an MDX compiler to a package that renders.","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.1","react":"^19.3.0","vitest":"4.1.11","publint":"^0.3.24","react-dom":"^19.3.0","@types/mdx":"^2.0.14","typescript":"^7.0.2","@types/node":"^26.5.1","@types/react":"^19.3.0","@mdx-js/rollup":"^3.1.1","@vitest/coverage-v8":"4.1.11","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@arethetypeswrong/core":"^0.18.5","@testing-library/react":"^16.3.0","@stealthscale/vite-config":"^0.6.0","@stealthscale/vite-config-typescript":"^0.3.0"},"peerDependencies":{"vite":"^8.0.0","react":"^19.3.0","vitest":"^4.0.0","happy-dom":"^20.14.3","react-dom":"^19.3.0","@types/mdx":"^2.0.14","@mdx-js/rollup":"^3.1.1","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@testing-library/react":"^16.3.0","@stealthscale/vite-config":"^0.6.0"},"peerDependenciesMeta":{"@types/mdx":{"optional":true},"@mdx-js/rollup":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vite-config-react_0.7.0_1789648485190_0.2781861171203348","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"_id":"@stealthscale/vite-config-react@0.8.0","bugs":"https://github.com/stealth-scale/config/issues","dist":{"shasum":"146ad4c611d12fa098c40aa59ea545b2d580d691","tarball":"https://registry.npmjs.org/@stealthscale/vite-config-react/-/vite-config-react-0.8.0.tgz","fileCount":10,"integrity":"sha512-/jNhW7Pug9mSOaoSIDvgWkYhqhhOLePlriYbrd2meMy+VLKgpFCbu7H6d+8uK1NKZdsy86SNBdgiIwF9v+XFxQ==","signatures":[{"sig":"MEQCIBrYfZyo8pdGr/9/5nWp7y9CHIDYr1SkkktufwYC6occAiBkb24Kssg+RAKTAp4j9pHbj5CXhAZwHGaJSAPlKhGAHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHIhH7m5rniQRqygOy2vOuVuGlzeDoMg/+lR2KqknUv7AiB7A6rYbB+wsfnGwxMSQJwkESfEypvVC5JPArttILjI7w=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@stealthscale%2fvite-config-react@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":75640},"name":"@stealthscale/vite-config-react","type":"module","engines":{"node":">=26.0.0"},"exports":{".":"./dist/index.mjs","./mdx":"./mdx.d.ts","./web.json":"./web.json","./package.json":"./package.json","./vitest.setup.ts":"./vitest.setup.ts"},"imports":{"#*":"./src/*"},"license":"MIT","scripts":{"test":"vp test","build":"vp pack","check":"vp check"},"version":"0.8.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:58960cd7-0f4b-4146-bf78-0d86754a0193"}},"homepage":"https://github.com/stealth-scale/config/tree/main/packages/vite-config-react#readme","keywords":["config","eslint","jsx","mdx","react","vite"],"repository":{"url":"git+https://github.com/stealth-scale/config.git","type":"git","directory":"packages/vite-config-react"},"description":"Adds the JSX transform, the React lint rules, a test document and an MDX compiler to a package that renders.","directories":{},"maintainers":[{"name":"stealth-rklopper","email":"roy.klopper@stealthscale.io"}],"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.1","react":"^19.3.0","vitest":"4.1.11","publint":"^0.3.24","react-dom":"^19.3.0","@types/mdx":"^2.0.14","typescript":"^7.0.2","@types/node":"^26.5.1","@types/react":"^19.3.0","@mdx-js/rollup":"^3.1.1","@types/babel__core":"^7.20.5","@vitest/coverage-v8":"4.1.11","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@arethetypeswrong/core":"^0.18.5","@rolldown/plugin-babel":"^0.2.4","@testing-library/react":"^16.3.0","@stealthscale/vite-config":"^0.6.0","babel-plugin-react-compiler":"^1.0.0","@stealthscale/vite-config-typescript":"^0.3.0"},"peerDependencies":{"vite":"^8.0.0","react":"^19.3.0","vitest":"^4.0.0","happy-dom":"^20.14.3","react-dom":"^19.3.0","@types/mdx":"^2.0.14","@mdx-js/rollup":"^3.1.1","oxc-transform-react":"^0.149.0","@vitejs/plugin-react":"^6.1.1","@rolldown/plugin-babel":"^0.2.4","@testing-library/react":"^16.3.0","@stealthscale/vite-config":"^0.6.0","babel-plugin-react-compiler":"^1.0.0"},"peerDependenciesMeta":{"@types/mdx":{"optional":true},"@mdx-js/rollup":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vite-config-react_0.8.0_1789737844696_0.005479689581368241"}}},"time":{"created":"2026-09-11T21:59:35.181Z","modified":"2026-09-18T13:24:05.168Z","0.1.0":"2026-09-11T21:59:35.461Z","0.1.1":"2026-09-11T23:26:11.227Z","0.2.0":"2026-09-12T10:08:04.241Z","0.3.0":"2026-09-12T10:35:53.642Z","0.4.0":"2026-09-12T11:34:10.578Z","0.4.1":"2026-09-12T12:04:08.714Z","0.5.0":"2026-09-12T13:30:31.669Z","0.5.1":"2026-09-13T21:00:21.120Z","0.7.0":"2026-09-17T12:34:45.273Z","0.8.0":"2026-09-18T13:24:04.780Z"},"bugs":"https://github.com/stealth-scale/config/issues","license":"MIT","homepage":"https://github.com/stealth-scale/config/tree/main/packages/vite-config-react#readme","keywords":["config","eslint","jsx","mdx","react","vite"],"repository":{"url":"git+https://github.com/stealth-scale/config.git","type":"git","directory":"packages/vite-config-react"},"description":"Adds the JSX transform, the React lint rules, a test document and an MDX compiler to a package that renders.","maintainers":[{"name":"stealth-rklopper","email":"roy.klopper@stealthscale.io"}],"readme":"# @stealthscale/vite-config-react\n\nA package that renders extends `@stealthscale/vite-config-react` beside its tier from\n`@stealthscale/vite-config`. One call adds the JSX transform, the React Compiler, the document its\ntests render into, and the emptying of that document between them. A second call, written once at\nthe repository root, turns on the React and accessibility rules and gives React an import group of\nits own.\n\n## Install\n\n```bash\npnpm add -D @stealthscale/vite-config-react\n```\n\nThe package peers on `@rolldown/plugin-babel`, `@stealthscale/vite-config`,\n`@testing-library/react`, `@vitejs/plugin-react`, `babel-plugin-react-compiler`, `happy-dom`,\n`oxc-transform-react`, `react`, `react-dom`, `vite` and `vitest`. Install all eleven. A package that\nwrites MDX installs `@mdx-js/rollup` and `@types/mdx` as well. Both are optional peers. It runs on\nNode 26 and later.\n\n## Usage\n\nExtend the tier a package already uses and write `layers()` beside it. Both `preset/app` and\n`preset/web` compose the same layers, and each tier takes what it has a use for.\n\n```ts\nimport * as react from \"@stealthscale/vite-config-react\";\nimport { defineConfig } from \"@stealthscale/vite-config/preset/app\";\n\nexport default defineConfig(import.meta.dirname, { extends: [react.layers()] });\n```\n\nA package that writes documents in MDX asks for the MDX compiler in the same call. The layer is left\nout unless asked for, so a package without documents installs nothing for them.\n\n```ts\nexport default defineConfig(import.meta.dirname, { extends: [react.layers({ mdx: true })] });\n```\n\n`layers()` states no rule and no format. A linter and a formatter read the root configuration only.\nA package that repeats them lints nothing extra and slows its own build down. `workspace()` declares\nthe rules. A repository root resolves it once for every package under it.\n\n```ts\nimport * as react from \"@stealthscale/vite-config-react\";\nimport { defineConfig } from \"@stealthscale/vite-config/preset/workspace\";\n\nexport default defineConfig(import.meta.dirname, { extends: [react.workspace()] });\n```\n\n## Reference\n\nEach factory named here returns a layer under the name of the call that produced it. A consumer\ndrops one layer by name and keeps the rest.\n\n### Blocks\n\n| Block        | What it configures                                                          |\n| ------------ | --------------------------------------------------------------------------- |\n| `federation` | React and its renderer, shared between a host and its remotes as one copy   |\n| `fmt`        | The import group React and its renderer sort into                           |\n| `lint`       | The linter plugins, the React rules, and the files excused from one of them |\n| `plugin`     | The JSX transform, the refresh that replaces a component, and the compiler  |\n| `test`       | The document a component renders into, and the emptying of it between tests |\n\n### Layers\n\n| Export                 | Signature                                   | What it returns                                                                                                                                              |\n| ---------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `layers`               | `(stated?: Rendering) => readonly Layer[]`  | `react.plugin.refresh`, both `plugin.compiler` layers, `react.test.cleanup` and `react.test.document`, plus both `plugin.mdx` layers when `mdx` is true      |\n| `workspace`            | `() => readonly Layer[]`                    | Seven lint and format layers, every rule ordered ahead of every relaxation                                                                                   |\n| `federation.installed` | `(read?: () => unknown) => string`          | The version string React's own manifest declares                                                                                                             |\n| `federation.shared`    | `(version?: string) => federation.Shared`   | `react` and `react-dom` as singletons, at the range of the installed major                                                                                   |\n| `fmt.imports`          | `() => Override`                            | An override sorting React ahead of every other import group                                                                                                  |\n| `lint.fixtures`        | `() => Contribution`                        | A relaxation lifting `react/no-multi-comp` from a specification                                                                                              |\n| `lint.plugins`         | `() => readonly Contribution[]`             | One contribution per plugin, `react` first and `jsx-a11y` second                                                                                             |\n| `lint.rendered`        | `() => Contribution`                        | A relaxation excusing `.spec.tsx` and `.fixtures.tsx` from the docblock rules                                                                                |\n| `lint.rules`           | `() => Contribution`                        | Six React rules, declared over `**/*.{ts,tsx}`                                                                                                               |\n| `lint.runtime`         | `() => Contribution`                        | A relaxation switching `react/react-in-jsx-scope` off                                                                                                        |\n| `plugin.compiler`      | `(stated?: Compiled) => readonly Layer[]`   | `react.plugin.compiler`, which appends the Babel pass to the plugins the tier built, and `react.plugin.compiler(pack)`, which gives the packer the same pass |\n| `plugin.mdx`           | `(stated?: Documented) => readonly Layer[]` | `react.plugin.mdx`, which puts the MDX plugin ahead of every other, and `react.plugin.mdx(pack)`, which gives the packer the same plugin                     |\n| `plugin.refresh`       | `(stated?: Refreshed) => Contribution`      | The React plugin, appended to whatever plugins the tier built                                                                                                |\n| `test.cleanup`         | `() => Contribution`                        | The absolute path of `./vitest.setup.ts`, appended to `test.setupFiles`                                                                                      |\n| `test.document`        | `() => Preset`                              | A preset setting `test.environment` to `happy-dom`                                                                                                           |\n\nNote: a preset replaces the environment a tier set rather than adding to it. `react.test.document`\nis a preset. A package that needs another document implementation takes the layer back by name with\n`remove()` from `@stealthscale/vite-config`.\n\n### The transform\n\n`plugin.refresh()` compiles `.ts`, `.tsx`, `.js`, `.jsx` and `.mdx`. It leaves `/node_modules/`\nalone and selects the automatic JSX runtime. Each field of `Refreshed` widens or narrows one of\nthose defaults. A field left undefined keeps the default.\n\n| Field    | Type                | Default                                                        |\n| -------- | ------------------- | -------------------------------------------------------------- |\n| `also`   | `readonly RegExp[]` | Empty. Each pattern compiles beside the five kinds listed here |\n| `except` | `readonly RegExp[]` | Empty. Each pattern joins `/node_modules/`                     |\n| `from`   | `string`            | `react`, also exported as `plugin.FACTORY`                     |\n\nNote: the automatic runtime imports the factory itself. No file under this transform needs React in\nscope. `web.json` selects the default factory for the type checker, so a package that changes `from`\nstates the matching `jsxImportSource` in its own tsconfig.\n\n### The compiler\n\n`plugin.compiler()` runs the React Compiler over `.ts`, `.tsx`, `.js`, `.jsx` and `.mdx`. The\ncompiler reads what a component renders from and writes a memo cache around it, so the component\nrenders again only when one of those values has changed. A component it compiled needs no `useMemo`\nand no `useCallback` for speed.\n\nIt returns two layers. `react.plugin.compiler` appends the pass to what a tier builds, and\n`react.plugin.compiler(pack)` gives the packer the same pass, so a library publishes memoised\ncomponents. Without the second one a library would publish what its author wrote, and a consumer\ninstalling it compiles nothing under `node_modules`.\n\nThe memo cache is written against the React a build resolves. React is a peer of this package, so\nthe version comes from the consumer's own tree and a major upgrade needs no edit anywhere. React 19\ncarries the runtime itself. React 17 and 18 take it from `react-compiler-runtime`, which a package\non either version installs beside React. A React newer than the compiler has a target for takes the\nnewest target, because every one of those carries the runtime in React. A React older than 17 fails\nwhen the configuration is composed, naming the version it read.\n\n`Compiled` has one field, `target`, which overrides that reading. State it where a package renders\nagainst a React it does not install, such as a library published for a consumer on an older one.\n`layers()` takes the same object in place of `true`:\n\n```ts\nexport default defineConfig(import.meta.dirname, {\n  extends: [react.layers({ compiler: { target: \"18\" } })],\n});\n```\n\nA package that memoises by hand drops both layers with `compiler: false`:\n\n```ts\nexport default defineConfig(import.meta.dirname, { extends: [react.layers({ compiler: false })] });\n```\n\nWarning: `useMemo` and `useCallback` still have one use the compiler does not cover. The compiler\ncaches against the values a component read, so the identity it returns changes when one of them\ndoes. Write either hook where a caller depends on one identity for the whole life of a component.\n\nThe compiler runs through the Babel bridge rather than through the React plugin's own `compiler`\noption. That option resolves `babel-plugin-react-compiler` from the plugin's own directory. An\nisolated `node_modules` gives it no path to a package this workspace installed, so the option\ncompiles nothing and turns fast refresh off as well. The bridge resolves the preset from this\npackage, where it is declared.\n\nWarning: a package missing `babel-plugin-react-compiler` or `@rolldown/plugin-babel` fails when its\nconfiguration is composed, naming both. Babel resolves a preset during a transform rather than when\nit is configured, so without that check the package would build clean and memoise none of it.\n\nThe layer raises the compiler's `panicThreshold` from `none` to `critical_errors`. A critical error\nis the compiler failing one of its own invariants, and an unrecognised one is a case it has no\nhandling for. Both mean the compiler is wrong rather than the code, and the build stops on either.\n\nA function the compiler declines on purpose is left as written and reported nowhere, which covers\nevery pattern it cannot prove safe to memoise. Mark such a function with the `\"use no memo\"`\ndirective, which turns a refusal the build would stop on into a decision the source records. The\nserver environment is left out on the same terms, excused by the preset's `applyToEnvironmentHook`.\nA package that renders on the server runs that half uncompiled.\n\nNeither layer applies where the mode is `test`. Each memo cache is a branch nobody wrote, and\ncoverage counts it, so a package held to full branch coverage would be asked to exercise a\ncompiler's caching rather than its own code. A specification reads what its author wrote. The build\nis what proves the compiled form, and it fails on any error the compiler raises.\n\nWarning: the compiler asks a Babel node path whether it is an `LVal`. Babel 8 took\n`AssignmentPattern` out of that alias, so under Babel 8 the compiler refuses every\n`const { a = 1 } = b` and leaves the whole function uncompiled without reporting it. The bridge\naccepts either major. A repository states an override to hold the peer at 7:\n\n```yaml\noverrides:\n  \"@rolldown/plugin-babel>@babel/core\": ^7.29.0\n```\n\nBabel 7 ships no types of its own, so a package reading the bridge's own types installs\n`@types/babel__core` beside it.\n\n### MDX\n\n`plugin.mdx()` compiles an `.mdx` file into a component with `@mdx-js/rollup`. It returns two\nlayers. `react.plugin.mdx` is an override that puts the plugin ahead of every plugin the tree built:\nthe React Compiler runs in the same `pre` phase and fails on raw MDX when it runs first, and an\noverride is applied after every contribution, so the order is the same whatever a package wrote.\n`react.plugin.mdx(pack)` appends the same plugin to `pack.plugins`, because the packer reads that\nlist and nothing under `plugins`. `layers({ mdx: true })` adds both.\n\nThe plugin compiles `.mdx` and nothing else. At its own default it also claims `.md`, and a markdown\nfile imported with `?raw` then arrives as a component rather than as a string. `Documented` has one\nfield, `from`, with the same meaning and default as `Refreshed.from`. A package that changes one\nchanges the other.\n\nTypes come from `@types/mdx` and from `./mdx.d.ts`, which this package publishes as the `./mdx`\nexport. Reference it from the `globals.d.ts` the package already includes:\n\n```ts\n/// <reference types=\"@stealthscale/vite-config/globals\" />\n/// <reference types=\"@stealthscale/vite-config-react/mdx\" />\n```\n\nThe file declares the `*.mdx` module and types the elements a document renders against React's JSX.\nWithout it, `MDXComponents` accepts any function for any element under `@types/react` 19, because\n`@types/mdx` reads a global `JSX` namespace and `@types/react` 19 declares none.\n\nNote: a document's default export is typed. A constant it exports beside it is not, and TypeScript\nreports `has no exported member`. Declare it in a sibling `<name>.d.mdx.ts`, which\n`allowArbitraryExtensions` in the base tier resolves:\n\n```ts\nexport { default } from \"*.mdx\";\n\nexport const title: string;\n```\n\nWarning: a library that re-exports an `.mdx` module from its entry gets a broken `index.d.mts` from\n`vp pack`. The declaration imports its types from the JavaScript chunk. Export a document through a\n`.tsx` module that imports it, and the declarations come out whole. An application has no such step\nand needs no wrapper.\n\n`@mdx-js/rollup` peers on `rollup` for one type and imports nothing from it. Left alone, the package\nmanager installs 5 MB of `rollup` and a native binary for a bundler nothing here runs. A repository\nstates two overrides in `pnpm-workspace.yaml` to drop it:\n\n```yaml\noverrides:\n  \"@mdx-js/rollup>rollup\": \"-\"\n  \"@rollup/pluginutils>rollup\": \"-\"\n```\n\nThe formatter reads `.mdx` and wraps its paragraphs to the width the rest of the repository is\nwritten to. The linter does not read `.mdx`.\n\n## The tsconfig fragment and the setup file\n\n`./web.json` is a tsconfig fragment rather than a tier. It sets one compiler option,\n`\"jsx\": \"react-jsx\"`. List it after the tier in the array form of `extends`, as\n`[\"@stealthscale/vite-config-typescript/web.json\", \"@stealthscale/vite-config-react/web.json\"]`. The\nfragment then cannot be extended without its base by mistake.\n\n`./vitest.setup.ts` does two things. It sets `IS_REACT_ACT_ENVIRONMENT`, which React reads before it\nprocesses an update inside `act`. It also registers one `afterEach` that unmounts every root Testing\nLibrary rendered and then replaces the children of `document.body`, so an effect's cleanup runs and\none test never reads markup another test mounted. Reach the file through `test.cleanup()` rather\nthan by path. That layer resolves it by package name, and the same layer works from a workspace link\nand from an installed copy.\n\nWarning: a package that calls `act` without this setup file loads no such global. React then logs\n`The current testing environment is not configured to support act(...)` on every update inside an\n`act` scope, and the warning that reports an update outside `act` is never raised at all.\n\n## Federated applications\n\n`federation.shared()` reads the version of the React installed beside this package. It widens that\nversion to the whole major and marks `react` and `react-dom` as singletons at the resulting range.\nPass the result to `federation.host()` or `federation.remote()`.\n\n```ts\nfederation.host({\n  name: \"host\",\n  remotes: [\"remote\"],\n  shared: react.federation.shared(),\n});\n```\n\nThe range covers the major rather than the exact version. Applications on two different patches of\none major share a dispatcher safely. A narrower range would make a host refuse a remote it can in\nfact run. Pass a version string to pin the result. `federation.installed()` reads the installed\nversion on its own.\n\nWarning: two copies of React on one page keep separate dispatchers. A component from a remote then\ncalls a hook on the copy that did not render it, and React reports the call as illegal.\n\n## Licence\n\nMIT. See [LICENSE](LICENSE).\n","readmeFilename":""}