{"_id":"xrblocks","_rev":"34-0105617fe31f64e5c73d949205a550b0","name":"xrblocks","dist-tags":{"latest":"0.24.0"},"versions":{"0.1.0":{"name":"xrblocks","version":"0.1.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.1.0","maintainers":[{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"ac104eed6161da21fb25617ece9791eedecb68a0","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.1.0.tgz","fileCount":225,"integrity":"sha512-aUJkwM7giTEMc9+uxwziW0JA8X3Qhwe/BHYM3NlsFW53L5sv7iV8J6PxEWAqym7O4/LGNQQkL/KMf0u5MiFWmA==","signatures":[{"sig":"MEUCICOvc3H73D6UkHTyWAptHnEmrMn/yBSt4gL7GWPssMWXAiEA2Bk1sd+ygd6FEzi4PbaGIV5a23TQgmFwlFyt/i8d4OQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3285246},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"924884fa46df2d5120a1814375c75d3e92057af7","scripts":{"build":"echo \"Building xrblocks.js...\" && rollup -c","start":"rollup -c -w","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.6.1","description":"XR Blocks SDK","directories":{},"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^5.16.0","rollup":"^4.41.0","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/three":"^0.180.0","@types/webxr":"^0.5.23","troika-types":"^0.0.6","@google/genai":"^1.15.0","@sparkjsdev/spark":"^0.1.8","troika-three-text":"^0.52.4","typescript-eslint":"^8.43.0","@dimforge/rapier3d":"^0.17.0","eslint-plugin-tsdoc":"^0.4.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-replace":"^6.0.2","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.6"},"peerDependencies":{"three":"^0.180.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.1.0_1759171380889_0.7101971932832494","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"xrblocks","version":"0.2.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.2.0","maintainers":[{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"488562784f1c35ab7b2aa3a9044612a83758d8a2","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.2.0.tgz","fileCount":225,"integrity":"sha512-jrlhjheXTPsygOIBfMVipbAoOCUhxbYr/YAY9Z1MG7ASKyDh1pED59dhiotcWUWUKR/JhQuv4vRDxAHq/uP88A==","signatures":[{"sig":"MEUCIQCslbS5NpzhqL7geOHC4KvfyYx1VDGDSE2x/s2NMtYH/QIgbf/BKWipq1KoGn+HiU0ASwH1k17VfUAjfH2JAo6mLd0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3419340},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"c24c0e2aadcfcd834e5b2cffd5f6c1149e29f3f6","scripts":{"build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","start":"rollup -c -w","prepare":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.6.2","description":"XR Blocks SDK","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^5.16.0","rollup":"^4.41.0","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/three":"^0.180.0","@types/webxr":"^0.5.23","troika-types":"^0.0.6","@google/genai":"^1.15.0","@sparkjsdev/spark":"^0.1.8","troika-three-text":"^0.52.4","typescript-eslint":"^8.43.0","@dimforge/rapier3d":"^0.17.0","eslint-plugin-tsdoc":"^0.4.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-replace":"^6.0.2","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.6"},"peerDependencies":{"three":"^0.180.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.2.0_1760998017419_0.4717894751978169","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"xrblocks","version":"0.3.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.3.0","maintainers":[{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"e14be9cd0f658d0f90a72a76dca0ff3f72a6c194","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.3.0.tgz","fileCount":233,"integrity":"sha512-1hZ85QqTQ0eJmERA5Y7v76AR2ZP+RsLSJwtx4Yi6z2EpEQyHukBLzm+5dIY2TOWHNg6EZAX9qVf88eWbTc3qiQ==","signatures":[{"sig":"MEUCIQDccwBv76PVM6g5QxAcDQEpS51dOdBzpO06fuGD7WCfowIgVyGlSY43zLZ1GO+qi4BQBm5c8Iqy3DQOHAVKHWn3qCg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3559993},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"c7b519daf8eff6fa3cdbb1742f71e76455f29b8a","scripts":{"lint":"eslint src","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","start":"rollup -c -w","format":"npm run format:fix","prepare":"npm run build","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts}\" --write","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts}\" --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.6.2","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.41.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/three":"^0.181.0","@types/webxr":"^0.5.23","troika-types":"^0.0.6","@google/genai":"^1.28.0","@sparkjsdev/spark":"^0.1.8","troika-three-text":"^0.52.4","typescript-eslint":"^8.43.0","@dimforge/rapier3d":"^0.19.2","eslint-plugin-tsdoc":"^0.4.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-replace":"^6.0.2","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7"},"peerDependencies":{"three":"^0.181.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.3.0_1762214866374_0.5583337299139741","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"xrblocks","version":"0.3.1","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.3.1","maintainers":[{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"e5dab56fb9ea1ea2a2308a87a4c3cb46a0b5fa3e","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.3.1.tgz","fileCount":232,"integrity":"sha512-uVud8rbMiEZWK4sOjku8syWicLWVCsANawX4eGMkKgJuxf/t81/5ULen+eARVEQxaJYYdr6fMB0nm3TsyBvJsg==","signatures":[{"sig":"MEUCIDOpn8Tr3uPCVTXl5JaYVvfyO9GFvAmmv9synwZGYbnJAiEAlIKRdso2rsN7jQ14o3bIuLkoHLfHD3pe5XMzqKd3TLc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3557960},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"8945d462bf0d19fb21920befdb398a04dc1df0be","scripts":{"lint":"eslint src","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","start":"rollup -c -w","format":"npm run format:fix","prepare":"npm run build","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts}\" --write","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts}\" --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.6.2","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.41.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/three":"^0.181.0","@types/webxr":"^0.5.23","troika-types":"^0.0.6","@google/genai":"^1.28.0","@sparkjsdev/spark":"^0.1.8","troika-three-text":"^0.52.4","typescript-eslint":"^8.43.0","@dimforge/rapier3d":"^0.19.2","eslint-plugin-tsdoc":"^0.4.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-replace":"^6.0.2","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7"},"peerDependencies":{"three":"^0.181.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.3.1_1762237971764_0.9967653458651724","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"xrblocks","version":"0.4.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.4.0","maintainers":[{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"31e1628757ca04f837c22c8855ac9cf7fe0f2bb2","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.4.0.tgz","fileCount":232,"integrity":"sha512-qlwCu8v+e/+awwQR26CfJgoYNJo2T3fKAwpeeOF9/mod31VhLzfW7W+Y8wgLCHQVkelPT1hxDn9imqfh8oxs5w==","signatures":[{"sig":"MEYCIQDVyI86kX8dbA9OpxT3LdWPO/alSsRJdVRMm//09DNZCAIhAJVQdlpSyu55s/WiUB7Rjz25F9Cct97VLiYwJxZRUPRN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3560029},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"385db9690440a10df2fcf1534e9949173597cd34","scripts":{"lint":"eslint src","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","start":"rollup -c -w","format":"npm run format:fix","prepare":"npm run build","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts}\" --write","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts}\" --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.6.3","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.41.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/three":"^0.181.0","@types/webxr":"^0.5.23","troika-types":"^0.0.6","@google/genai":"^1.28.0","@sparkjsdev/spark":"^0.1.8","troika-three-text":"^0.52.4","typescript-eslint":"^8.43.0","@dimforge/rapier3d":"^0.19.2","eslint-plugin-tsdoc":"^0.4.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-replace":"^6.0.2","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7"},"peerDependencies":{"three":"^0.181.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.4.0_1763672899579_0.24705992482013417","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"xrblocks","version":"0.5.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.5.0","maintainers":[{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"b6a3dab85c39dd3d36b9c48883da8956f0156796","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.5.0.tgz","fileCount":233,"integrity":"sha512-iiNOzRyXUAvlIZlJJZU+D9KWdX3m35jYdTrSBnAzXjoSYTlMKAaaRu0BxEiTiPHDxbwLhMi6QJx/yK0dxB8IZA==","signatures":[{"sig":"MEUCIAGHqKiQ7pmdZRw1pZsm93pxmDLPMb1/cFlBlwpaiC1JAiEAoAnUpneGqCcaW7nd7IA2w4ENJn66zm/Fzy2FXPtxx9M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3609896},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"c2f4b093cfcac7c309815031b202636dc765e3f9","scripts":{"lint":"eslint src","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","start":"rollup -c -w","format":"npm run format:fix","prepare":"npm run build","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts}\" --write","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts}\" --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.6.4","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.41.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/three":"^0.181.0","@types/webxr":"^0.5.23","troika-types":"^0.0.6","@google/genai":"^1.28.0","@sparkjsdev/spark":"^0.1.8","troika-three-text":"^0.52.4","typescript-eslint":"^8.43.0","@dimforge/rapier3d":"^0.19.2","eslint-plugin-tsdoc":"^0.4.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-replace":"^6.0.2","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7"},"peerDependencies":{"three":"^0.181.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.5.0_1764861285851_0.025741517308833117","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"xrblocks","version":"0.5.1","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.5.1","maintainers":[{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"e1d6ba338c2ead6204cbab9d22f8a3fbcd4c0232","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.5.1.tgz","fileCount":233,"integrity":"sha512-3ydzi65ZUChEFPY41XkN2+dYyiPoCR6rAn808pUsIAzIr4pDUuo8YYO7Ut4yoocMZmMWcKOmMTlWDsFPTDUTIA==","signatures":[{"sig":"MEYCIQCJXIu90Tau+CfTbFwO3E7YXsdA0vm5OfAzai/vWBcypQIhAJLzHuMokI9ep8AWdIRdGhOYcDHTxG07kYL51gLAxin+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3627263},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"896d66f361b8cb5c758da65ca7d18963f5592796","scripts":{"lint":"eslint src","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","start":"rollup -c -w","format":"npm run format:fix","prepare":"npm run build","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts}\" --write","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts}\" --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.6.4","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.41.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/three":"^0.181.0","@types/webxr":"^0.5.23","troika-types":"^0.0.6","@google/genai":"^1.28.0","@sparkjsdev/spark":"^0.1.8","troika-three-text":"^0.52.4","typescript-eslint":"^8.43.0","@dimforge/rapier3d":"^0.19.2","eslint-plugin-tsdoc":"^0.4.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-replace":"^6.0.2","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7"},"peerDependencies":{"three":"^0.181.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.5.1_1765002000923_0.3384340948319797","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"xrblocks","version":"0.6.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.6.0","maintainers":[{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"f937d3be318c142acc40d313e0d3a6627a6adfd1","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.6.0.tgz","fileCount":233,"integrity":"sha512-wtDrq//EmUeLADdc9oPGG/Q3RtfJACj49KO71+rYi17kOJeoVpxG7meNcZ1+jvMtq7Fjw3X2i+bLqZ4rOwXziw==","signatures":[{"sig":"MEYCIQDH1vIHh6POX6t5GxyUt1QH2CQ77qCql8Iyw7yQsrcp+wIhAOpqbPYjqtp46+H82NqQBLBl0fN1p6tlITVj2AOZVzad","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3663500},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"64e22796ea4f035835e0664c0243196f322ee089","scripts":{"lint":"eslint src","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","start":"rollup -c -w","format":"npm run format:fix","prepare":"npm run build","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.7.0","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.41.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/three":"^0.181.0","@types/webxr":"^0.5.23","troika-types":"^0.0.6","@google/genai":"^1.28.0","@sparkjsdev/spark":"^0.1.10","troika-three-text":"^0.52.4","typescript-eslint":"^8.43.0","@dimforge/rapier3d":"^0.19.2","eslint-plugin-tsdoc":"^0.4.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-replace":"^6.0.2","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7"},"peerDependencies":{"three":"^0.181.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.6.0_1766181200330_0.9882318601454572","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"xrblocks","version":"0.7.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.7.0","maintainers":[{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"4123bfcb7324a48ff6ddfcdf5bbfd909e549748c","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.7.0.tgz","fileCount":233,"integrity":"sha512-MagmLmj1I5nflgaC0YpSl/OuSPuKA/Scs1ksI1OzYUDs8Lbu+P5sZJYE2Uca8+7oOTzYW7AJ36RqymxPGNsduw==","signatures":[{"sig":"MEUCIFOkrEkvm/BWl0UV8RIuttd48AsNsCtt2/naS/BTy2XdAiEAi7YOXiOQxJT4QBvBjHFhUgU1uywdAgFRRHsn2a6bJlE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3665548},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"950b1e58aa88d5cff8d7b64382e8d1f91cc56ebf","scripts":{"lint":"eslint src","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","start":"rollup -c -w","format":"npm run format:fix","prepare":"npm run build","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.7.0","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.41.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/three":"^0.182.0","@types/webxr":"^0.5.23","troika-types":"^0.0.6","@google/genai":"^1.28.0","@sparkjsdev/spark":"^0.1.10","troika-three-text":"^0.52.4","typescript-eslint":"^8.43.0","@dimforge/rapier3d":"^0.19.2","eslint-plugin-tsdoc":"^0.4.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-replace":"^6.0.2","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7"},"peerDependencies":{"three":"^0.182.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.7.0_1767398771674_0.5057813967694571","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"xrblocks","version":"0.8.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.8.0","maintainers":[{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"26c8dec7e59b020bfd4071789451cf44623acee1","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.8.0.tgz","fileCount":242,"integrity":"sha512-JhDH5aYW5MkPhXP8bw1lkhhvtQYo00a9hk1cSfgbN6sgVFHa3q6aFyEKkU3Ii6hOnS2wmR3SOsJQFk9SWvA+SA==","signatures":[{"sig":"MEYCIQCcAUqDIg6rcjaRUUelERSbTiehTOg4i78gZchuCJZ9FgIhAM2qU0ebn9MRSW1xrp+W6kQj5Ur0xCDY2bnGWK5o/Bdp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3759712},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"001d2790ffbbcea5606b5ea4e2c6a582723278fa","scripts":{"lint":"eslint src","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","start":"rollup -c -w","format":"npm run format:fix","prepare":"npm run build","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.7.0","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.41.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/node":"^25.0.8","@types/three":"^0.182.0","@types/webxr":"^0.5.23","troika-types":"^0.0.6","@google/genai":"^1.28.0","@sparkjsdev/spark":"^0.1.10","troika-three-text":"^0.52.4","typescript-eslint":"^8.43.0","@dimforge/rapier3d":"^0.19.2","eslint-plugin-tsdoc":"^0.4.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-replace":"^6.0.2","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7"},"peerDependencies":{"three":"^0.182.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.8.0_1768604030689_0.10094788519117359","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"xrblocks","version":"0.8.2","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.8.2","maintainers":[{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"f9f29f817e3f56f1a6bcc3e0e7097f90bf86deb6","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.8.2.tgz","fileCount":242,"integrity":"sha512-sct8dNdoIJ7YpUmoki+W3WmBu0rxH+6EiT3XhLbW2C3/p9VGCGbWd0Q4YNvrQwZzDlm3oRhPivZn+ooBzxKYgw==","signatures":[{"sig":"MEYCIQDg/3KcsEJIRDDddPrLZHFbo1Gj/dWcz3pvzM3wxq5IgwIhAOKTo7wfpTqqDIXdOv6of4qMyLEoAzfyFS2G26K7eacl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3766764},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"f15488f24e490f79a7fd2dbb19ff6f7f22dbfc5d","scripts":{"lint":"eslint src","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","start":"rollup -c -w","format":"npm run format:fix","prepare":"npm run build","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.7.0","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.41.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/node":"^25.0.8","@types/three":"^0.182.0","@types/webxr":"^0.5.23","troika-types":"^0.0.6","@google/genai":"^1.28.0","@sparkjsdev/spark":"^0.1.10","troika-three-text":"^0.52.4","typescript-eslint":"^8.43.0","@dimforge/rapier3d":"^0.19.2","eslint-plugin-tsdoc":"^0.4.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-replace":"^6.0.2","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7"},"peerDependencies":{"three":"^0.182.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.8.2_1768614181546_0.34470998442510425","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"xrblocks","version":"0.9.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.9.0","maintainers":[{"name":"starea","email":"xiaoxinghai@gmail.com"},{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"a74bfe969811fbed9bdeaeacdb655a7f2dcf91f0","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.9.0.tgz","fileCount":242,"integrity":"sha512-gz8/iKxUAfXhLZ2gStczzn4FMJur38DHs3EAI3+WMtpOzvzyvUDeAJhb34cshgwHuOYR7uayxkwlgXwgGhGl3g==","signatures":[{"sig":"MEYCIQD0QLekjQ+s9UO6EA0iENX3jU3Wt960qrCCbWgLFioSSgIhANA20Q8J1eQqg4kkaN5zjFnS/7L+Tck00w0usK/4pHJz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3777637},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"a54974b3c15d4dcfd78d3e6ebb90ed0c2e4d07af","scripts":{"lint":"eslint src","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","start":"rollup -c -w","format":"npm run format:fix","prepare":"npm run build","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.8.0","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.41.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/node":"^25.0.8","@types/three":"^0.182.0","@types/webxr":"^0.5.23","troika-types":"^0.0.6","@google/genai":"^1.28.0","@sparkjsdev/spark":"^0.1.10","troika-three-text":"^0.52.4","typescript-eslint":"^8.43.0","@dimforge/rapier3d":"^0.19.2","eslint-plugin-tsdoc":"^0.4.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-replace":"^6.0.2","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7"},"peerDependencies":{"three":"^0.182.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.9.0_1769797705987_0.6133934740742681","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"xrblocks","version":"0.10.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.10.0","maintainers":[{"name":"starea","email":"xiaoxinghai@gmail.com"},{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"6662f69f3b5f9e8eb7887c51f55896299c4a8ea0","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.10.0.tgz","fileCount":63,"integrity":"sha512-EXSdct0kZ/xl4lB/ENXor9hNEZXI+23fU3Amz3siuFeHSr62HYtxc+O4PnfDb4CnT9pYUkQD5+I9V1YYH+hVSA==","signatures":[{"sig":"MEUCIQCXoIqPzAKAJGT+N/8Y08LgCgYuz2e3WITEOOHQChJbxgIgJMRqTUMMJc1sH6ftxfy58kgAq7yJTG5jaYiVElBpv6U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3723338},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"06ba5651ab2b8eaf803871fe0698d52832d09a49","scripts":{"dev":"concurrently \"npm:build:watch\" \"npm:serve\"","lint":"eslint src","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","serve":"http-server --cors -a 127.0.0.1 -p 8080","start":"npm run dev","format":"npm run format:fix","prepare":"npm run build","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","build:watch":"rollup -c -w","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.10.0","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.41.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/node":"^25.0.8","http-server":"^14.1.1","@types/three":"^0.182.0","@types/webxr":"^0.5.23","concurrently":"^9.2.1","troika-types":"^0.0.6","@google/genai":"^1.28.0","@sparkjsdev/spark":"^0.1.10","rollup-plugin-dts":"^6.3.0","troika-three-text":"^0.52.4","typescript-eslint":"^8.43.0","@dimforge/rapier3d":"^0.19.2","eslint-plugin-tsdoc":"^0.4.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-replace":"^6.0.2","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7"},"peerDependencies":{"three":"^0.182.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.10.0_1771444526905_0.895100898630983","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"xrblocks","version":"0.11.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.11.0","maintainers":[{"name":"starea","email":"xiaoxinghai@gmail.com"},{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"e40f44d8d312e9f4dd49e84fe541fa137bd2fd45","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.11.0.tgz","fileCount":63,"integrity":"sha512-0pRBW/hvnUgOxd/6n9Up5v+MCZLBLTiSQ1B61DidBRJ62u6GFqUbmwiO3xGnLBTz8LR+V2TJtJ9gTpW9ELgZzw==","signatures":[{"sig":"MEUCICsyWUVihYcgIYTrTByYTXgQtekvj+P3hYKJ+xvwXAwKAiEA6LgRO36H+FiAmJRRxaCXUB2iTynmfTJK43iga82BN8k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3756539},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"296143cf32b05d2dc846f233432cc6f363f4649d","scripts":{"dev":"concurrently \"npm:build:watch\" \"npm:serve\"","lint":"eslint src","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","serve":"http-server --cors -a 127.0.0.1 -p 8080","start":"npm run dev","format":"npm run format:fix","prepare":"npm run build","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","build:watch":"rollup -c -w","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.11.0","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.59.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/node":"^25.0.8","http-server":"^14.1.1","@types/three":"^0.182.0","@types/webxr":"^0.5.23","concurrently":"^9.2.1","troika-types":"^0.0.6","@google/genai":"^1.28.0","@sparkjsdev/spark":"^0.1.10","rollup-plugin-dts":"^6.3.0","troika-three-text":"^0.52.4","typescript-eslint":"^8.43.0","@dimforge/rapier3d":"^0.19.2","eslint-plugin-tsdoc":"^0.5.2","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-replace":"^6.0.2","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7"},"peerDependencies":{"three":"^0.182.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.11.0_1773185159613_0.477362858172526","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"xrblocks","version":"0.12.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.12.0","maintainers":[{"name":"starea","email":"xiaoxinghai@gmail.com"},{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"e33e15a7873cf40cc2564f3542d6389caed2d6bd","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.12.0.tgz","fileCount":199,"integrity":"sha512-TqeZDOMmVBZ59tTu16PfkfBtmUYp8+rjLUY0lwe2bcreeFJQl9AIcc1l5bEoc75xNMaXzR/6pitiQcpHYeNs7w==","signatures":[{"sig":"MEQCIGDtBlxcgY+vTiEQvBSlcHAOtWVKRoSQMNIRd43q/LvNAiAqPmmPSs7MWbtX+BAmwhBsJ2RSEcl/gRcNQWOp45vvUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4182029},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"6ae2b5e941040ebfcd05beecde1fade81a8f6558","scripts":{"dev":"concurrently \"npm:build:watch\" \"npm:serve\"","lint":"eslint src","test":"vitest run","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","serve":"concurrently \"rollup -c -w\" \"http-server --cors -a 127.0.0.1 -p 8080\"","start":"npm run dev","format":"npm run format:fix","prepare":"npm run build","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","test:watch":"vitest","build:watch":"rollup -c -w","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.12.1","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","jsdom":"^27.0.1","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.59.0","vitest":"^3.2.4","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/node":"^25.0.8","http-server":"^14.1.1","lorem-ipsum":"^2.0.8","@types/three":"^0.182.0","@types/webxr":"^0.5.23","concurrently":"^9.2.1","troika-types":"^0.0.6","@google/genai":"^1.28.0","@pmndrs/uikit":"^1.0.64","@sparkjsdev/spark":"^0.1.10","rollup-plugin-dts":"^6.3.0","temporal-polyfill":"^0.3.2","troika-three-text":"^0.52.4","typescript-eslint":"^8.43.0","@dimforge/rapier3d":"^0.19.2","eslint-plugin-tsdoc":"^0.5.2","@preact/signals-core":"^1.14.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-replace":"^6.0.2","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7","@dimforge/rapier3d-simd-compat":"^0.17.3"},"peerDependencies":{"three":"^0.182.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.12.0_1775075861242_0.3477506841949578","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"xrblocks","version":"0.13.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.13.0","maintainers":[{"name":"starea","email":"xiaoxinghai@gmail.com"},{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"dee9ddbf1ef7696f3368fc70eb7388df60c5cbdf","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.13.0.tgz","fileCount":199,"integrity":"sha512-yJhPRxLc0G6QN9pr9Df27PhBY32nCti811bBVOk9KHer2YutaK5/fbZ+16EoDlj/+X+erbV9SshREGztHxJEig==","signatures":[{"sig":"MEQCIESfIKGyLr5sfGp02A1AfxIiz1ovGNIlxiUSPgcLdw/gAiAE1tBeUOoLahD2PkVJCEXk5S90M7e2Iv9b9VYqSvi9eg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4295330},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"7849ce155d7ec9392ec3b72297f534201361f72e","scripts":{"dev":"concurrently \"npm:build:watch\" \"npm:serve\"","lint":"eslint src","test":"vitest run","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","serve":"concurrently \"rollup -c -w\" \"http-server --cors -a 127.0.0.1 -p 8080\"","start":"npm run dev","format":"npm run format:fix","prepare":"npm run build","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","test:watch":"vitest","build:watch":"rollup -c -w","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.13.0","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","jsdom":"^27.0.1","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.59.0","vitest":"^3.2.4","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/node":"^25.0.8","http-server":"^14.1.1","lorem-ipsum":"^2.0.8","@types/three":"^0.182.0","@types/webxr":"^0.5.23","concurrently":"^9.2.1","troika-types":"^0.0.6","@google/genai":"^1.28.0","@pmndrs/uikit":"^1.0.64","@sparkjsdev/spark":"^0.1.10","rollup-plugin-dts":"^6.3.0","temporal-polyfill":"^0.3.2","troika-three-text":"^0.52.4","typescript-eslint":"^8.43.0","@dimforge/rapier3d":"^0.19.2","eslint-plugin-tsdoc":"^0.5.2","@preact/signals-core":"^1.14.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-replace":"^6.0.2","@mediapipe/tasks-vision":"^0.10.34","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7","@dimforge/rapier3d-simd-compat":"^0.17.3"},"peerDependencies":{"three":"^0.182.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.13.0_1777489409928_0.962672525309564","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"xrblocks","version":"0.14.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.14.0","maintainers":[{"name":"starea","email":"xiaoxinghai@gmail.com"},{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"9e5604b4b80e7f0da9a3c3cefa7dc15ee2f3977b","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.14.0.tgz","fileCount":203,"integrity":"sha512-2Nb14vxIXpUDuIYZW+Hd7Y+ZZawXhUUQEniS3kqJS83bimMU11syzvjIbN1dpdowjK3GKNloqd10MC1ZyR2PKg==","signatures":[{"sig":"MEYCIQCJoPe34dD7pdYNXgXq6/ftw0iEG+DoT4Zsud4L9Frt9wIhALgFwEARNtevGdEYUsLi12dO3Qgo2uuta240Kr/a6GlD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4470653},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"c13db9e7b21e191a4af08ad011539676b1ea0fee","scripts":{"dev":"concurrently \"npm:build:watch\" \"npm:serve\"","lint":"eslint src","test":"vitest run","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","serve":"http-server --cors -a 127.0.0.1 -p 8080","start":"npm run dev","format":"npm run format:fix","prepare":"npm run build","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","test:watch":"vitest","build:watch":"rollup -c -w","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"overrides":{"@sparkjsdev/spark":{"three":">=0.180.0"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.14.1","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","jsdom":"^27.0.1","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.59.0","vitest":"^3.2.4","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/node":"^25.0.8","http-server":"^14.1.1","lorem-ipsum":"^2.0.8","@types/three":"^0.182.0","@types/webxr":"^0.5.23","concurrently":"^9.2.1","troika-types":"^0.0.6","@google/genai":"^1.28.0","@pmndrs/uikit":"^1.0.64","@sparkjsdev/spark":"^2.0.0","rollup-plugin-dts":"^6.3.0","temporal-polyfill":"^0.3.2","troika-three-text":"^0.52.4","typescript-eslint":"^8.43.0","@dimforge/rapier3d":"^0.19.2","eslint-plugin-tsdoc":"^0.5.2","@preact/signals-core":"^1.14.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^1.0.0","@mediapipe/tasks-audio":"^0.10.35","@rollup/plugin-replace":"^6.0.2","@mediapipe/tasks-vision":"^0.10.34","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7","@dimforge/rapier3d-simd-compat":"^0.17.3"},"peerDependencies":{"three":"^0.182.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.14.0_1778607843112_0.7828826524069872","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"xrblocks","version":"0.14.1","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.14.1","maintainers":[{"name":"starea","email":"xiaoxinghai@gmail.com"},{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"febfa31b68814c342131261f9966a045cc390b03","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.14.1.tgz","fileCount":203,"integrity":"sha512-1Lj4sK8BfhovpTBecOCwxhEnUbOojU0WNn1ruJPXs6kJNCnGWQ7as903G5HGrgzQ2c/uf8KXsr5KtxogSEgHRA==","signatures":[{"sig":"MEUCIDq1zkU0gLxTHTyGtVuugSNqPu+1b93aRl0LUl1Edmo7AiEAsriBToNkSTrjLr+fjVEAn7hPyw6So6WWXKVL5a6Uehs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.14.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4472434},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"2f01336b97cac3a5a1f9a1efce94347391dcd55f","scripts":{"dev":"concurrently \"npm:build:watch\" \"npm:serve\"","lint":"eslint src","test":"vitest run","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","serve":"http-server --cors -a 127.0.0.1 -p 8080","start":"npm run dev","format":"npm run format:fix","prepare":"npm run build","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","test:watch":"vitest","build:watch":"rollup -c -w","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"overrides":{"@sparkjsdev/spark":{"three":">=0.180.0"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.14.1","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","jsdom":"^27.0.1","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.59.0","vitest":"^3.2.4","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/node":"^25.0.8","http-server":"^14.1.1","lorem-ipsum":"^2.0.8","@types/three":"^0.182.0","@types/webxr":"^0.5.23","concurrently":"^9.2.1","troika-types":"^0.0.6","@google/genai":"^1.28.0","@pmndrs/uikit":"^1.0.64","@sparkjsdev/spark":"^2.0.0","rollup-plugin-dts":"^6.3.0","temporal-polyfill":"^0.3.2","troika-three-text":"^0.52.4","typescript-eslint":"^8.43.0","@dimforge/rapier3d":"^0.19.2","eslint-plugin-tsdoc":"^0.5.2","@preact/signals-core":"^1.14.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^1.0.0","@mediapipe/tasks-audio":"^0.10.35","@rollup/plugin-replace":"^6.0.2","@mediapipe/tasks-vision":"^0.10.34","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7","@dimforge/rapier3d-simd-compat":"^0.17.3"},"peerDependencies":{"three":"^0.182.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.14.1_1778711237794_0.4949250228973321","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"xrblocks","version":"0.15.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.15.0","maintainers":[{"name":"starea","email":"xiaoxinghai@gmail.com"},{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"99c11a4142866f1eeb5a6693a1fccb5fd4f29d49","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.15.0.tgz","fileCount":282,"integrity":"sha512-RcjqrwzmpjxVdWsgppDh7LwMrgSC1h+C5tVm5MIsfN5B20DiHsnr8PvboMRBoEVpi4cUYkZr9yJ2o4Hu3ljO4Q==","signatures":[{"sig":"MEQCIF8r5T2T9To+9Q8lASy1XiXEnNvO6cB68XEcxj9Rlf0VAiB7TyJbKPpo44eeD4X1Qb6B+H1CL8UUQRqy6y0zB3wjUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4873319},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"e2f2f8b269c8a369c670bb672e3a6e587531c38b","scripts":{"dev":"concurrently \"npm:build:watch\" \"npm:serve\"","lint":"eslint src","test":"vitest run","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","serve":"http-server --cors -a 127.0.0.1 -p 8080","start":"npm run dev","format":"npm run format:fix","prepare":"npm run build","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","test:watch":"vitest","build:watch":"rollup -c -w","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"overrides":{"@sparkjsdev/spark":{"three":">=0.180.0"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.15.0","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","jsdom":"^27.0.1","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.59.0","vitest":"^3.2.4","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/node":"^25.0.8","http-server":"^14.1.1","lorem-ipsum":"^2.0.8","@types/three":"^0.184.0","@types/webxr":"^0.5.23","concurrently":"^9.2.1","troika-types":"^0.0.6","@google/genai":"^1.28.0","@pmndrs/uikit":"^1.0.64","@sparkjsdev/spark":"^2.0.0","rollup-plugin-dts":"^6.3.0","temporal-polyfill":"^0.3.2","troika-three-text":"^0.52.4","typescript-eslint":"^8.43.0","@dimforge/rapier3d":"^0.19.2","eslint-plugin-tsdoc":"^0.5.2","@preact/signals-core":"^1.14.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^1.0.0","@mediapipe/tasks-audio":"^0.10.35","@rollup/plugin-replace":"^6.0.2","@mediapipe/tasks-vision":"^0.10.34","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7","@dimforge/rapier3d-simd-compat":"^0.17.3"},"peerDependencies":{"three":"^0.184.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.15.0_1779490001672_0.340627133250053","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"xrblocks","version":"0.16.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.16.0","maintainers":[{"name":"starea","email":"xiaoxinghai@gmail.com"},{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"6a91845fc0f42599ebc64ef794b5e3cf1e0e23e1","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.16.0.tgz","fileCount":325,"integrity":"sha512-l+8kEEVUvKau9b9BG4VFSckllRJ0I9XEPLRv2xjhBtTHEIJvMy6XagJTmo+15MGDdk2s3D987BG/a2GYQrA5qA==","signatures":[{"sig":"MEYCIQCI+Qx3lHvBP8/7Y0QYdQjJ+Tss4QzFR9HbQH1eOWphegIhAI+pPLu9L11K/PebayakN8w6CUTK5JPvuva/feQ9dZEz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5142413},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"3e5222c84cf6f4b253ba79a2c71c6408f4cba239","scripts":{"dev":"concurrently \"npm:build:watch\" \"npm:serve\"","lint":"eslint src","test":"vitest run","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","serve":"http-server --cors -a 127.0.0.1 -p 8080","start":"npm run dev","format":"npm run format:fix","prepare":"npm run build","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","test:watch":"vitest","build:watch":"rollup -c -w","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"overrides":{"rollup-plugin-dts":{"typescript":"$typescript"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.16.0","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.1","glob":"^11.0.3","jsdom":"^27.0.1","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.59.0","vitest":"^4.1.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^6.0.3","@types/node":"^25.0.8","http-server":"^14.1.1","lorem-ipsum":"^2.0.8","@types/three":"^0.184.0","@types/webxr":"^0.5.23","concurrently":"^9.2.1","troika-types":"^0.0.6","@google/genai":"^2.7.0","@pmndrs/uikit":"^1.0.64","@sparkjsdev/spark":"^2.1.0","rollup-plugin-dts":"^6.3.0","temporal-polyfill":"^0.3.2","troika-three-text":"^0.52.4","typescript-eslint":"^8.60.0","@dimforge/rapier3d":"^0.19.2","eslint-plugin-tsdoc":"^0.5.2","@preact/signals-core":"^1.14.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^1.0.0","@mediapipe/tasks-audio":"^0.10.35","@rollup/plugin-replace":"^6.0.2","@mediapipe/tasks-vision":"^0.10.34","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7","@dimforge/rapier3d-simd-compat":"^0.17.3"},"peerDependencies":{"three":"^0.184.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.16.0_1780955763140_0.12096732720290926","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"xrblocks","version":"0.17.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.17.0","maintainers":[{"name":"starea","email":"xiaoxinghai@gmail.com"},{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"bin":{"xrblocks-remote-control":"src/addons/remote-control/server/relay.js"},"dist":{"shasum":"1613bb5488e87005e14953385545ce1e1fe6b77f","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.17.0.tgz","fileCount":818,"integrity":"sha512-AzzFcRYOC8OjciUSMBXYXnbGDa6OKhu3xa7gXnRhw2LBB+rGxzsleQ0ojC2Yk0GJtzw6NmJ0HgHQ6FO+5qjFFw==","signatures":[{"sig":"MEYCIQCxkt9X0wbWWjGLxC/oMzXdYU66xxQp3sYL81Yus7JkCAIhAOaQuOL0HhIwomT65nuTlNqr7L3tCx7UGOb4RQlHwuoE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7814063},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"9338a264b4221e08c84aadd2ec1168ef0449a3dc","scripts":{"dev":"concurrently \"npm:build:watch\" \"npm:serve\"","lint":"eslint src","test":"vitest run","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","serve":"http-server --cors -a 127.0.0.1 -p 8080","start":"npm run dev","format":"npm run format:fix","prepare":"npm run build","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","test:watch":"vitest","build:watch":"rollup -c -w","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"overrides":{"rollup-plugin-dts":{"typescript":"$typescript"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"11.18.0","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.17.0","_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.3","lit":"^3.3.1","glob":"^11.0.3","jsdom":"^27.0.1","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.59.0","vitest":"^4.1.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^6.0.3","@types/node":"^25.0.8","http-server":"^14.1.1","@emnapi/core":"^1.11.1","@types/three":"^0.184.0","@types/webxr":"^0.5.23","concurrently":"^10.0.3","troika-types":"^0.0.6","@google/genai":"^2.7.0","@pmndrs/uikit":"^1.0.64","three-mesh-bvh":"^0.9.10","@emnapi/runtime":"^1.11.1","@sparkjsdev/spark":"^2.1.0","rollup-plugin-dts":"^6.3.0","troika-three-text":"^0.52.4","typescript-eslint":"^8.60.0","@dimforge/rapier3d":"^0.19.2","@vitest/coverage-v8":"^4.1.8","eslint-plugin-tsdoc":"^0.5.2","@preact/signals-core":"^1.14.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^1.0.0","@mediapipe/tasks-audio":"^0.10.35","@rollup/plugin-replace":"^6.0.2","@mediapipe/tasks-vision":"^0.10.34","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7","@dimforge/rapier3d-simd-compat":"^0.17.3"},"peerDependencies":{"three":"^0.184.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.17.0_1782852769726_0.15170770665373778","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"xrblocks","version":"0.18.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.18.0","maintainers":[{"name":"starea","email":"xiaoxinghai@gmail.com"},{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"bin":{"xrblocks-remote-control":"src/addons/remote-control/server/relay.js"},"dist":{"shasum":"1ba9a94eae40afc02855f52e11a52ad77898c5ed","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.18.0.tgz","fileCount":880,"integrity":"sha512-LQDhAX8ceaVi1cZCDVeeEb507eWeyE6Vf36mQGfPfOHpTfwDdl9kirXQ9Vr/aXXi8R/60+cREhSfExt7NP5vbA==","signatures":[{"sig":"MEYCIQC/Zpnvtw4vpM9Bizes9E4F2Q9SFoiu/c6tSZVmxs3n/gIhAN4Mbg49GvbMpUea1TnFIyZesvvrjRZNBPZURZ20H9dV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8650034},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"0dfc5aebf84e670ba8ecd535b21ebe4ab7f4bbff","scripts":{"dev":"concurrently \"npm:build:watch\" \"npm:serve\"","lint":"eslint src","test":"vitest run","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","serve":"http-server --cors -a 127.0.0.1 -p 8080","start":"npm run dev","format":"npm run format:fix","prepare":"npm run build","build:sdk":"rollup -c --failAfterWarnings --forceExit --environment XRBLOCKS_BUILD:sdk","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","test:watch":"vitest","build:watch":"rollup -c -w","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"overrides":{"rollup-plugin-dts":{"typescript":"$typescript"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"12.0.1","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.18.0","dependencies":{"three-pathfinding":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.3","lit":"^3.3.1","glob":"^11.0.3","jsdom":"^27.0.1","tslib":"^2.8.1","eslint":"^9.35.0","openai":"^6.7.0","rollup":"^4.59.0","vitest":"^4.1.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^6.0.3","@types/node":"^25.0.8","http-server":"^14.1.1","@emnapi/core":"^1.11.1","@types/three":"^0.184.0","@types/webxr":"^0.5.23","concurrently":"^10.0.3","troika-types":"^0.0.6","@google/genai":"^2.7.0","@pmndrs/uikit":"^1.0.64","three-mesh-bvh":"^0.9.10","@emnapi/runtime":"^1.11.1","@sparkjsdev/spark":"^2.1.0","rollup-plugin-dts":"^6.3.0","troika-three-text":"^0.52.4","typescript-eslint":"^8.60.0","@dimforge/rapier3d":"^0.19.2","@vitest/coverage-v8":"^4.1.8","eslint-plugin-tsdoc":"^0.5.2","@preact/signals-core":"^1.14.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^1.0.0","@mediapipe/tasks-audio":"^0.10.35","@rollup/plugin-replace":"^6.0.2","@mediapipe/tasks-vision":"^0.10.34","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7","@dimforge/rapier3d-simd-compat":"^0.17.3"},"peerDependencies":{"three":"^0.184.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.18.0_1784312451120_0.13492374356508652","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"xrblocks","version":"0.19.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.19.0","maintainers":[{"name":"starea","email":"xiaoxinghai@gmail.com"},{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"bin":{"xrblocks-remote-control":"src/addons/remote-control/server/relay.js"},"dist":{"shasum":"69e546bcfc0c944067e2325d29e7e77ce776be45","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.19.0.tgz","fileCount":959,"integrity":"sha512-yoX+B2mmUjebP9IFg0hpYZYmjeYz72vXQd2aGuRxhbFigiyF1EkyHnNnAarAYUfRUo2cOx2DxobTfmh5amyTyQ==","signatures":[{"sig":"MEUCIQDFEqKpd2X0RkdxSNPJIH5xoIypk2YefmU6QGQh/H3pIQIgeU04as3oNs5Zle+/P7/JBV7Ozd0nptvkkcyOEd6arJc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9411002},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"9c39edeab0a32983caeab5b755e27291f52c45f7","scripts":{"dev":"concurrently \"npm:build:watch\" \"npm:serve\"","lint":"eslint src","test":"vitest run","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","serve":"http-server --cors -a 127.0.0.1 -p 8080","start":"npm run dev","format":"npm run format:fix","prepare":"npm run build","build:sdk":"rollup -c --failAfterWarnings --forceExit --environment XRBLOCKS_BUILD:sdk","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","test:watch":"vitest","build:watch":"rollup -c -w","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"overrides":{"rollup-plugin-dts":{"typescript":"$typescript"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"12.0.2","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.18.0","dependencies":{"three-pathfinding":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.3","lit":"^3.3.1","glob":"^11.0.3","jsdom":"^27.0.1","tslib":"^2.8.1","eslint":"^10.8.0","openai":"^6.7.0","rollup":"^4.59.0","vitest":"^4.1.0","globals":"^17.7.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^6.0.3","@types/node":"^25.0.8","http-server":"^14.1.1","@emnapi/core":"^1.11.1","@types/three":"^0.184.0","@types/webxr":"^0.5.23","concurrently":"^10.0.3","troika-types":"^0.0.6","@google/genai":"^2.7.0","@pmndrs/uikit":"^1.0.64","three-mesh-bvh":"^0.9.10","@emnapi/runtime":"^1.11.1","@sparkjsdev/spark":"^2.1.0","rollup-plugin-dts":"^6.3.0","troika-three-text":"^0.52.4","typescript-eslint":"^8.60.0","@dimforge/rapier3d":"^0.19.2","@vitest/coverage-v8":"^4.1.8","eslint-plugin-tsdoc":"^0.5.2","@preact/signals-core":"^1.14.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^1.0.0","@mediapipe/tasks-audio":"^0.10.35","@rollup/plugin-replace":"^6.0.2","@mediapipe/tasks-vision":"^0.10.34","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7","@dimforge/rapier3d-simd-compat":"^0.17.3"},"peerDependencies":{"three":"^0.184.0"},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.19.0_1785878841930_0.9754178450619486","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"xrblocks","version":"0.20.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.20.0","maintainers":[{"name":"starea","email":"xiaoxinghai@gmail.com"},{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"bin":{"xrblocks-mcp":"src/addons/mcp/server/bin.js","xrblocks-remote-control":"src/addons/remote-control/server/relay.js"},"dist":{"shasum":"e06768b46fd6af1a45a7a927333452109067048c","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.20.0.tgz","fileCount":831,"integrity":"sha512-Vm22H8iEQLkc9jK640ky9PAEgbZsQmNH7B9ViD7tWaQxAyrGRmJiKNrgkEL6QqLxc5C792Dp5KN6xOcjAECQuw==","signatures":[{"sig":"MEUCIDHMRhpqOCFxt/kdqfb2G0ltow4SMpt4Pkmvkcu2pG4BAiEA7SOVr0JKm4gL0F/vnb7Qi7cWKDF3PXbzHmXcmblHu5g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10685977},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"b47b450c56ef764498b7aa3d1af6168dc96f13f9","scripts":{"dev":"concurrently \"npm:build:watch\" \"npm:serve\"","lint":"eslint src","test":"vitest run","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","serve":"http-server --cors -c-1 -a 127.0.0.1 -p 8080","start":"npm run dev","format":"npm run format:fix","prepare":"npm run build","build:sdk":"rollup -c --failAfterWarnings --forceExit --environment XRBLOCKS_BUILD:sdk","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","test:watch":"vitest","build:watch":"rollup -c -w","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"overrides":{"rollup-plugin-dts":{"typescript":"$typescript"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"12.0.2","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.3","lit":"^3.3.1","glob":"^11.0.3","jsdom":"^27.0.1","tslib":"^2.8.1","eslint":"^10.8.0","openai":"^6.7.0","rollup":"^4.59.0","vitest":"^4.1.0","globals":"^17.7.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^6.0.3","@types/node":"^25.0.8","http-server":"^14.1.1","@emnapi/core":"^1.11.1","@types/three":"^0.184.0","@types/webxr":"^0.5.23","concurrently":"^10.0.3","troika-types":"^0.0.6","@google/genai":"^2.7.0","@pmndrs/uikit":"^1.0.64","three-mesh-bvh":"^0.9.10","@emnapi/runtime":"^1.11.1","@sparkjsdev/spark":"^2.1.0","rollup-plugin-dts":"^6.3.0","troika-three-text":"^0.52.4","typescript-eslint":"^8.60.0","@dimforge/rapier3d":"^0.19.2","@vitest/coverage-v8":"^4.1.8","eslint-plugin-tsdoc":"^0.5.2","@preact/signals-core":"^1.14.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^1.0.0","@mediapipe/tasks-audio":"^0.10.35","@rollup/plugin-replace":"^6.0.2","@mediapipe/tasks-vision":"^0.10.34","@modelcontextprotocol/sdk":"^1.30.0","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7","@dimforge/rapier3d-simd-compat":"^0.17.3"},"peerDependencies":{"lit":"^3.3.1","three":"^0.184.0","@pmndrs/uikit":"^1.0.64","three-pathfinding":"^1.3.0","@preact/signals-core":"^1.14.0"},"peerDependenciesMeta":{"lit":{"optional":true},"three-pathfinding":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.20.0_1786402883965_0.4723395604178575","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"xrblocks","version":"0.21.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.21.0","maintainers":[{"name":"starea","email":"xiaoxinghai@gmail.com"},{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"bin":{"xrblocks-mcp":"src/addons/mcp/server/bin.js","xrblocks-remote-control":"src/addons/remote-control/server/relay.js"},"dist":{"shasum":"19c944c6c42519a431f104bf301f7c9322cb3ded","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.21.0.tgz","fileCount":835,"integrity":"sha512-1Q6a9xslgWyxtkdiJUmma+APuUzl0x1ozvJMP2YNdkn6UJWSSVW8S/V04Pw7nY21dK+NN+I7I8n6JuZzlnyALQ==","signatures":[{"sig":"MEQCICYK0JnJ7dbVcXV6FNt5UqH8FmIaq88A9J2JanJDU8+mAiBhM85KMlgjPXnfi6ZX1EBMPmN9itdqyVEhU7zlfYIJNg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10872444},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"097f03ac58c391a9c58e4826da7dffc54522412b","scripts":{"dev":"concurrently \"npm:build:watch\" \"npm:serve\"","lint":"eslint src","test":"vitest run","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","serve":"http-server --cors -c-1 -a 127.0.0.1 -p 8080","start":"npm run dev","format":"npm run format:fix","prepare":"npm run build","build:sdk":"rollup -c --failAfterWarnings --forceExit --environment XRBLOCKS_BUILD:sdk","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","test:watch":"vitest","build:watch":"rollup -c -w","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"overrides":{"rollup-plugin-dts":{"typescript":"$typescript"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"12.0.2","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.3","lit":"^3.3.1","glob":"^11.0.3","jsdom":"^27.0.1","tslib":"^2.8.1","eslint":"^10.8.0","openai":"^6.7.0","rollup":"^4.59.0","vitest":"^4.1.0","globals":"^17.7.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^6.0.3","@types/node":"^25.0.8","http-server":"^14.1.1","@emnapi/core":"^1.11.1","@types/three":"^0.184.0","@types/webxr":"^0.5.23","concurrently":"^10.0.3","@google/genai":"^2.7.0","@pmndrs/uikit":"^1.0.64","three-mesh-bvh":"^0.9.10","@emnapi/runtime":"^1.11.1","@sparkjsdev/spark":"^2.1.0","rollup-plugin-dts":"^6.3.0","typescript-eslint":"^8.60.0","@dimforge/rapier3d":"^0.19.2","@vitest/coverage-v8":"^4.1.8","eslint-plugin-tsdoc":"^0.5.2","@preact/signals-core":"^1.14.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^1.0.0","@mediapipe/tasks-audio":"^0.10.35","@rollup/plugin-replace":"^6.0.2","@mediapipe/tasks-vision":"^0.10.34","@modelcontextprotocol/sdk":"^1.30.0","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7","@dimforge/rapier3d-simd-compat":"^0.17.3"},"peerDependencies":{"lit":"^3.3.1","three":"^0.184.0","@pmndrs/uikit":"^1.0.64","three-pathfinding":"^1.3.0","@preact/signals-core":"^1.14.0"},"peerDependenciesMeta":{"lit":{"optional":true},"three-pathfinding":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.21.0_1787616806015_0.15022957362636657","host":"s3://npm-registry-packages-npm-production"}},"0.21.1":{"name":"xrblocks","version":"0.21.1","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.21.1","maintainers":[{"name":"starea","email":"xiaoxinghai@gmail.com"},{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"bin":{"xrblocks-mcp":"src/addons/mcp/server/bin.js","xrblocks-remote-control":"src/addons/remote-control/server/relay.js"},"dist":{"shasum":"0bd68a23ec6a713708ba3b4104088dc370332c15","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.21.1.tgz","fileCount":835,"integrity":"sha512-q8V6DhLdyEzqDWO23nzwWc67roFFC6ul84my0mIobaTF3Jat1ae+rwwrP6IqqRCGeQTx8XBgep7QnGa44Wi1Uw==","signatures":[{"sig":"MEUCIBvknX1Yb5Fd67xs8/M4czoBCq4/OalGUFt9TvxkMxKmAiEAybplcSsElFYuWrOUFQ+nHXpzpMhOvMDjV9p69ULjMGQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.21.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10873163},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"bf149d6fcfbcea2ac8e85bdb3dca5e22268690b2","scripts":{"dev":"concurrently \"npm:build:watch\" \"npm:serve\"","lint":"eslint src","test":"vitest run","build":"echo \"Building xrblocks.js...\" && rollup -c --failAfterWarnings","serve":"http-server --cors -c-1 -a 127.0.0.1 -p 8080","start":"npm run dev","format":"npm run format:fix","prepare":"npm run build","build:sdk":"rollup -c --failAfterWarnings --forceExit --environment XRBLOCKS_BUILD:sdk","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","test:watch":"vitest","build:watch":"rollup -c -w","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"overrides":{"rollup-plugin-dts":{"typescript":"$typescript"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"12.0.2","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.3","lit":"^3.3.1","glob":"^11.0.3","jsdom":"^27.0.1","tslib":"^2.8.1","eslint":"^10.8.0","openai":"^6.7.0","rollup":"^4.59.0","vitest":"^4.1.0","globals":"^17.7.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^6.0.3","@types/node":"^25.0.8","http-server":"^14.1.1","@emnapi/core":"^1.11.1","@types/three":"^0.184.0","@types/webxr":"^0.5.23","concurrently":"^10.0.3","@google/genai":"^2.7.0","@pmndrs/uikit":"^1.0.64","three-mesh-bvh":"^0.9.10","@emnapi/runtime":"^1.11.1","@sparkjsdev/spark":"^2.1.0","rollup-plugin-dts":"^6.3.0","typescript-eslint":"^8.60.0","@dimforge/rapier3d":"^0.19.2","@vitest/coverage-v8":"^4.1.8","eslint-plugin-tsdoc":"^0.5.2","@preact/signals-core":"^1.14.0","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-terser":"^1.0.0","@mediapipe/tasks-audio":"^0.10.35","@rollup/plugin-replace":"^6.0.2","@mediapipe/tasks-vision":"^0.10.34","@modelcontextprotocol/sdk":"^1.30.0","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/dom-speech-recognition":"^0.0.7","@dimforge/rapier3d-simd-compat":"^0.17.3"},"peerDependencies":{"lit":"^3.3.1","three":"^0.184.0","@pmndrs/uikit":"^1.0.64","three-pathfinding":"^1.3.0","@preact/signals-core":"^1.14.0"},"peerDependenciesMeta":{"lit":{"optional":true},"three-pathfinding":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.21.1_1787681814035_0.8523010082997091","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"xrblocks","version":"0.22.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.22.0","maintainers":[{"name":"starea","email":"xiaoxinghai@gmail.com"},{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"bin":{"xrblocks-mcp":"src/addons/mcp/server/bin.js","xrblocks-remote-control":"src/addons/remote-control/server/relay.js"},"dist":{"shasum":"6cb19eb275d6074395fa992b7e56ce4351e58e56","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.22.0.tgz","fileCount":1197,"integrity":"sha512-cf04ssMtmVoyPQC2sk+iGV/+bL/VYXrKCF3HL5jcQekHDPFF3OKLoaAArrkis0PGomjjOo++KD8W/9Imz0nJZg==","signatures":[{"sig":"MEQCIGtwBjBljVotdnQd76XMrTfYjiYLlu2XnB3QISx90f/SAiB1w5jYTT4D14GaZd1nZCDDpcK2ZWaaJE99UafPV7p2Dg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDzCa+MtKfDfW/pINte+CEas6fHREsiRC8kjYqVA0WXEwIgfQhXaLoLONIjRU3X//t0zG4Iq6NzTSqgtN02Vwy/CtU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14012879},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"466cbff4d9321ba33e1fa8575dff1fdc3bf9eb3e","scripts":{"dev":"concurrently \"npm:build:watch\" \"npm:serve\"","lint":"oxlint src tools","test":"vitest run","build":"echo \"Building xrblocks.js...\" && rolldown -c","serve":"http-server --cors -c-1 -a 127.0.0.1 -p 8080","start":"npm run dev","format":"npm run format:fix","prepare":"npm run build","build:sdk":"XRBLOCKS_BUILD=sdk rolldown -c","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","test:watch":"vitest","build:watch":"rolldown -c -w","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"12.2.0","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.3","lit":"^3.3.1","glob":"^11.0.3","jsdom":"^27.0.1","marked":"14.1.4","openai":"^6.7.0","oxlint":"^1.51.0","vitest":"^4.1.11","prettier":"^3.6.2","rolldown":"^1.2.11","js-aruco2":"2.0.0","typescript":"^7.0.2","@types/node":"^25.0.8","flatbuffers":"25.9.23","http-server":"^14.1.1","@emnapi/core":"^1.11.1","@types/three":"^0.186.0","@types/webxr":"^0.5.23","concurrently":"^10.0.3","@google/genai":"^2.27.0","@pmndrs/uikit":"^1.0.64","@litertjs/core":"^2.5.3","three-mesh-bvh":"^0.9.10","@emnapi/runtime":"^1.11.1","@sparkjsdev/spark":"^2.1.0","@dimforge/rapier3d":"^0.19.2","@vitest/coverage-v8":"^4.1.11","rolldown-plugin-dts":"^0.28.6","@preact/signals-core":"^1.14.0","@mediapipe/tasks-audio":"^0.10.35","@mediapipe/tasks-vision":"^0.10.34","@modelcontextprotocol/sdk":"^1.30.0","@types/dom-speech-recognition":"^0.0.7","@dimforge/rapier3d-simd-compat":"^0.17.3"},"peerDependencies":{"lit":"^3.3.1","three":"^0.186.0","@pmndrs/uikit":"^1.0.64","three-pathfinding":"^1.3.0","@preact/signals-core":"^1.14.0"},"peerDependenciesMeta":{"ws":{"optional":true},"lit":{"optional":true},"three-pathfinding":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.22.0_1791593185058_0.9059148756592277","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"xrblocks","version":"0.23.0","author":{"name":"XR Blocks authors"},"license":"Apache-2.0","_id":"xrblocks@0.23.0","maintainers":[{"name":"starea","email":"xiaoxinghai@gmail.com"},{"name":"david18284","email":"david@davidl.me"}],"homepage":"https://xrblocks.github.io","bugs":{"url":"https://github.com/google/xrblocks/issues"},"bin":{"xrblocks-mcp":"src/addons/mcp/server/bin.js","xrblocks-remote-control":"src/addons/remote-control/server/relay.js"},"dist":{"shasum":"5773fa29792f22883fa3a736d1da9145c131d770","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.23.0.tgz","fileCount":1241,"integrity":"sha512-xfZTmxJ4yK0DJE6x7vn6ZT4xYyfjGiNiqE9aXcUCcmqM2q9ml5pFpurDdkk/7GarxQVChcGX40vzhkKsvgvu/A==","signatures":[{"sig":"MEUCIQCF36/tp7fz1FOI1Y7ZTVub4f4zhm5pl2diAl8LTMBNeAIgDORGxNDUToiRkmOeKvXsjndrxUaoEzJemP/pyAWCAE0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIELE3+qNALxprHxf/N/llTfg79oKj/wSV5ag/YMLj45PAiATLiNAeFW4YEI8MIhilgzm7UcAZO6aDNW21+MnN0LLwg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14362047},"main":"build/xrblocks.js","type":"module","types":"build/xrblocks.d.ts","exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"7c29e0ed4fa460eafd37b7ee6dad7571b122708a","scripts":{"dev":"concurrently \"npm:build:watch\" \"npm:serve\"","lint":"oxlint src tools","test":"vitest run","build":"echo \"Building xrblocks.js...\" && rolldown -c","serve":"http-server --cors -c-1 -a 127.0.0.1 -p 8080","start":"npm run dev","format":"npm run format:fix","prepare":"npm run build","test:e2e":"playwright test --config e2e/playwright.config.ts","build:sdk":"XRBLOCKS_BUILD=sdk rolldown -c","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","test:watch":"vitest","build:watch":"rolldown -c -w","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check","test:coverage":"vitest run --coverage","build:check-imports":"node tools/check-bundle-imports.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"12.2.0","description":"XR Blocks SDK","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.3","lit":"^3.3.1","glob":"^11.0.3","iwer":"^2.5.0","jsdom":"^27.0.1","marked":"14.1.4","openai":"^6.7.0","oxlint":"^1.51.0","vitest":"^4.1.11","prettier":"^3.6.2","rolldown":"^1.2.11","@iwer/sem":"^2.5.0","js-aruco2":"2.0.0","typescript":"^7.0.2","@types/node":"^25.0.8","flatbuffers":"25.9.23","http-server":"^14.1.1","@emnapi/core":"^1.11.1","@types/three":"^0.186.0","@types/webxr":"^0.5.23","concurrently":"^10.0.3","@google/genai":"^2.27.0","@pmndrs/uikit":"^1.0.64","@litertjs/core":"^2.5.3","three-mesh-bvh":"^0.9.10","@emnapi/runtime":"^1.11.1","@playwright/test":"^1.64.0","@sparkjsdev/spark":"^2.1.0","@dimforge/rapier3d":"^0.19.2","@vitest/coverage-v8":"^4.1.11","rolldown-plugin-dts":"^0.28.6","@preact/signals-core":"^1.14.0","@mediapipe/tasks-audio":"^0.10.35","@mediapipe/tasks-vision":"^0.10.34","@modelcontextprotocol/sdk":"^1.30.0","@types/dom-speech-recognition":"^0.0.7","@dimforge/rapier3d-simd-compat":"^0.17.3"},"peerDependencies":{"lit":"^3.3.1","three":"^0.186.0","@pmndrs/uikit":"^1.0.64","three-pathfinding":"^1.3.0","@preact/signals-core":"^1.14.0"},"peerDependenciesMeta":{"ws":{"optional":true},"lit":{"optional":true},"three-pathfinding":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xrblocks_0.23.0_1792088001614_0.6960644227961503","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"_id":"xrblocks@0.24.0","bin":{"xrblocks-mcp":"src/addons/mcp/server/bin.js","xrblocks-remote-control":"src/addons/remote-control/server/relay.js"},"bugs":{"url":"https://github.com/google/xrblocks/issues"},"dist":{"shasum":"e436e97da1570c87633722507d44a61d238306c2","tarball":"https://registry.npmjs.org/xrblocks/-/xrblocks-0.24.0.tgz","fileCount":1255,"integrity":"sha512-wqSroeH97Bi6bRLf24sAAffa004Qa6BLe2cTC2evawCyTm199RtYRWzPsmNRfE9xZ2SLUN52UGkcUjH7wd9/yQ==","signatures":[{"sig":"MEUCIHnTcy7Zk8R/o8Z/KWjJw/4+RhVKhAD9XbY9xCivB9iuAiEA1djmVUwIqjcfkZnCUbrdO0jIb8eMGMRH4icNsnOrjkg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIH1ctbXtLen/Ia5F4uqNy5dKE879UH/GpREQrh+knteSAiEAhXEAXuTOXAh6CR7h4jvbieZ/RlYKIpw4rTsgjJX8FKQ="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xrblocks@0.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14815714},"main":"build/xrblocks.js","name":"xrblocks","type":"module","types":"build/xrblocks.d.ts","author":{"name":"XR Blocks authors"},"exports":{".":"./build/xrblocks.js","./addons/*":"./build/addons/*"},"gitHead":"e455e0e28034cb2cea4f3044696c4e98663e90f8","license":"Apache-2.0","scripts":{"dev":"concurrently \"npm:build:watch\" \"npm:serve\"","lint":"oxlint src tools","test":"vitest run","build":"echo \"Building xrblocks.js...\" && rolldown -c","serve":"http-server --cors -c-1 -a 127.0.0.1 -p 8080","start":"npm run dev","format":"npm run format:fix","prepare":"npm run build","test:e2e":"playwright test --config e2e/playwright.config.ts","build:sdk":"XRBLOCKS_BUILD=sdk rolldown -c","format:fix":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --write","test:watch":"vitest","build:watch":"rolldown -c -w","format:check":"prettier \"**/*.{cjs,html,js,json,md,mdx,ts,css}\" --check","test:coverage":"vitest run --coverage","build:check-types":"node tools/check-consumer-types.js","build:check-imports":"node tools/check-bundle-imports.js"},"version":"0.24.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"bc316181-29a4-4fd7-bdd4-d1a61dc20fce"}},"homepage":"https://xrblocks.github.io","repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"_npmVersion":"12.2.0","description":"XR Blocks SDK","directories":{},"maintainers":[{"name":"starea","email":"xiaoxinghai@gmail.com"},{"name":"david18284","email":"david@davidl.me"}],"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.3","lit":"^3.3.1","glob":"^11.0.3","iwer":"^2.5.0","jsdom":"^27.0.1","marked":"14.1.4","openai":"^6.7.0","oxlint":"^1.51.0","vitest":"^4.1.11","prettier":"^3.6.2","rolldown":"^1.2.11","@iwer/sem":"^2.5.0","js-aruco2":"2.0.0","typescript":"^7.0.2","@types/node":"^25.0.8","flatbuffers":"25.9.23","http-server":"^14.1.1","@emnapi/core":"^1.11.1","@types/three":"^0.186.0","@types/webxr":"^0.5.23","concurrently":"^10.0.3","@google/genai":"^2.27.0","@pmndrs/uikit":"1.0.64","@webgpu/types":"^0.1.74","@litertjs/core":"^2.5.3","three-mesh-bvh":"^0.9.10","@emnapi/runtime":"^1.11.1","@playwright/test":"^1.63.0","@sparkjsdev/spark":"^2.2.0","@dimforge/rapier3d":"^0.19.2","@vitest/coverage-v8":"^4.1.11","rolldown-plugin-dts":"^0.28.6","@preact/signals-core":"^1.14.0","@mediapipe/tasks-audio":"^0.10.35","@mediapipe/tasks-vision":"^0.10.34","@modelcontextprotocol/sdk":"^1.30.0","@types/dom-speech-recognition":"^0.0.7","@dimforge/rapier3d-simd-compat":"^0.17.3"},"peerDependencies":{"lit":"^3.3.1","three":"^0.186.0","openai":"*","@types/three":"*","@google/genai":"*","@pmndrs/uikit":"1.0.64","@webgpu/types":"*","@litertjs/core":"*","three-mesh-bvh":"*","@sparkjsdev/spark":"*","three-pathfinding":"^1.3.0","@preact/signals-core":"^1.14.0","@mediapipe/tasks-audio":"*","@mediapipe/tasks-vision":"*"},"peerDependenciesMeta":{"ws":{"optional":true},"lit":{"optional":true},"openai":{"optional":true},"@types/three":{"optional":true},"@google/genai":{"optional":true},"@webgpu/types":{"optional":true},"@litertjs/core":{"optional":true},"three-mesh-bvh":{"optional":true},"@sparkjsdev/spark":{"optional":true},"three-pathfinding":{"optional":true},"@mediapipe/tasks-audio":{"optional":true},"@mediapipe/tasks-vision":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/xrblocks_0.24.0_1792540970758_0.4657283730956341"}}},"time":{"created":"2025-08-08T22:39:13.751Z","modified":"2026-10-21T00:02:51.430Z","1.0.0":"2025-08-08T22:39:13.934Z","0.0.1":"2025-08-08T22:39:44.551Z","0.1.0":"2025-09-29T18:43:01.129Z","0.2.0":"2025-10-20T22:06:57.636Z","0.3.0":"2025-11-04T00:07:46.636Z","0.3.1":"2025-11-04T06:32:52.013Z","0.4.0":"2025-11-20T21:08:19.845Z","0.5.0":"2025-12-04T15:14:46.050Z","0.5.1":"2025-12-06T06:20:01.181Z","0.6.0":"2025-12-19T21:53:20.526Z","0.7.0":"2026-01-03T00:06:11.888Z","0.8.0":"2026-01-16T22:53:50.933Z","0.8.2":"2026-01-17T01:43:01.718Z","0.9.0":"2026-01-30T18:28:26.229Z","0.10.0":"2026-02-18T19:55:27.133Z","0.11.0":"2026-03-10T23:25:59.786Z","0.12.0":"2026-04-01T20:37:41.471Z","0.13.0":"2026-04-29T19:03:30.127Z","0.14.0":"2026-05-12T17:44:03.337Z","0.14.1":"2026-05-13T22:27:17.993Z","0.15.0":"2026-05-22T22:46:41.897Z","0.16.0":"2026-06-08T21:56:03.439Z","0.17.0":"2026-06-30T20:52:49.945Z","0.18.0":"2026-07-17T18:20:51.330Z","0.19.0":"2026-08-04T21:27:22.148Z","0.20.0":"2026-08-10T23:01:24.291Z","0.21.0":"2026-08-25T00:13:26.304Z","0.21.1":"2026-08-25T18:16:54.337Z","0.22.0":"2026-10-10T00:46:25.265Z","0.23.0":"2026-10-15T18:13:22.126Z","0.24.0":"2026-10-21T00:02:51.081Z"},"bugs":{"url":"https://github.com/google/xrblocks/issues"},"author":{"name":"XR Blocks authors"},"license":"Apache-2.0","homepage":"https://xrblocks.github.io","repository":{"url":"git+https://github.com/google/xrblocks.git","type":"git"},"description":"XR Blocks SDK","maintainers":[{"name":"starea","email":"xiaoxinghai@gmail.com"},{"name":"david18284","email":"david@davidl.me"}],"readme":"# XR Blocks\n\n[![NPM Package](https://img.shields.io/npm/v/xrblocks)](https://www.npmjs.com/package/xrblocks)\n[![jsDelivr npm hits](<https://img.shields.io/jsdelivr/npm/hw/xrblocks?label=jsdelivr%20(npm)>)](https://www.jsdelivr.com/package/npm/xrblocks)\n[![jsDelivr GitHub hits](<https://img.shields.io/jsdelivr/gh/hw/google/xrblocks?label=jsdelivr%20(GitHub)>)](https://www.jsdelivr.com/package/gh/google/xrblocks)\n[![arXiv](https://img.shields.io/badge/arXiv-2509.25504-b31b1b.svg)](https://arxiv.org/abs/2509.25504)\n[![arXiv](https://img.shields.io/badge/arXiv-2603.24591-b31b1b.svg)](https://arxiv.org/abs/2603.24591)\n\n#### AI-native library for rapid AI + XR prototyping & innovation\n\n[Site](https://xrblocks.github.io/) &mdash;\n[Manual](https://xrblocks.github.io/docs/) &mdash;\n[Templates](https://xrblocks.github.io/docs/templates/Basic/) &mdash;\n[Demos](https://xrblocks.github.io/docs/samples/) &mdash;\n[Gem](https://xrblocks.github.io/gem) &mdash;\n[YouTube](https://www.youtube.com/watch?v=75QJHTsAoB8) &mdash;\n[arXiv](https://arxiv.org/abs/2509.25504) &mdash;\n[Blog](https://research.google/blog/vibe-coding-xr-accelerating-ai-xr-prototyping-with-xr-blocks-and-gemini)\n\n<p align=\"center\">\n  <a href=\"https://xrblocks.github.io/docs/samples/Ballpit/\" target=\"_blank\"><img width=\"32.3%\" src=\"https://cdn.jsdelivr.net/gh/google/xrblocks@main/assets/ballpit-demo.webp\" alt=\"Ballpit\" /></a>\n  <a href=\"https://xrblocks.github.io/docs/samples/XR-Emoji/\" target=\"_blank\"><img width=\"32.3%\" src=\"https://cdn.jsdelivr.net/gh/google/xrblocks@main/assets/xremoji-demo.webp\" alt=\"XR Emoji\" /></a>\n  <a href=\"https://xrblocks.github.io/docs/samples/Gemini-Icebreakers/\" target=\"_blank\"><img width=\"32.3%\" src=\"https://cdn.jsdelivr.net/gh/google/xrblocks@main/assets/gemini-icebreakers-demo.webp\" alt=\"Gemini Icebreakers\" /></a>\n</p>\n\n### Description\n\n**XR Blocks** is a lightweight, cross-platform library for rapidly prototyping\nadvanced XR and AI experiences. Built upon [three.js](https://threejs.org), it\ntargets Chrome v136+ with WebXR support on Android XR (e.g.,\n[Galaxy XR](https://www.samsung.com/us/xr/galaxy-xr/galaxy-xr/), [XREAL Aura](https://www.xreal.com/aura)) and also\nincludes a powerful desktop simulator for development. The framework emphasizes\na user-centric, developer-friendly SDK designed to simplify the creation of\nimmersive applications with features like:\n\n- **Hand Tracking & Gestures:** Access advanced hand tracking, custom gestures\n  with TensorFlow Lite / PyTorch models, and interaction events.\n- **Hand Gesture Recognition:** Opt into pinch, open-palm, fist, thumbs-up, point,\n  and spread detection with `options.enableGestures()`, tune providers or\n  thresholds, and subscribe to `gesturestart`/`gestureupdate`/`gestureend`\n  events from the shared subsystem.\n- **Head Gesture Recognition:** Detect completed nod and shake motions with\n  `options.enableHeadGestures()` and subscribe through\n  `xb.input.headGestures` on device or in the desktop simulator.\n- **World Understanding:** Present samples with depth sensing, geometry-aware\n  physics, planes, scene meshes, object recognition, human pose, face landmarks,\n  and semantic segmentation in XR and the desktop simulator.\n- **Unified Interaction:** Use one target and capture pipeline for mouse, gaze,\n  hand rays, controllers, direct touch, spatial UI, and object manipulation.\n- **Built-in Spatial UI:** Compose world-space cards and view-space overlays from\n  flex-layout panels, text, images, icons, buttons, sliders, and themes.\n- **Agent Context:** Expose an agent-facing scene context with semantic trees,\n  visible-object state, and Set-of-Mark screenshots through `xb.context`.\n- **AI Integration:** Seamlessly connect to Gemini for multimodal\n  understanding and live conversational experiences.\n- **Cross-Platform:** Write once and deploy to both XR devices and desktop\n  Chrome browsers.\n\nWe welcome all contributors to foster an AI + XR community! Read our\n[blog post](https://research.google/blog/xr-blocks-accelerating-ai-xr-innovation/)\nand [white paper](https://arxiv.org/abs/2509.25504) for a visionary roadmap.\n\n### Usage\n\n[![Build Size](https://badgen.net/bundlephobia/minzip/xrblocks)](https://bundlephobia.com/result?p=xrblocks)\n\nXR Blocks can be imported directly into a webpage using an importmap. This code\ncreates a basic XR scene containing a cylinder. When you view the scene, you can\npinch your fingers (in XR) or click (in the desktop simulator) to change the\ncylinder's color. Check out\n[this live demo](https://xrblocks.github.io/docs/templates/Basic/) with simple\ncode below:\n\n```html\n<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Basic Example | XR Blocks</title>\n    <meta charset=\"utf-8\" />\n    <meta\n      name=\"viewport\"\n      content=\"width=device-width, initial-scale=1.0, user-scalable=no\"\n    />\n    <link\n      type=\"text/css\"\n      rel=\"stylesheet\"\n      href=\"https://cdn.jsdelivr.net/gh/google/xrblocks@main/samples/main.css\"\n    />\n    <script type=\"importmap\">\n      {\n        \"imports\": {\n          \"three\": \"https://cdn.jsdelivr.net/npm/three@0.186.0/build/three.module.js\",\n          \"three/addons/\": \"https://cdn.jsdelivr.net/npm/three@0.186.0/examples/jsm/\",\n          \"xrblocks\": \"https://cdn.jsdelivr.net/gh/google/xrblocks@build/xrblocks.js\",\n          \"xrblocks/addons/\": \"https://cdn.jsdelivr.net/gh/google/xrblocks@build/addons/\"\n        }\n      }\n    </script>\n  </head>\n  <body>\n    <script type=\"module\">\n      import * as THREE from 'three';\n      import * as xb from 'xrblocks';\n\n      /**\n       * A basic example of XR Blocks to render a cylinder and pinch to change its color.\n       */\n      class MainScript extends xb.Script {\n        init() {\n          // Add a simple light to the scene.\n          this.add(new THREE.HemisphereLight(0xffffff, 0x666666, 3));\n\n          // Create the 3D object.\n          const geometry = new THREE.CylinderGeometry(0.2, 0.2, 0.4, 32);\n          const material = new THREE.MeshPhongMaterial({\n            color: 0xffffff,\n            transparent: true,\n            opacity: 0.8,\n          });\n          this.player = new THREE.Mesh(geometry, material);\n\n          // Position the object in front of the user.\n          this.player.position.set(\n            0,\n            xb.user.height - 0.5,\n            -xb.user.objectDistance\n          );\n          this.add(this.player);\n        }\n\n        /**\n         * Changes the color of the mesh on a pinch or click.\n         */\n        onSelectEnd(event) {\n          this.player.material.color.set(Math.random() * 0xffffff);\n        }\n      }\n\n      // When the page content is loaded, add our script and initialize XR Blocks.\n      document.addEventListener('DOMContentLoaded', function () {\n        xb.add(new MainScript());\n        xb.init(new xb.Options());\n      });\n    </script>\n  </body>\n</html>\n```\n\n### Gem\n\nFor rapid prototyping, please refer to this\n[blog](https://research.google/blog/vibe-coding-xr-accelerating-ai-xr-prototyping-with-xr-blocks-and-gemini)\nand try out [XR Blocks Gem](https://xrblocks.github.io/gem) on Android XR or\ndesktop using Chrome.\n\nA video demonstration of XR Blocks Gem can be found\n[here](https://www.youtube.com/watch?v=nknCzIxHHzw).\n\n### Development Guide\n\n#### Setup\n\n```bash\n# Clone the repository.\ngit clone --depth=1 git@github.com:google/xrblocks.git\ncd xrblocks\n\n# Install dependencies and build the SDK.\nnpm ci\n```\n\nAfter setup, either serve the samples and demos or develop locally, as described\nbelow.\n\n#### Serve samples and demos\n\nServe the repository to view samples and demos through `http://localhost:8080/`:\n\n```bash\n# Serve the repository on http://localhost:8080\nnpm run serve\n```\n\n#### Develop locally\n\nFor active SDK development, run watch mode and local serving together:\n\n```bash\n# Build the SDK in watch mode and serve the repository on http://localhost:8080\nnpm run dev\n```\n\n#### Linting and formatting\n\nXR Blocks uses Oxlint for linting and Prettier for formatting. Run the following\ncommands to check your code before submitting a pull request:\n\n```bash\nnpm run lint # Oxlint check\nnpm run format # Prettier format\n```\n\nIf you are using VS Code, install the\n[Oxc extension](https://marketplace.visualstudio.com/items?itemName=oxc.oxc-vscode)\nand the\n[Prettier extension](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode),\nthen set Prettier as your default formatter.\n\n#### Devtools\n\nFor local before/after Chrome measurements, see the [standalone profiler](https://github.com/google/xrblocks/blob/main/tools/README.md). It records interleaved samples and raw traces and generates a static HTML report, with optional WebGL depth-call counters.\n\nFor additional agent-first development tools including UI visualizers, 3d model visualizers, CLI based embodied XR Blocks runners, and automatic agent controls, see [XR Blocks Devtools](https://github.com/xrblocks/xrblocks-devtools).\n\n#### Notice\n\nThis is not an officially supported Google product, but will be actively\nmaintained by the XR Labs team and external collaborators. This project is not\neligible for the\n[Google Open Source Software Vulnerability Rewards Program](https://bughunters.google.com/open-source-security).\n\n### User Data & Permissions\n\nWhen using specific features in this SDK (e.g., WebXR, hand tracking, camera),\nusers will be prompted with permission requests and the application may not\nfunction as expected with denied permissions.\n\nXR Blocks is an open source software development kit that does not handle data\nby itself; however, the use of other APIs may collect user data and require user\npermissions:\n\nWhen using [WebXR](https://immersive-web.github.io/) and\n[LiteRT](https://ai.google.dev/edge/litert) APIs (e.g., depth sensing, gesture\nrecognition), all data is stored and processed locally with on-device models.\n\nWhen using AI features (e.g.,\n[Gemini Live](https://gemini.google/overview/gemini-live), Gemini Flash), the\ndata will be sent to Gemini servers and please follow\n[Gemini's Privacy & Terms](https://ai.google.dev/gemini-api/terms).\n\n### Keep Your API Key Secure\n\nThis SDK does not require any API keys for non-AI samples. In specific AI use\ncases, this SDK provides an interface to use cloud-hosted Gemini services with\nXR experiences, requiring an API key from\n[AI Studio](https://aistudio.google.com/app/apikey). Please follow\n[this doc](https://ai.google.dev/gemini-api/docs/api-key#security) for best\npractices to keep your API key secure.\n\nTreat your Gemini API key like a password. If compromised, others can use your\nproject's quota, incur charges (if billing is enabled), and access your private\ndata, such as files.\n\n#### Critical Security Rules\n\nNever commit API keys to source control. Do not check your API key into version\ncontrol systems like Git.\n\nNever expose API keys on the client-side. Do not use your API key directly in\nweb or mobile apps in production. Keys in client-side code (including our\nJavaScript/TypeScript libraries and REST calls) can be extracted.\n\n### Uninstallation\n\nTo remove XR Blocks from your code, simply remove the lines from your `<script\ntype=\"importmap\">` tag in HTML, or `import * from xrblocks` in JavaScript, or\nuse `npm uninstall xrblocks` from your project directory.\n\n### References\n\nIf you find XR Blocks inspiring or useful in your research, please reference it\nas:\n\n```bibtex\n@misc{Li2025XR,\n  title={{XR Blocks: Accelerating Human-centered AI + XR Innovation}},\n  author={Li, David and Numan, Nels and Qian, Xun and Chen, Yanhe and Zhou, Zhongyi and Alekseev, Evgenii and Lee, Geonsun and Cooper, Alex and Xia, Min and Chung, Scott and Nelson, Jeremy and Yuan, Xiuxiu and Dias, Jolica and Bettridge, Tim and Hersh, Benjamin and Huynh, Michelle and Piascik, Konrad and Cabello, Ricardo and Kim, David and Du, Ruofei},\n  year={2025},\n  eprint={2509.25504},\n  archivePrefix={arXiv},\n  primaryClass={cs.HC},\n  url={https://arxiv.org/abs/2509.25504},\n}\n```\n\n```bibtex\n@misc{Du2026Vibe,\n  title={Vibe Coding XR: Accelerating AI + XR Prototyping with XR Blocks and Gemini},\n  author={Ruofei Du and Benjamin Hersh and David Li and Nels Numan and Xun Qian and Yanhe Chen and Zhongyi Zhou and Xingyue Chen and Jiahao Ren and Robert Timothy Bettridge and Steve Toh and David Kim},\n  year={2026},\n  eprint={2603.24591},\n  archivePrefix={arXiv},\n  primaryClass={cs.HC},\n  url={https://arxiv.org/abs/2603.24591},\n}\n```\n\n### Awards\n\n- **[Auggie Award at AWE USA 2026 - Best Use Of AI](https://www.awexr.com/blog/auggie-Award-Winners-at-AWE-USA-2026)**\n\n### Terms of Service\n\n- Please follow\n  [Google's Privacy & Terms](https://policies.google.com/privacy?hl=en-US)\n  when using this SDK.\n\n- When using AI features in this SDK, please follow\n  [Gemini's Privacy & Terms](https://ai.google.dev/gemini-api/terms).\n","readmeFilename":"README.md"}