{"_id":"@dgreenheck/three-pinata","_rev":"25-7f4396b1b51232aa18e803edb5874891","name":"@dgreenheck/three-pinata","dist-tags":{"latest":"2.0.1"},"versions":{"0.3.1":{"name":"@dgreenheck/three-pinata","version":"0.3.1","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@0.3.1","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"a72797dc558378102ff3fafd47aa3d58004d4c1e","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-0.3.1.tgz","fileCount":29,"integrity":"sha512-XZ7ls3Te0yMQS3+zUjZyZbswWIX2vckujevZvAgsj8AW6Wwg6CgmobQgmLz3ysRk1uJ9wt20v7lfrvfdqmCYmA==","signatures":[{"sig":"MEYCIQD3B2qFL87YqN5IG3+o83ZD4JAK63eEMhTHVJqTNZgXNgIhAPzKaPRclKHWwqh0UT0eiHpjJhgUBSp1zIy5JlT2QNbv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111258},"main":"./dist/three-pinata.umd.js","type":"module","types":"./dist/index.d.ts","module":"./dist/three-pinata.es.js","exports":{".":{"import":"./dist/three-pinata.es.js","require":"./dist/three-pinata.umd.js"}},"gitHead":"6fdb23fcee3956c29d6a3459f2581efdb3b0962d","scripts":{"test":"jest","build":"tsc && vite build"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.8.1","description":"Three.js library for fracturing and slicing non-convex meshes in real time.","directories":{},"_nodeVersion":"20.12.1","dependencies":{"three":"^0.158.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^4.5.0","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.158.2","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","vite-plugin-top-level-await":"^1.4.1"},"peerDependencies":{"three":"^0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_0.3.1_1741032732129_0.5671115628867776","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@dgreenheck/three-pinata","version":"0.3.2","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@0.3.2","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"16023289b84bd44010a8a2a8f23d0564576c75fb","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-0.3.2.tgz","fileCount":29,"integrity":"sha512-rd/jeaXPy4QPBYf7MNLJEPT/U+mG5a6s3Bm1j0X7lSYz9EYukrjWoNz4sCfI5UYmoj+2zmfbfCEeX37pMY2ZUw==","signatures":[{"sig":"MEQCIAY4xdm+opclYI7oAkw+Xb3HmCcVXe1/4Bqv+lYVVBg5AiA/dBvU3lwbS7aqxmMob38qrGSjZIBc9GdmAehDjs/0Dw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111301},"main":"./dist/three-pinata.umd.js","type":"module","types":"./dist/index.d.ts","module":"./dist/three-pinata.es.js","exports":{".":{"import":"./dist/three-pinata.es.js","require":"./dist/three-pinata.umd.js"}},"gitHead":"539f4cc4fac5fb33937b9c52a8fbc45dae7fca8f","scripts":{"test":"jest","build":"tsc && vite build"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.8.1","description":"Three.js library for fracturing and slicing non-convex meshes in real time.","directories":{},"_nodeVersion":"20.12.1","dependencies":{"three":"^0.158.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^4.5.0","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.158.2","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","vite-plugin-top-level-await":"^1.4.1"},"peerDependencies":{"three":"^0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_0.3.2_1741034843717_0.703818808846906","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@dgreenheck/three-pinata","version":"0.3.3","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@0.3.3","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"e03908b12742186d0984721ac171dabbd9b429f5","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-0.3.3.tgz","fileCount":55,"integrity":"sha512-ZnXsmQtuXnquXjSoGK6CiZXiRiO+j4ffIg101f0JJXVEPvD8/1C6NyFvwjMA+V3I8cka+CH/y83GRKIzwk6B/Q==","signatures":[{"sig":"MEUCIByFol0hxmCiMkGg4SjmB88Z55QD7nQeAUEaHX5kXmkGAiEAoFOFOM8Q5zZ5jk/u5l+dzCEmMb+tRgLXSoRmnBGVpT8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":242515},"main":"./dist/three-pinata.umd.js","type":"module","types":"./dist/index.d.ts","module":"./dist/three-pinata.es.js","exports":{".":{"import":"./dist/three-pinata.es.js","require":"./dist/three-pinata.umd.js"}},"gitHead":"539f4cc4fac5fb33937b9c52a8fbc45dae7fca8f","scripts":{"test":"jest","build":"tsc && vite build"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.8.1","description":"Three.js library for fracturing and slicing non-convex meshes in real time.","directories":{},"_nodeVersion":"20.12.1","dependencies":{"three":"^0.158.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^4.5.0","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.158.2","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","vite-plugin-top-level-await":"^1.4.1"},"peerDependencies":{"three":"^0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_0.3.3_1741034990745_0.9238747655854198","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@dgreenheck/three-pinata","version":"0.3.4","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@0.3.4","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"e3eb499804c06df06a250b53d82c8bb835fa02c9","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-0.3.4.tgz","fileCount":57,"integrity":"sha512-NCLfaNCt/+/phm2Fp+3f42Yxs6wFP4TZAsG7K1Hje7YHzFUuZfcjq6+73fuyvhwNaUW5+Urg0nBtUu60t+9dKw==","signatures":[{"sig":"MEQCIGwgViMd8wby0IhckYJZe+WivctoawDTjpmCqrBw5M+7AiA0WINJKs9+DnhM/kurmdVxJLo4XiAA7h7o4c0twwkflg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":246510},"main":"./dist/three-pinata.umd.js","type":"module","types":"./dist/index.d.ts","module":"./dist/three-pinata.es.js","exports":{".":{"import":"./dist/three-pinata.es.js","require":"./dist/three-pinata.umd.js"}},"gitHead":"539f4cc4fac5fb33937b9c52a8fbc45dae7fca8f","scripts":{"test":"jest","build":"tsc && vite build"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.8.1","description":"Three.js library for fracturing and slicing non-convex meshes in real time.","directories":{},"_nodeVersion":"20.12.1","dependencies":{"three":"^0.158.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^4.5.0","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.158.2","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","vite-plugin-top-level-await":"^1.4.1"},"peerDependencies":{"three":"^0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_0.3.4_1741035112047_0.1284855260482638","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@dgreenheck/three-pinata","version":"0.3.5","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@0.3.5","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"e84e91ec3f9d315f34d9552986b197f288328d32","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-0.3.5.tgz","fileCount":31,"integrity":"sha512-5Z2zTWncB8/tqCYQw/qapA+ZVFJHLyAA7CISMB6IWJzJJ27ME19jWei3CIzlCLjn7Oa4lhG+Aq/rMoNRLmQIiw==","signatures":[{"sig":"MEQCIGh+ZCxvvZru6I6icIe7BdY1H4kyiaggI31OBcGQppPSAiA9KgU9wtrXO1HJ+Wb21qiVU4D9/1rs1gGeupDdlY0JiA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217379},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"e330685e5fbd45abfb6d2804b2b863732d138d37","scripts":{"test":"jest","build":"tsc && vite build"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.8.1","description":"Three.js library for fracturing and slicing non-convex meshes in real time.","directories":{},"_nodeVersion":"20.12.1","dependencies":{"three":"^0.158.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^4.5.0","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.158.2","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","vite-plugin-top-level-await":"^1.4.1"},"peerDependencies":{"three":"^0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_0.3.5_1741036841555_0.5752592077103365","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@dgreenheck/three-pinata","version":"0.3.6","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@0.3.6","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"7e0b3f47deab7b6c745031e8360623c7f23ae994","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-0.3.6.tgz","fileCount":57,"integrity":"sha512-NTC7uKmn/9rWDjETBX6jqj1KDMTvX9lmFF4LJnw04kNrrTcn9YUOAewCbNfelxeHitMdwmAuzzeE0xWRavR7UA==","signatures":[{"sig":"MEUCIQD+K0LcFOIT44TbapXKw++DcShEPvULjH7qX96gWobPogIgCB/fOzDY2DKVyx2Oat986TompZw3jUgUPtJPzPxfJ2o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":246511},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"e330685e5fbd45abfb6d2804b2b863732d138d37","scripts":{"test":"jest","build":"tsc && vite build"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.8.1","description":"Three.js library for fracturing and slicing non-convex meshes in real time.","directories":{},"_nodeVersion":"20.12.1","dependencies":{"three":"^0.158.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^4.5.0","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.158.2","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","vite-plugin-top-level-await":"^1.4.1"},"peerDependencies":{"three":"^0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_0.3.6_1741037057884_0.755253009410491","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@dgreenheck/three-pinata","version":"0.3.7","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@0.3.7","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"c2e832e8fc2fa52ad2c566bb3e0b9119ae321e2b","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-0.3.7.tgz","fileCount":56,"integrity":"sha512-WoYywDAWQrmhRlZtU9cG+WB37P/3v5QK22WHLva0EfyBRXQ/5JV+3AAkqNwWCMjp4hU+psSpnAowHwMCkrmwrQ==","signatures":[{"sig":"MEQCIAV8Xtl2XfpGhf7TOZkue3Ul3usXcnG3K3hmNgj0I3KYAiAv3Cj1shz/N5F8lLwjFtZ11bCbu6n6Gqw/pl+xThiyVg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244055},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"e330685e5fbd45abfb6d2804b2b863732d138d37","scripts":{"test":"jest","build":"tsc && vite build"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.8.1","description":"Three.js library for fracturing and slicing non-convex meshes in real time.","directories":{},"_nodeVersion":"20.12.1","dependencies":{"three":"^0.158.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^4.5.0","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.158.2","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","vite-plugin-top-level-await":"^1.4.1"},"peerDependencies":{"three":"^0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_0.3.7_1741037514845_0.053635858016482185","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"@dgreenheck/three-pinata","version":"0.3.8","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@0.3.8","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"cbb0a4f38cf4a98609e1672cd70ab2001ad4dea1","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-0.3.8.tgz","fileCount":57,"integrity":"sha512-6RQTyT9yYfglaa37ZZCcwDXVOXLfr5yohyQHLBv4hYXDIEa9MQziyF5DrzmJ+FUd9s1sp6Ynyw9W1R8SUITUIA==","signatures":[{"sig":"MEUCIAExjggV5miDCkj1KktAwh+k6IHgT0yJko2ldo5Ls6VDAiEAnRpFOD416codY2ztOzkbR4KeP0lE6UBnAe9beIuIn5E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":310897},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"82d0a1984952aa90956f56783770e44e2884e5c2","scripts":{"test":"jest","build":"tsc && vite build"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.8.1","description":"Three.js library for fracturing and slicing non-convex meshes in real time.","directories":{},"_nodeVersion":"20.12.1","dependencies":{"three":"^0.158.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^4.5.0","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.158.2","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","vite-plugin-top-level-await":"^1.4.1"},"peerDependencies":{"three":"^0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_0.3.8_1741038065973_0.9913016625110618","host":"s3://npm-registry-packages-npm-production"}},"0.3.9":{"name":"@dgreenheck/three-pinata","version":"0.3.9","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@0.3.9","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"1c89890596ad0ebdffbf12f16a8df56566d81b3c","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-0.3.9.tgz","fileCount":32,"integrity":"sha512-mSDGfQDmcF9ABf36hYN/UF3SoaR1o8HJmaUj/3XHxbLn2M8KyYslye2sKD1geZ1QyAmSifDhKsbz+3PCJiWM/Q==","signatures":[{"sig":"MEUCIFdS3qyELMv445yBX53s5xS0neG8l8JBP+1gBBjX1YnuAiEAlCq+5fVVuUxpoXMpzig4CTF8lscWF6V4iK23x8x/jko=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":305782},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"types":"./build/index.d.ts","import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"7791b07189798206d1d59aa3e7dfd1294db0d8ef","scripts":{"test":"jest","build":"tsc && vite build"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.8.1","description":"Three.js library for fracturing and slicing non-convex meshes in real time.","directories":{},"_nodeVersion":"20.12.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^6.2.0","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.158.2","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","vite-plugin-top-level-await":"^1.4.1"},"peerDependencies":{"three":"^0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_0.3.9_1741040775807_0.03827709095547327","host":"s3://npm-registry-packages-npm-production"}},"0.3.10":{"name":"@dgreenheck/three-pinata","version":"0.3.10","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@0.3.10","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"2970e7ee32f68ca69aec91492b622b8467ca0f71","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-0.3.10.tgz","fileCount":32,"integrity":"sha512-UBmWaqJwobLGY81ETJdafIwpV7k6LH9B2eC/IM8uk+xBUNG/TsA6jmxFEEMZKYp+7XKu0Iad1jcqYqlHi67RQA==","signatures":[{"sig":"MEUCIEuCELJomeYl17csa0Pg2Sr2Pya/7yk/TlLkIbHrJmSrAiEAhGETBnTCw4XoFN6EXROmmWbHAls3NCxh90vxOjCMPes=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":306581},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"types":"./build/index.d.ts","import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"a292a89440731befb9ac322569089a3f1a683ea2","scripts":{"test":"jest","build":"tsc && vite build"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.8.1","description":"Three.js library for fracturing and slicing non-convex meshes in real time.","directories":{},"_nodeVersion":"20.12.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^6.2.0","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.158.2","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","vite-plugin-top-level-await":"^1.4.1"},"peerDependencies":{"three":"^0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_0.3.10_1741041778576_0.5645201819205008","host":"s3://npm-registry-packages-npm-production"}},"0.3.11":{"name":"@dgreenheck/three-pinata","version":"0.3.11","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@0.3.11","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"60135bf1c4468bd3744a8c54087301db2ae911e2","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-0.3.11.tgz","fileCount":32,"integrity":"sha512-Z+IChVgKFx7FClnzr2inbbND47Ns+0EYd/rVhZe+i1hRqBMo3QPu/5CBFawmrndBn+uOCoGJNkaTupfwXOiRMA==","signatures":[{"sig":"MEUCIQCwXnEU69PNMhiaRy4y+5E5LCTohca68WJ4sByVSvnIjwIgAmo4ieQDiTT7nSiqaEN2Rh4SwY2nfsJl7AQWN8u1QMs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":306582},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"types":"./build/index.d.ts","import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"4c0a9a579ba50efc243455e86d60c83836e0605c","scripts":{"test":"jest","build":"tsc && vite build"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.8.1","description":"Three.js library for fracturing and slicing non-convex meshes in real time.","directories":{},"_nodeVersion":"20.12.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^6.2.0","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.158.2","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","vite-plugin-top-level-await":"^1.4.1"},"peerDependencies":{"three":">=0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_0.3.11_1741041866636_0.7821034656389043","host":"s3://npm-registry-packages-npm-production"}},"0.3.12":{"name":"@dgreenheck/three-pinata","version":"0.3.12","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@0.3.12","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"c27ec75b7a6163aaf05327fe98ea4eeeaf976d8c","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-0.3.12.tgz","fileCount":32,"integrity":"sha512-8L56H0VzmQDMzPISC2Fktfffmbnk4kcjHUatknrsd4fq+zgff86bLbTId+6Gov78Xdimsg7r6ZvnZyHlB5Z46A==","signatures":[{"sig":"MEYCIQCP9uUtf2GlhpZnA+ijJ4XQMKVDxetCI/CbTRQHXMehjgIhAKgNBdaE+2b69cNmLJfgIua+0Zj/WR/XyWXG/8lns3N7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":306594},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"types":"./build/index.d.ts","import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"629460ecfff1aa1370dcccd47d5e8a7874419a28","scripts":{"test":"jest","build":"tsc && vite build"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.8.1","description":"Three.js library for fracturing and slicing non-convex meshes in real time.","directories":{},"_nodeVersion":"20.12.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^6.2.0","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.158.2","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","vite-plugin-top-level-await":"^1.4.1"},"peerDependencies":{"three":">=0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_0.3.12_1743569494735_0.6695159785466256","host":"s3://npm-registry-packages-npm-production"}},"0.3.13":{"name":"@dgreenheck/three-pinata","version":"0.3.13","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@0.3.13","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"a368819b1fb43043bc384b5763c19d2e94e7dd7f","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-0.3.13.tgz","fileCount":32,"integrity":"sha512-J4vUXztd9FcAnyXervAkeiLWQr5d9nssWwEoJJYLTAs7tGIB6t/sYW7bG66P+FP4L4YQh3CrENnzAOAumWN87g==","signatures":[{"sig":"MEUCIFho1iaB6S7q4xkIKLD0r1jkGJCH/nXlx6Y+ON3J35t8AiEAqUrKxVJIlkeIEVqyjcFKnppNeFTy7csxxdy0MliSkgc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":306588},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"types":"./build/index.d.ts","import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"5d6314b55e53bb6d51797edda9bbac508ef29d99","scripts":{"test":"jest","build":"tsc && vite build"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.8.1","description":"Three.js library for fracturing and slicing non-convex meshes in real time.","directories":{},"_nodeVersion":"20.12.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^6.2.0","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.158.2","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","vite-plugin-top-level-await":"^1.4.1"},"peerDependencies":{"three":">=0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_0.3.13_1743570633674_0.5418967515427333","host":"s3://npm-registry-packages-npm-production"}},"0.3.14":{"name":"@dgreenheck/three-pinata","version":"0.3.14","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@0.3.14","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"c659ea5d89a86df7776a36c622fa70ef8fcc89c4","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-0.3.14.tgz","fileCount":32,"integrity":"sha512-tFnZz84yKTdW4El99Mb8Z5iUeciGawk34F0JLehmcKR6HwwqiqmfbmNX5WgHwRsLEzLSOwLgBt2vQps9apVg7w==","signatures":[{"sig":"MEYCIQCOqqGSg/USCLBoFUg/7CV/psXFGMDKaTxbrcNtqHnShwIhAOk5OXkjHsazsSG3i7Twsf0rfqN5iIo/ojUikBC7YBUk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":306743},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"types":"./build/index.d.ts","import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"92150336d3158c78dac38c150beab89c5095d6df","scripts":{"test":"jest","build":"tsc && vite build"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.8.1","description":"Three.js library for fracturing and slicing non-convex meshes in real time.","directories":{},"_nodeVersion":"20.12.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^6.2.0","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.158.2","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","vite-plugin-top-level-await":"^1.4.1"},"peerDependencies":{"three":">=0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_0.3.14_1743570803949_0.4929213118742104","host":"s3://npm-registry-packages-npm-production"}},"0.3.15":{"name":"@dgreenheck/three-pinata","version":"0.3.15","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@0.3.15","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"b27e5162598cc07d5a88d02be1881ffa76d6ec25","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-0.3.15.tgz","fileCount":37,"integrity":"sha512-cUrmXo1gld5MX8KA53M1vlj2+eMQv9aRxwJ3+jznRHfjDm+Jhf2Kc+UyknAcg+QcN7NSALaHrtvZ5T0uSGl2fA==","signatures":[{"sig":"MEUCIQDFayjvMfk/AJ5ulD5n2lQiNiTdMMDBymj3cxUqKXr25gIgKY/H68gQdkT/B0VOjcogXpf08u3ONBXSr5UgYTADSts=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":322217},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"types":"./build/index.d.ts","import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"cb2a988963afd21e5fc2939c6bff889d5dc40076","scripts":{"test":"jest","build":"tsc && vite build && vite build --config vite.core.config.js"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.8.1","description":"Three.js library for fracturing and slicing non-convex meshes in real time.","directories":{},"_nodeVersion":"20.12.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^6.2.0","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.158.2","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","vite-plugin-top-level-await":"^1.4.1"},"peerDependencies":{"three":">=0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_0.3.15_1743698707602_0.6151715213373923","host":"s3://npm-registry-packages-npm-production"}},"0.3.16":{"name":"@dgreenheck/three-pinata","version":"0.3.16","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@0.3.16","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"1bc8836564239ce54e64eadd8dcb4ee5c0064031","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-0.3.16.tgz","fileCount":37,"integrity":"sha512-qoYzijcl31aeORHCR0WaBC7HxKd75uk4jnAx54X57SwfefHBFpSKIPawoo0fPP5mHcRK6UN00bX9KgdTbtkwyg==","signatures":[{"sig":"MEUCIHxgfU80jvk4PTU2MjjeCHhizvROwksUq8S71fJpca2EAiEA632pYCrBhdoNbGpk+OxyhI9ugJCOC/Et5vKQT9XKJes=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":322217},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"types":"./build/index.d.ts","import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"031cf9384e717fafda6124f901182203ef12db3e","scripts":{"test":"jest","build":"tsc && vite build && vite build --config vite.core.config.js"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.8.1","description":"Three.js library for fracturing and slicing non-convex meshes in real time.","directories":{},"_nodeVersion":"20.12.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^6.2.0","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.158.2","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","vite-plugin-top-level-await":"^1.4.1"},"peerDependencies":{"three":">=0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_0.3.16_1743704029903_0.8972557077605252","host":"s3://npm-registry-packages-npm-production"}},"0.3.17":{"name":"@dgreenheck/three-pinata","version":"0.3.17","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@0.3.17","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"b4005a586ca576781192f1839fd0360ff792654d","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-0.3.17.tgz","fileCount":37,"integrity":"sha512-PFH5a8k8IcOfsWLOJ7EoyXI1iFdbKWEMhIbVCoZJd+0wXFuNKS6kMsX8Fy5Jg/1QglUiLkj9ld1NHPGp96q2Bw==","signatures":[{"sig":"MEYCIQDFfjwB8QUD8eaEgkZsxjlUYgvx+1167BHQZlOjTJQq6AIhAKzdEkw9lZAfgoy6rQgGRvDwFR5AT+FPmgjJ0BX/EARB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":323736},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"types":"./build/index.d.ts","import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"2bfa6b187a636e54c8d72763a77bc43ef774bd6e","scripts":{"test":"jest","build":"tsc && vite build && vite build --config vite.core.config.js"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.8.1","description":"Three.js library for fracturing and slicing non-convex meshes in real time.","directories":{},"_nodeVersion":"20.12.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^6.2.0","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.158.2","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","vite-plugin-top-level-await":"^1.4.1"},"peerDependencies":{"three":">=0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_0.3.17_1743704128308_0.6952159955816526","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@dgreenheck/three-pinata","version":"1.0.0","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@1.0.0","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"e6284341f6e8dab56323410056f2f0b885b7a180","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-1.0.0.tgz","fileCount":38,"integrity":"sha512-jKmQpKp2OpsidI+ucFRoYboP0DTTPrjce4HjcCB5U+8ri1+Wo1TtcFK8p6VNCY8nrETexZOhh8tl8/NO2Y06Tw==","signatures":[{"sig":"MEQCIH8iODzMRYRCLZCSCo7OnnXAVGU/zct/BEfFIUHefJfaAiAnnn9Aqnrgsd4r9hGz6Ldu7j4aKZ05i2kBnvcU1EhDBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":299315},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"types":"./build/index.d.ts","import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"c5010aea7f1014409805c5dbb8eeaa2aeba0bceb","scripts":{"test":"jest","build":"tsc && vite build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.9.2","description":"Three.js library for fracturing and slicing meshes in real time.","directories":{},"_nodeVersion":"23.10.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^6.2.0","three":"^0.180.0","eslint":"^9.39.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.180.0","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.46.3","vite-plugin-top-level-await":"^1.4.1","@typescript-eslint/eslint-plugin":"^8.46.3"},"peerDependencies":{"three":">=0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_1.0.0_1762325798306_0.8682786147800092","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@dgreenheck/three-pinata","version":"1.0.1","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@1.0.1","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"0d745c27cdb8ddd48c9176f0f0e2f179853389b8","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-1.0.1.tgz","fileCount":37,"integrity":"sha512-3Jgwm8Biief/Ls+6CgRN5kWWO4q85/8/TzLN04387xIgcTyCI9yyfH3RT0Ba4+SFzqy6xGl617t0MkqgohwBlQ==","signatures":[{"sig":"MEQCIAnvXCSsJhsxuF2xu/e+SQyd+Itd7xXyooWNh5oPptiAAiAlqbsZq0I7V9fHMJBa7ont3W6M9C5u5sfM9Z9ks3XvLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":293800},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"types":"./build/index.d.ts","import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"86e738c1bda157cd01af6a3b3612096541e6c256","scripts":{"test":"jest","build":"tsc && vite build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.9.2","description":"Three.js library for fracturing and slicing meshes in real time.","directories":{},"_nodeVersion":"23.10.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^6.2.0","three":"^0.180.0","eslint":"^9.39.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.180.0","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.46.3","vite-plugin-top-level-await":"^1.4.1","@typescript-eslint/eslint-plugin":"^8.46.3"},"peerDependencies":{"three":">=0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_1.0.1_1762327598834_0.20401109452148036","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@dgreenheck/three-pinata","version":"1.0.2","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@1.0.2","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"67e3ad75facee0dcce6b6154d29d3961f06144d0","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-1.0.2.tgz","fileCount":38,"integrity":"sha512-irO1vYytM4Q2kBVkkP5n9WLx3KpVCL6v4gJaS6YV+wle3IHO7LY2z/VM8l+05MK6zpkmgJ7tDEeR6YAsKV3Sgw==","signatures":[{"sig":"MEQCIBotgsXixSve21aX2NRvK/rXX3Z8EAyaMgznEIEamGUYAiB+bixWNivmrzmHvyYbWhU9qroKxRZ+ZzI2QuGfuGGR/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":307237},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"types":"./build/index.d.ts","import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"cb69a1ab481881f47e7711a807455de92d72d369","scripts":{"test":"jest","build":"tsc && vite build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.9.2","description":"Three.js library for fracturing and slicing meshes in real time.","directories":{},"_nodeVersion":"23.10.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^6.2.0","three":"^0.180.0","eslint":"^9.39.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.180.0","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.46.3","vite-plugin-top-level-await":"^1.4.1","@typescript-eslint/eslint-plugin":"^8.46.3"},"peerDependencies":{"three":">=0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_1.0.2_1762327703358_0.6952572661668377","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@dgreenheck/three-pinata","version":"1.0.3","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@1.0.3","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"18f02e13f738b12f26d685fa69dca095f2a75a57","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-1.0.3.tgz","fileCount":38,"integrity":"sha512-y6vnpa9xQ9z/kIIxyaiUor3PdiIzYnlKvr28RBTsB29C2fDKIY0HtDelR5PLYNut7O6mZL9Qec0vldTJV1nF0A==","signatures":[{"sig":"MEUCICfdP++/MI694MO6Iz2b4RKBYZFzQvRU7v7qyub8bc7jAiEAi/ClMP5AFXEk0a9HyTritFZAex9NFIdcnmsvKYDETpA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":306904},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"types":"./build/index.d.ts","import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"d36fa7a8be5f991415d41f637c6ed49ddf2e0514","scripts":{"test":"jest","build":"tsc && vite build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.9.2","description":"Three.js library for fracturing and slicing meshes in real time.","directories":{},"_nodeVersion":"23.10.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^6.2.0","three":"^0.180.0","eslint":"^9.39.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.180.0","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.46.3","vite-plugin-top-level-await":"^1.4.1","@typescript-eslint/eslint-plugin":"^8.46.3"},"peerDependencies":{"three":">=0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_1.0.3_1762328004040_0.43079328916056725","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@dgreenheck/three-pinata","version":"1.0.4","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@1.0.4","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"4c58233ded8cec97290676e75b7c8947e16c597d","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-1.0.4.tgz","fileCount":38,"integrity":"sha512-3x/5T+CM8eRYpC+7ob63fgDc2zPFmLmtdRmtcKu8MrpnrtFDGtzF1dHhj+FXqBsJgyGG0p1mMjl3X395+Dr28A==","signatures":[{"sig":"MEUCIHTNUhlNEjaTwq2hVXVPepwy2ccEHXyBxMrTWIra+zJ1AiEArJ7JK12ssIJtNEBaJ1f0ImLiMvQ6GbzFElOepC/BMeM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":307767},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"types":"./build/index.d.ts","import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"1c963ece3de738bbfc469db796f6cd5f3e1c7f3f","scripts":{"test":"jest","build":"tsc && vite build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.9.2","description":"Three.js library for fracturing and slicing meshes in real time.","directories":{},"_nodeVersion":"23.10.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^6.2.0","three":"^0.180.0","eslint":"^9.39.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.180.0","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.46.3","vite-plugin-top-level-await":"^1.4.1","@typescript-eslint/eslint-plugin":"^8.46.3"},"peerDependencies":{"three":">=0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_1.0.4_1762330421959_0.6508562807765579","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@dgreenheck/three-pinata","version":"1.0.5","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@1.0.5","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"f43e510c148d263a634c2adb07f31ec7a91e3cd7","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-1.0.5.tgz","fileCount":38,"integrity":"sha512-a6mE0JsZyMV9pAvvZSFTkcX1CqqD12agliAje7Jswx3We8nP75e2fWLEK9DgUenfTiQZPPxPmI+7u3t1Wg2Oqg==","signatures":[{"sig":"MEYCIQDxbMdRt79os6OiHZWacRLrQ6rqXYMPFdBxcz/NBPRB9AIhANbZpCoNBboDYYCnxX+Qeh4Q32E8BUe8lZ7kiA4NZdDD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":296510},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"types":"./build/index.d.ts","import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"34840dd75eb0ab171000fd9ac72d1ee1b953257b","scripts":{"test":"jest","build":"tsc && vite build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.9.2","description":"Three.js library for fracturing and slicing meshes in real time.","directories":{},"_nodeVersion":"23.10.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^6.2.0","three":"^0.180.0","eslint":"^9.39.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.180.0","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.46.3","vite-plugin-top-level-await":"^1.4.1","@typescript-eslint/eslint-plugin":"^8.46.3"},"peerDependencies":{"three":">=0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_1.0.5_1762334343811_0.4287117320546574","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@dgreenheck/three-pinata","version":"2.0.0","keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","_id":"@dgreenheck/three-pinata@2.0.0","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"homepage":"https://github.com/dgreenheck/three-pinata#readme","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"dist":{"shasum":"ba8b39f8b677b6e3f379999cbd21b5ec00daa142","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-2.0.0.tgz","fileCount":44,"integrity":"sha512-d79Ea4DF+5Yy5J3qV12SFcgp5Qmhs2ulnS+DkoD63Tp5LVhKTgYZMCoXbC+CCmuXu8ipszP+Qb/0TVc/enwQHg==","signatures":[{"sig":"MEUCIQC6q9ykG50V0PBFJV4CzwiYflCvJcRwd0fgIY3Gk1GEQwIgA7nlUzoFlJ8cpFIOeRDtcbHuYoLhgSixTWKlrnU+pxk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":321880},"main":"./build/three-pinata.umd.js","type":"module","types":"./build/index.d.ts","module":"./build/three-pinata.es.js","exports":{".":{"types":"./build/index.d.ts","import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"gitHead":"f3a218ec75aa7b6afa4ab1835dfa92989a489223","scripts":{"test":"jest","build":"tsc && vite build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"repository":{"url":"git+https://github.com/dgreenheck/three-pinata.git","type":"git"},"_npmVersion":"10.9.2","description":"Three.js library for fracturing and slicing meshes in real time.","directories":{},"_nodeVersion":"23.10.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.3","jest":"^29.7.0","vite":"^6.2.0","three":"^0.180.0","eslint":"^9.39.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"3.2.5","typescript":"^5.2.2","@types/jest":"^29.5.8","@types/three":"^0.180.0","vite-plugin-dts":"^3.9.1","vite-plugin-wasm":"^3.3.0","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.46.3","vite-plugin-top-level-await":"^1.4.1","@typescript-eslint/eslint-plugin":"^8.46.3"},"peerDependencies":{"three":">=0.158.0"},"_npmOperationalInternal":{"tmp":"tmp/three-pinata_2.0.0_1762828939753_0.20972720502640385","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@dgreenheck/three-pinata","version":"2.0.1","description":"Three.js library for fracturing and slicing meshes in real time.","type":"module","main":"./build/three-pinata.umd.js","module":"./build/three-pinata.es.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","import":"./build/three-pinata.es.js","require":"./build/three-pinata.umd.js"}},"scripts":{"build":"tsc && vite build","test":"jest","typecheck":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/dgreenheck/three-pinata.git"},"keywords":["threejs","webgl","physics"],"author":{"name":"Dan Greenheck"},"license":"MIT","bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"homepage":"https://github.com/dgreenheck/three-pinata#readme","peerDependencies":{"three":">=0.158.0"},"devDependencies":{"@types/jest":"^29.5.8","@types/three":"^0.180.0","@typescript-eslint/eslint-plugin":"^8.46.3","@typescript-eslint/parser":"^8.46.3","eslint":"^9.39.1","eslint-config-prettier":"^10.1.8","jest":"^29.7.0","prettier":"3.2.5","three":"^0.180.0","ts-jest":"^29.1.1","ts-node":"^10.9.1","tsx":"^4.7.3","typescript":"^5.2.2","vite":"^6.2.0","vite-plugin-dts":"^3.9.1","vite-plugin-top-level-await":"^1.4.1","vite-plugin-wasm":"^3.3.0"},"_id":"@dgreenheck/three-pinata@2.0.1","gitHead":"f3a218ec75aa7b6afa4ab1835dfa92989a489223","_nodeVersion":"23.10.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-1pQU68B5xguxvRryl6nxZBARDqOW+/lXf7Xpz8QZ87awadSpN85mDNChTEdA4fPfJYyrft+thHS6Ooe7E5rdFA==","shasum":"0c08683b09a073250aa08501018964e153bd80fb","tarball":"https://registry.npmjs.org/@dgreenheck/three-pinata/-/three-pinata-2.0.1.tgz","fileCount":45,"unpackedSize":338999,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEkEgkCoGPS7QFGiuFyfIZTMtJF6aEN4caqh28z+bo7TAiEApi7EvDLiLHvp77GuaHJCd7yHlBU2FI08lItrY8X/Gkw="}]},"_npmUser":{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"},"directories":{},"maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/three-pinata_2.0.1_1762829003236_0.6234742880178632"},"_hasShrinkwrap":false}},"time":{"created":"2025-03-03T20:12:12.047Z","modified":"2025-11-11T02:43:23.591Z","0.3.1":"2025-03-03T20:12:12.328Z","0.3.2":"2025-03-03T20:47:23.939Z","0.3.3":"2025-03-03T20:49:50.946Z","0.3.4":"2025-03-03T20:51:52.228Z","0.3.5":"2025-03-03T21:20:41.781Z","0.3.6":"2025-03-03T21:24:18.059Z","0.3.7":"2025-03-03T21:31:55.061Z","0.3.8":"2025-03-03T21:41:06.170Z","0.3.9":"2025-03-03T22:26:15.974Z","0.3.10":"2025-03-03T22:42:58.778Z","0.3.11":"2025-03-03T22:44:26.827Z","0.3.12":"2025-04-02T04:51:34.930Z","0.3.13":"2025-04-02T05:10:33.888Z","0.3.14":"2025-04-02T05:13:24.199Z","0.3.15":"2025-04-03T16:45:07.806Z","0.3.16":"2025-04-03T18:13:50.146Z","0.3.17":"2025-04-03T18:15:28.515Z","1.0.0":"2025-11-05T06:56:38.527Z","1.0.1":"2025-11-05T07:26:39.039Z","1.0.2":"2025-11-05T07:28:23.557Z","1.0.3":"2025-11-05T07:33:24.263Z","1.0.4":"2025-11-05T08:13:42.153Z","1.0.5":"2025-11-05T09:19:04.034Z","2.0.0":"2025-11-11T02:42:19.938Z","2.0.1":"2025-11-11T02:43:23.403Z"},"bugs":{"url":"https://github.com/dgreenheck/three-pinata/issues"},"author":{"name":"Dan Greenheck"},"license":"MIT","homepage":"https://github.com/dgreenheck/three-pinata#readme","keywords":["threejs","webgl","physics"],"repository":{"type":"git","url":"git+https://github.com/dgreenheck/three-pinata.git"},"description":"Three.js library for fracturing and slicing meshes in real time.","maintainers":[{"name":"dgreenheck","email":"dan.greenheck@drgsoftwaresolutions.com"}],"readme":"# three-pinata\n\n![NPM Version](https://img.shields.io/npm/v/%40dgreenheck%2Fthree-pinata)\n![NPM Downloads](https://img.shields.io/npm/dw/%40dgreenheck%2Fthree-pinata)\n![GitHub Repo stars](https://img.shields.io/github/stars/dgreenheck/three-pinata)\n![X (formerly Twitter) Follow](https://img.shields.io/twitter/follow/dangreenheck)\n![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCrdx_EU_Wx8_uBfqO0cI-9Q)\n\n<p align=\"center\">\n<img src=\"https://github.com/user-attachments/assets/66876fed-9779-462b-a02f-b9da54ad5176\" />\n</p>\n\n**Real-time mesh fracturing and slicing for Three.js**\n\nThree-pinata is a library that enables you to fracture and slice 3D meshes in real-time directly in the browser. Whether you're building a destruction physics game, an interactive art piece, or a scientific visualization, three-pinata provides the tools you need to break things beautifully.\n\n## Features\n\n- **Voronoi Fracturing** - Natural-looking fracture patterns with 3D and 2.5D modes\n- **Impact-Based Fracturing** - Concentrate fragments around impact points for realistic destruction\n- **Refracturing** - Fragments can be fractured again for progressive destruction (generation tracking handled externally)\n- **Plane Slicing** - Slice meshes along arbitrary planes in local or world space\n- **Dual Materials** - Separate materials for outer surfaces and internal fracture faces\n- **Custom Seed Points** - Full control over fracture patterns with custom Voronoi seeds\n- **UV Mapping** - Automatic UV generation for internal faces with configurable scale and offset\n\n## Live Demo\n\nCheck out the interactive demo: https://three-pinata-demo.vercel.app/\n\n## Installation\n\n```bash\nnpm install @dgreenheck/three-pinata\n```\n\nRequires Three.js >= 0.158.0 as a peer dependency.\n\n## Quick Start\n\n```typescript\nimport * as THREE from \"three\";\nimport { DestructibleMesh, FractureOptions } from \"@dgreenheck/three-pinata\";\n\n// Setup scene\nconst scene = new THREE.Scene();\nconst camera = new THREE.PerspectiveCamera(\n  75,\n  window.innerWidth / window.innerHeight,\n  0.1,\n  1000,\n);\nconst renderer = new THREE.WebGLRenderer();\nrenderer.setSize(window.innerWidth, window.innerHeight);\ndocument.body.appendChild(renderer.domElement);\n\n// Create materials\nconst outerMaterial = new THREE.MeshStandardMaterial({ color: 0x4a90e2 });\nconst innerMaterial = new THREE.MeshStandardMaterial({ color: 0xff6b6b });\n\n// Create destructible mesh with both materials\nconst geometry = new THREE.SphereGeometry(1, 32, 32);\nconst mesh = new DestructibleMesh(geometry, outerMaterial, innerMaterial);\nscene.add(mesh);\n\n// Fracture the mesh\nconst options = new FractureOptions({\n  fractureMethod: \"voronoi\",\n  fragmentCount: 50,\n  voronoiOptions: {\n    mode: \"3D\",\n  },\n});\nconst fragments = mesh.fracture(options, (fragment) => {\n  // Setup each fragment (material already set automatically)\n  scene.add(fragment);\n});\n\n// Hide original mesh\nmesh.visible = false;\n\n// Render\nrenderer.render(scene, camera);\n```\n\n## API Reference\n\n### Classes\n\n#### `DestructibleMesh`\n\nExtends `THREE.Mesh` with built-in fracturing and slicing capabilities.\n\n**Constructor:**\n\n```typescript\nnew DestructibleMesh(\n  geometry?: THREE.BufferGeometry,\n  outerMaterial?: THREE.Material,\n  innerMaterial?: THREE.Material\n)\n```\n\n**Parameters:**\n\n- `geometry` - The geometry for the mesh\n- `outerMaterial` - Material for the original outer surfaces\n- `innerMaterial` - Material for newly created internal fracture/slice faces (optional, defaults to outerMaterial)\n\n**Methods:**\n\n##### `fracture(options, onFragment?, onComplete?)`\n\nFractures the mesh into fragments.\n\n- **Parameters:**\n  - `options: FractureOptions` - Fracture configuration\n  - `onFragment?: (fragment: DestructibleMesh, index: number) => void` - Optional callback for each fragment\n  - `onComplete?: () => void` - Optional callback when fracturing is complete\n- **Returns:** `DestructibleMesh[]` - Array of fragment meshes\n\n##### `slice(sliceNormal, sliceOrigin, options?, onSlice?, onComplete?)`\n\nSlices the mesh along a plane (local space).\n\n- **Parameters:**\n  - `sliceNormal: THREE.Vector3` - Slice plane normal (local space)\n  - `sliceOrigin: THREE.Vector3` - Point on slice plane (local space)\n  - `options?: SliceOptions` - Slice configuration\n  - `onSlice?: (piece: DestructibleMesh, index: number) => void` - Optional callback for each piece\n  - `onComplete?: () => void` - Optional callback when slicing is complete\n- **Returns:** `DestructibleMesh[]` - Array of fragment meshes\n\n##### `sliceWorld(worldNormal, worldOrigin, options?, onSlice?, onComplete?)`\n\nSlices the mesh along a plane (world space).\n\n- **Parameters:**\n  - `worldNormal: THREE.Vector3` - Slice plane normal (world space)\n  - `worldOrigin: THREE.Vector3` - Point on slice plane (world space)\n  - `options?: SliceOptions` - Slice configuration\n  - `onSlice?: (piece: DestructibleMesh, index: number) => void` - Optional callback for each piece\n  - `onComplete?: () => void` - Optional callback when slicing is complete\n- **Returns:** `DestructibleMesh[]` - Array of fragment meshes\n\n##### `dispose()`\n\nDisposes the mesh geometry and material to free up memory.\n\n- **Parameters:** None\n- **Returns:** `void`\n\n### Options\n\n#### `FractureOptions`\n\nConfiguration for fracturing operations. Supports both Voronoi and simple plane-based fracturing.\n\n**Constructor:**\n\n```typescript\nnew FractureOptions({\n  fractureMethod?: \"voronoi\" | \"simple\";\n  fragmentCount?: number;\n  voronoiOptions?: VoronoiOptions;\n  fracturePlanes?: { x: boolean; y: boolean; z: boolean };\n  textureScale?: THREE.Vector2;\n  textureOffset?: THREE.Vector2;\n  seed?: number;\n})\n```\n\n**Properties:**\n\n- `fractureMethod: \"voronoi\" | \"simple\"` - Fracture method to use (default: \"voronoi\")\n  - `\"voronoi\"`: Natural-looking fracture using Voronoi tessellation (requires voronoiOptions)\n  - `\"simple\"`: Simple plane-based fracturing (fast, lower quality)\n- `fragmentCount: number` - Number of fragments to create (default: 50). Note that actual fragment count may be higher when fracturing non-convex meshes.\n- `voronoiOptions?: VoronoiOptions` - Voronoi-specific options (required when fractureMethod is \"voronoi\")\n- `fracturePlanes: { x: boolean; y: boolean; z: boolean }` - Simple fracture: which axes to fracture along (default: all true)\n- `textureScale: THREE.Vector2` - UV scale for internal faces (default: 1,1)\n- `textureOffset: THREE.Vector2` - UV offset for internal faces (default: 0,0)\n- `seed?: number` - Random seed for reproducibility\n\n#### `VoronoiOptions`\n\nVoronoi-specific fracture configuration (used within FractureOptions).\n\n**Interface:**\n\n```typescript\n{\n  mode: \"3D\" | \"2.5D\";\n  seedPoints?: THREE.Vector3[];\n  impactPoint?: THREE.Vector3;\n  impactRadius?: number;\n  projectionAxis?: \"x\" | \"y\" | \"z\" | \"auto\";\n  projectionNormal?: THREE.Vector3;\n  useApproximation?: boolean;\n  approximationNeighborCount?: number;\n}\n```\n\n**Properties:**\n\n- `mode: \"3D\" | \"2.5D\"` - Voronoi fracture mode (required)\n  - `\"3D\"`: Full 3D Voronoi tessellation - most realistic, slower\n  - `\"2.5D\"`: 2D Voronoi projected through mesh - faster, good for flat objects\n- `seedPoints?: THREE.Vector3[]` - Custom seed points for Voronoi cells in local space (auto-generated if not provided)\n- `impactPoint?: THREE.Vector3` - Impact location in local space to concentrate fragments around\n- `impactRadius?: number` - Radius around impact point for fragment density\n- `projectionAxis?: \"x\" | \"y\" | \"z\" | \"auto\"` - For 2.5D mode: projection axis (default: \"auto\")\n- `projectionNormal?: THREE.Vector3` - For 2.5D mode: optional projection plane normal\n- `useApproximation?: boolean` - Use K-nearest neighbor approximation for performance (default: false)\n  - **Warning:** May cause fragment overlap when enabled\n- `approximationNeighborCount?: number` - Neighbors to consider when using approximation (default: 12)\n\n#### `SliceOptions`\n\nConfiguration for slicing operations.\n\n**Constructor:**\n\n```typescript\nnew SliceOptions();\n```\n\n**Properties:**\n\n- `textureScale: THREE.Vector2` - UV scale for internal faces (default: 1,1)\n- `textureOffset: THREE.Vector2` - UV offset for internal faces (default: 0,0)\n\n## Usage Examples\n\n### Basic Fracturing\n\n```typescript\nimport { DestructibleMesh, FractureOptions } from \"@dgreenheck/three-pinata\";\n\nconst outerMaterial = new THREE.MeshStandardMaterial({ color: 0x4a90e2 });\nconst innerMaterial = new THREE.MeshStandardMaterial({ color: 0xff6b6b });\n\nconst mesh = new DestructibleMesh(geometry, outerMaterial, innerMaterial);\nscene.add(mesh);\n\nconst options = new FractureOptions({\n  fractureMethod: \"voronoi\",\n  fragmentCount: 16,\n  voronoiOptions: {\n    mode: \"3D\",\n  },\n});\nconst fragments = mesh.fracture(options);\n\nfragments.forEach((fragment) => scene.add(fragment));\nmesh.visible = false;\n```\n\n### Fracturing with Impact Point\n\n```typescript\nconst options = new FractureOptions({\n  fractureMethod: \"voronoi\",\n  fragmentCount: 16,\n  voronoiOptions: {\n    mode: \"3D\",\n    impactPoint: new THREE.Vector3(0, 1, 0), // Local space\n    impactRadius: 0.5, // Smaller = more concentrated\n  },\n});\n\nconst fragments = mesh.fracture(options);\n```\n\n### Refracturing\n\nFragments can be fractured again for progressive destruction. Generation tracking is handled externally using `userData`:\n\n```typescript\n// Configuration\nconst maxGeneration = 3;\nconst fragmentCounts = {\n  1: 32, // First fracture: 32 fragments\n  2: 16, // Second fracture: 16 fragments\n  3: 8,  // Third fracture: 8 fragments\n};\n\n// Initial fracture\nconst mesh = new DestructibleMesh(geometry, outerMaterial, innerMaterial);\nmesh.userData.generation = 0; // Track generation externally\n\nconst options1 = new FractureOptions({\n  fractureMethod: \"voronoi\",\n  fragmentCount: fragmentCounts[1],\n  voronoiOptions: {\n    mode: \"3D\",\n  },\n});\n\nconst fragments = mesh.fracture(options1, (fragment) => {\n  // Track generation in each fragment\n  fragment.userData.generation = 1;\n  scene.add(fragment);\n});\n\n// Later, refracture a fragment when clicked\nfunction onFragmentClick(fragment: DestructibleMesh) {\n  const currentGeneration = fragment.userData.generation || 0;\n\n  // Check generation limit (external refracture control)\n  if (currentGeneration >= maxGeneration) {\n    return; // Max generation reached\n  }\n\n  // Determine fragment count for next generation\n  const nextGeneration = currentGeneration + 1;\n  const fragmentCount = fragmentCounts[nextGeneration];\n\n  const options = new FractureOptions({\n    fractureMethod: \"voronoi\",\n    fragmentCount: fragmentCount,\n    voronoiOptions: {\n      mode: \"3D\",\n    },\n  });\n\n  const newFragments = fragment.fracture(options, (newFragment) => {\n    // Track generation externally\n    newFragment.userData.generation = nextGeneration;\n    scene.add(newFragment);\n  });\n\n  // Clean up old fragment\n  scene.remove(fragment);\n  fragment.geometry.dispose();\n}\n```\n\nThis external approach gives you complete control over refracture behavior, allowing you to implement custom strategies like:\n- Progressive weakening (fewer fragments per generation)\n- Energy-based refracturing (only if impact force exceeds threshold)\n- Material-based limits (glass refractures more than wood)\n- Performance-based throttling (stop refracturing when FPS drops)\n\n### Simple Fracturing\n\n```typescript\nconst options = new FractureOptions({\n  fractureMethod: \"simple\",\n  fragmentCount: 50,\n  fracturePlanes: { x: true, y: true, z: true },\n});\n\nconst fragments = mesh.fracture(options);\n```\n\n### Slicing\n\n```typescript\n// Create mesh with outer and inner materials\nconst mesh = new DestructibleMesh(geometry, outerMaterial, innerMaterial);\n\nconst sliceNormal = new THREE.Vector3(0, 1, 0); // Horizontal cut\nconst sliceOrigin = new THREE.Vector3(0, 0, 0); // At origin\n\nconst options = new SliceOptions();\nconst pieces = mesh.slice(sliceNormal, sliceOrigin, options);\n\n// Materials are already set automatically\npieces.forEach((piece) => scene.add(piece));\nmesh.visible = false;\n```\n\n### Using Callbacks\n\n```typescript\nconst mesh = new DestructibleMesh(geometry, outerMaterial, innerMaterial);\n\nconst fragments = mesh.fracture(\n  options,\n  (fragment, index) => {\n    // Called for each fragment (materials already set)\n    fragment.castShadow = true;\n\n    // Add physics, apply forces, etc.\n    physics.add(fragment, { type: \"dynamic\" });\n  },\n  () => {\n    // Called when complete\n    console.log(\"Fracturing complete!\");\n  },\n);\n```\n\n### Dual Materials\n\nFragments support two materials - one for the original surface, one for internal fracture faces.\n\n**Recommended approach**: Pass both materials to the constructor:\n\n```typescript\nconst outerMaterial = new THREE.MeshStandardMaterial({ color: 0xff6644 });\nconst innerMaterial = new THREE.MeshStandardMaterial({ color: 0xdddddd });\n\n// Materials are automatically inherited by fragments\nconst mesh = new DestructibleMesh(geometry, outerMaterial, innerMaterial);\n\nconst fragments = mesh.fracture(options, (fragment) => {\n  // Material array [outer, inner] is already set automatically\n  scene.add(fragment);\n});\n```\n\n**Alternative**: Manually set materials on each fragment:\n\n```typescript\nconst mesh = new DestructibleMesh(geometry, outerMaterial);\n\nconst fragments = mesh.fracture(options, (fragment) => {\n  // Manually assign material array: [outer, inner]\n  fragment.material = [outerMaterial, innerMaterial];\n  scene.add(fragment);\n});\n```\n\nThe fragment geometries include two material groups:\n\n- **Group 0** (materialIndex 0): Original outer surface faces\n- **Group 1** (materialIndex 1): Newly created internal fracture faces\n\n## Important Requirements\n\n### Manifold/Watertight Meshes\n\nThe library requires **manifold (watertight)** meshes - 3D models that form a completely closed, solid volume with no holes or self-intersecting geometry.\n\n**Valid meshes:**\n\n- Sphere, cube, cylinder, torus\n- Closed character models\n- Properly modeled objects with no gaps\n\n**Invalid meshes:**\n\n- Planes or single-sided surfaces\n- Meshes with holes or missing faces\n- Open-ended cylinders or boxes\n- Overlapping geometry\n\n**How to check/fix in Blender:**\n\n1. Select mesh in Edit mode\n2. `Mesh > Clean Up > Make Manifold`\n3. Use \"3D Print Toolbox\" addon to check for issues\n\n**Why this matters:**\n\n- Fracturing algorithms need to determine \"inside\" vs \"outside\"\n- Non-manifold meshes create ambiguity leading to missing faces, holes, and visual artifacts\n- Physics colliders will behave unpredictably with non-manifold fragments\n\n## Physics Integration\n\nThe library handles geometry only. For realistic destruction, integrate with a physics engine like [Rapier](https://rapier.rs/).\n\n### Basic Physics Pattern\n\n```typescript\nimport RAPIER from \"@dimforge/rapier3d\";\n\n// Initialize physics world\nawait RAPIER.init();\nconst world = new RAPIER.World({ x: 0, y: -9.81, z: 0 });\n\n// Add physics to fragments\nconst fragments = mesh.fracture(options, (fragment) => {\n  // Create rigid body\n  const rigidBodyDesc = RAPIER.RigidBodyDesc.dynamic().setTranslation(\n    fragment.position.x,\n    fragment.position.y,\n    fragment.position.z,\n  );\n  const rigidBody = world.createRigidBody(rigidBodyDesc);\n\n  // Create convex hull collider\n  const vertices = fragment.geometry.getAttribute(\"position\").array;\n  const colliderDesc = RAPIER.ColliderDesc.convexHull(vertices)\n    .setRestitution(0.3)\n    .setFriction(0.5);\n  world.createCollider(colliderDesc, rigidBody);\n});\n\n// Update physics each frame\nfunction animate() {\n  world.step();\n  // Sync Three.js objects with physics...\n}\n```\n\nFor a complete implementation, see:\n\n- `demo/src/physics/PhysicsWorld.ts` - Complete physics wrapper\n- `demo/src/physics/PhysicsBody.ts` - Physics body wrapper\n- `demo/src/scenes/SmashingScene.ts` - Real-world example\n\n## Performance Tips\n\n- **Fragment Count**: 10-50 fragments is optimal. 100+ may cause lag on slower devices\n- **2.5D vs 3D**: Use 2.5D mode when possible - significantly faster\n- **Pre-fracture**: Fracture ahead of time and keep fragments hidden for instant destruction\n- **Approximation**: For high fragment counts (>50), enable `useApproximation` (may cause overlap)\n- **Physics**: More fragments = more physics bodies. Despawn fragments after they settle\n\n## Limitations\n\n- **Manifold Requirement**: Meshes must be watertight (no holes or self-intersecting geometry)\n- **Memory**: Each fragment is a new geometry. Plan accordingly for many destructible objects\n- **Physics Required**: Library only handles geometry - you must add physics integration\n\n## Building\n\n```bash\nnpm run build:lib\n```\n\nGenerates:\n\n- `three-pinata.es.js` - ES Module\n- `three-pinata.umd.js` - UMD Module\n- Type declarations\n\n## Running the Demo\n\n```bash\nnpm install\nnpm run dev\n```\n\nOpen http://localhost:5173/\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).\n\n## Acknowledgments\n\n- Original [OpenFracture](https://github.com/dgreenheck/OpenFracture) Unity library\n- [Three.js](https://threejs.org/) for 3D rendering\n- [Rapier](https://www.rapier.rs/) for physics in the demo\n\n## Support\n\nFor bugs or feature requests, create an issue in the [issue tracker](https://github.com/dgreenheck/three-pinata/issues).\n\n## Contributing\n\nContributions welcome! Please submit a Pull Request.\n","readmeFilename":"README.md"}