{"_id":"2d-physics-engine","_rev":"17-28b7c0ebebdd09463e2fbb2a9dd0f86a","name":"2d-physics-engine","dist-tags":{"latest":"1.5.8"},"versions":{"1.0.0":{"name":"2d-physics-engine","version":"1.0.0","keywords":["physics","2d","physics-engine","game-engine","ecs","entity-component-system","collision-detection","rigidbody","typescript","canvas"],"author":"","license":"MIT","_id":"2d-physics-engine@1.0.0","maintainers":[{"name":"odoniyor","email":"doniyorgit@gmail.com"}],"homepage":"https://github.com/danyalready/2d-physics-engine#readme","bugs":{"url":"https://github.com/danyalready/2d-physics-engine/issues"},"dist":{"shasum":"f4ee85e30b19973e295a0543364f9184d89b104f","tarball":"https://registry.npmjs.org/2d-physics-engine/-/2d-physics-engine-1.0.0.tgz","fileCount":95,"integrity":"sha512-Zm5XKSiunGVnF1IDqAsLgYdINNloFCFb4DdweYi81O/EfPagWXOPsXsUXSfGJMK0lcsXeUk4XBTNW77iIfg1wA==","signatures":[{"sig":"MEUCIQC0QSyfI/EF4Bp5vOTJzj1+86LurjWOB6RVaxLnOw6K2AIgAtHNwh13O2XUSLjwljaSmyAUak4xjxmE3Ja+1pJJ0lU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139719},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"f863df1cde13d3afaa74b4a47ee0190e6eb280e2","scripts":{"dev":"vite --open","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier . --write","preview":"vite preview","build:lib":"npm run build","build:demo":"vite build","format-check":"prettier . --check","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"odoniyor","email":"doniyorgit@gmail.com"},"repository":{"url":"git+https://github.com/danyalready/2d-physics-engine.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, flexible 2D physics engine with ECS architecture, built with TypeScript","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","vite":"^5.0.0","ts-jest":"^29.1.1","prettier":"^3.1.1","babel-jest":"^29.7.0","typescript":"^5.2.2","@types/jest":"^29.5.10","@babel/preset-env":"^7.23.5","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-physics-engine_1.0.0_1764425887610_0.9000738735508247","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"2d-physics-engine","version":"1.1.0","keywords":["physics","2d","physics-engine","game-engine","ecs","entity-component-system","collision-detection","rigidbody","typescript","canvas"],"author":"","license":"MIT","_id":"2d-physics-engine@1.1.0","maintainers":[{"name":"odoniyor","email":"doniyorgit@gmail.com"}],"homepage":"https://github.com/danyalready/2d-physics-engine#readme","bugs":{"url":"https://github.com/danyalready/2d-physics-engine/issues"},"dist":{"shasum":"0c42d2f70a928ceb999ffc95efdd2d284a3df126","tarball":"https://registry.npmjs.org/2d-physics-engine/-/2d-physics-engine-1.1.0.tgz","fileCount":95,"integrity":"sha512-f9TFgfS7kFOlmzF5FYjbU8/1uX1M3CmB5+CGNLw+fRcBBNVB03znGMz9HIyOzdCPmswjZZRCkbtExqD0KjC6gw==","signatures":[{"sig":"MEYCIQCA6esAcLyX34pasd2HCCQQQbV7+vMwXMIuDxrcJZdTVQIhAODW3nehGiiFWdBOWJiQo8old3aQSr4vZ7qQXR/xGimZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149059},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"f18547d5c2a3dde8722489b7038a819fcdd60ccf","scripts":{"dev":"vite --open","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier . --write","preview":"vite preview","build:lib":"npm run build","build:demo":"vite build","format-check":"prettier . --check","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"odoniyor","email":"doniyorgit@gmail.com"},"repository":{"url":"git+https://github.com/danyalready/2d-physics-engine.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, flexible 2D physics engine with ECS architecture, built with TypeScript","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","vite":"^5.0.0","ts-jest":"^29.1.1","prettier":"^3.1.1","babel-jest":"^29.7.0","typescript":"^5.2.2","@types/jest":"^29.5.10","@babel/preset-env":"^7.23.5","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-physics-engine_1.1.0_1764509068307_0.9679986991842733","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"2d-physics-engine","version":"1.2.0","keywords":["physics","2d","physics-engine","game-engine","ecs","entity-component-system","collision-detection","rigidbody","typescript","canvas"],"author":"","license":"MIT","_id":"2d-physics-engine@1.2.0","maintainers":[{"name":"odoniyor","email":"doniyorgit@gmail.com"}],"homepage":"https://github.com/danyalready/2d-physics-engine#readme","bugs":{"url":"https://github.com/danyalready/2d-physics-engine/issues"},"dist":{"shasum":"987f0d969d2c2f4802eb36bc08fa94bae92b2464","tarball":"https://registry.npmjs.org/2d-physics-engine/-/2d-physics-engine-1.2.0.tgz","fileCount":107,"integrity":"sha512-xlqyJwS4CkWIP299M7RDddXm5qMGPfCxc6v0B470075/foH/gZ+IjL6NRJPmwTOGbP0EjYowIkxeOHtmJ0T9zg==","signatures":[{"sig":"MEUCIQDgD0nctEsZkEG80YeSlQQ2y1fgJyGmaLPHJKsi2hciUQIgNAY+CBowE9CMsvYVdQrxYBN8V31/qa2q8ZdGS/hTzhY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184673},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"aee4c650d7b4beb0e51506026f9008fb0b396c2d","scripts":{"dev":"vite --open","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier . --write","preview":"vite preview","build:lib":"npm run build","build:demo":"vite build","format-check":"prettier . --check","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"odoniyor","email":"doniyorgit@gmail.com"},"repository":{"url":"git+https://github.com/danyalready/2d-physics-engine.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, flexible 2D physics engine with ECS architecture, built with TypeScript","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","vite":"^5.0.0","ts-jest":"^29.1.1","prettier":"^3.1.1","babel-jest":"^29.7.0","typescript":"^5.2.2","@types/jest":"^29.5.10","@babel/preset-env":"^7.23.5","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-physics-engine_1.2.0_1765103260037_0.4249254565855354","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"2d-physics-engine","version":"1.3.0","keywords":["physics","2d","physics-engine","game-engine","ecs","entity-component-system","collision-detection","rigidbody","typescript","canvas"],"author":"","license":"MIT","_id":"2d-physics-engine@1.3.0","maintainers":[{"name":"odoniyor","email":"doniyorgit@gmail.com"}],"homepage":"https://github.com/danyalready/2d-physics-engine#readme","bugs":{"url":"https://github.com/danyalready/2d-physics-engine/issues"},"dist":{"shasum":"521c5e15ca26b396ba626ac6800279544be91634","tarball":"https://registry.npmjs.org/2d-physics-engine/-/2d-physics-engine-1.3.0.tgz","fileCount":107,"integrity":"sha512-IW9voxcSI6C5dK/IAM2zxigGhBmABUCF5P8xL8r6O0gUDIi8xSTx6WlGNXEtrzBI4dfG8XZ2ymVMEPgBtKFs5Q==","signatures":[{"sig":"MEYCIQCS4Is/g+C+lp9SmwojThaeT50me48ZRHt6B+pm7Xg32wIhAMSZR4uQMvkBrOynJLEFLOUnmtK7VTaFzerhty0BPEw1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184917},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"6917b4b8d784e03e32c6fc072e2186aabd0e1771","scripts":{"dev":"vite --open","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier . --write","preview":"vite preview","build:lib":"npm run build","build:demo":"vite build","format-check":"prettier . --check","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"odoniyor","email":"doniyorgit@gmail.com"},"repository":{"url":"git+https://github.com/danyalready/2d-physics-engine.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, flexible 2D physics engine with ECS architecture, built with TypeScript","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","vite":"^5.0.0","ts-jest":"^29.1.1","prettier":"^3.1.1","babel-jest":"^29.7.0","typescript":"^5.2.2","@types/jest":"^29.5.10","@babel/preset-env":"^7.23.5","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-physics-engine_1.3.0_1765196521278_0.9058462564695571","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"2d-physics-engine","version":"1.4.0","keywords":["physics","2d","physics-engine","game-engine","ecs","entity-component-system","collision-detection","rigidbody","typescript","canvas"],"author":"","license":"MIT","_id":"2d-physics-engine@1.4.0","maintainers":[{"name":"odoniyor","email":"doniyorgit@gmail.com"}],"homepage":"https://github.com/danyalready/2d-physics-engine#readme","bugs":{"url":"https://github.com/danyalready/2d-physics-engine/issues"},"dist":{"shasum":"3055d3c10939ad3ad73bff220261384019d64608","tarball":"https://registry.npmjs.org/2d-physics-engine/-/2d-physics-engine-1.4.0.tgz","fileCount":115,"integrity":"sha512-5yp+AzW+t94hW5ABsANBehSpSmOkin5GfvPR7Cd/M6fmSx7ZxeeogYyualk9umkoH3V+Ca8hXgqgTY1PH1wJdw==","signatures":[{"sig":"MEUCIFVenQUotRblXVgQkOxsuXHPdEQzFsUTUkBDWP3cNAm8AiEAkhErQ0WV64jQfWSE7UXMTkQEbjEYdzf+sL4rjbWMwKg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192538},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"fac308307488ddee53c47c1de11463f32f9582ab","scripts":{"dev":"vite --open","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier . --write","preview":"vite preview","build:lib":"npm run build","build:demo":"vite build","format-check":"prettier . --check","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"odoniyor","email":"doniyorgit@gmail.com"},"repository":{"url":"git+https://github.com/danyalready/2d-physics-engine.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, flexible 2D physics engine with ECS architecture, built with TypeScript","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","vite":"^5.0.0","ts-jest":"^29.1.1","prettier":"^3.1.1","babel-jest":"^29.7.0","typescript":"^5.2.2","@types/jest":"^29.5.10","@babel/preset-env":"^7.23.5","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-physics-engine_1.4.0_1765275515601_0.6090112796591001","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"2d-physics-engine","version":"1.4.2","keywords":["physics","2d","physics-engine","game-engine","ecs","entity-component-system","collision-detection","rigidbody","typescript","canvas"],"author":"","license":"MIT","_id":"2d-physics-engine@1.4.2","maintainers":[{"name":"odoniyor","email":"doniyorgit@gmail.com"}],"homepage":"https://github.com/danyalready/2d-physics-engine#readme","bugs":{"url":"https://github.com/danyalready/2d-physics-engine/issues"},"dist":{"shasum":"1f885e4148cd8e71cbe643be557a5c4f78a3a766","tarball":"https://registry.npmjs.org/2d-physics-engine/-/2d-physics-engine-1.4.2.tgz","fileCount":147,"integrity":"sha512-/foQX8nKh7kMjzr2E2hEuJkPzwabOjVvYJ+Wh0wdQXSZXLEhB5PgwFKDZD6Fd9V0Ax/jXx3Xk5LRYY7qKaJ1kA==","signatures":[{"sig":"MEQCIDGnqNTDNCCl2WnGfRhywK8LTyJnC3P01MleffNEdA80AiAHzF0ojeTeH++SD3P5diZPiZdonIyv933ZSVVNOBWbGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":223194},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"bca5d14029efa2db3c819121505fb7e9bbf3d266","scripts":{"dev":"vite --open","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier . --write","preview":"vite preview","build:lib":"npm run build","build:demo":"vite build","format-check":"prettier . --check","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"odoniyor","email":"doniyorgit@gmail.com"},"repository":{"url":"git+https://github.com/danyalready/2d-physics-engine.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, flexible 2D physics engine with ECS architecture, built with TypeScript","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","vite":"^5.0.0","ts-jest":"^29.1.1","prettier":"^3.1.1","babel-jest":"^29.7.0","typescript":"^5.2.2","@types/jest":"^29.5.10","@babel/preset-env":"^7.23.5","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-physics-engine_1.4.2_1765462512713_0.547552717403565","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"2d-physics-engine","version":"1.5.0","keywords":["physics","2d","physics-engine","game-engine","ecs","entity-component-system","collision-detection","rigidbody","typescript","canvas"],"author":"","license":"MIT","_id":"2d-physics-engine@1.5.0","maintainers":[{"name":"odoniyor","email":"doniyorgit@gmail.com"}],"homepage":"https://github.com/danyalready/2d-physics-engine#readme","bugs":{"url":"https://github.com/danyalready/2d-physics-engine/issues"},"dist":{"shasum":"7813daaa693ab882c4fb86d7a8c760ea959b1739","tarball":"https://registry.npmjs.org/2d-physics-engine/-/2d-physics-engine-1.5.0.tgz","fileCount":187,"integrity":"sha512-3Mr6U62++E3uQrann2H0ivvkTCzyrB94O5jfsNCzDC4NNAqRIMzp0/E2xC3MK2IsZcqMZzsP3KyrgWxvWLIo/A==","signatures":[{"sig":"MEUCIQCC5iMjP9Fgo+akLQXzatzWOHAKifIY9yPldgRY0RpbuQIgAkLOgd0bhCW3LcfdxGooy1KE8qQ8xO1zneiHRwD5deA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265600},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"3f3287c00fd9331b7304cc71966e2d26e61eabe4","scripts":{"dev":"vite --open","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier . --write","preview":"vite preview","build:lib":"npm run build","build:demo":"vite build","format-check":"prettier . --check","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"odoniyor","email":"doniyorgit@gmail.com"},"repository":{"url":"git+https://github.com/danyalready/2d-physics-engine.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, flexible 2D physics engine with ECS architecture, built with TypeScript","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","vite":"^5.0.0","ts-jest":"^29.1.1","prettier":"^3.1.1","babel-jest":"^29.7.0","typescript":"^5.2.2","@types/jest":"^29.5.10","@babel/preset-env":"^7.23.5","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-physics-engine_1.5.0_1780467674174_0.4594517301902843","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"2d-physics-engine","version":"1.5.1","keywords":["physics","2d","physics-engine","game-engine","ecs","entity-component-system","collision-detection","rigidbody","typescript","canvas"],"author":"","license":"MIT","_id":"2d-physics-engine@1.5.1","maintainers":[{"name":"odoniyor","email":"doniyorgit@gmail.com"}],"homepage":"https://github.com/danyalready/2d-physics-engine#readme","bugs":{"url":"https://github.com/danyalready/2d-physics-engine/issues"},"dist":{"shasum":"5e779f2fbc4e1c491f3bd8ee187531ed9e871c36","tarball":"https://registry.npmjs.org/2d-physics-engine/-/2d-physics-engine-1.5.1.tgz","fileCount":191,"integrity":"sha512-S1kCBxk2gOA0G7fI7nWEeZ1PagZxiVjMa0IoKZNdV+lUa1nJXFTZmMUGtkFv6IQnb/dw4jn4ynstxdxV/f9omg==","signatures":[{"sig":"MEYCIQCU5eYmyxlmpOtfgoxLGzWIgXdXrdslCT5bwsElZBWatgIhAPBFigQ9w5TfBEdsvcu8gi8AlxNFeBbfgeaWjFwUh30Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265416},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"e3be02b6c53b93f325dfab548b69098290cdb505","scripts":{"dev":"vite --open","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier . --write","preview":"vite preview","build:lib":"npm run build","build:demo":"vite build","format-check":"prettier . --check","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"odoniyor","email":"doniyorgit@gmail.com"},"repository":{"url":"git+https://github.com/danyalready/2d-physics-engine.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, flexible 2D physics engine with ECS architecture, built with TypeScript","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","vite":"^5.0.0","ts-jest":"^29.1.1","prettier":"^3.1.1","babel-jest":"^29.7.0","typescript":"^5.2.2","@types/jest":"^29.5.10","@babel/preset-env":"^7.23.5","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-physics-engine_1.5.1_1780468166750_0.4517917918277905","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"2d-physics-engine","version":"1.5.2","keywords":["physics","2d","physics-engine","game-engine","ecs","entity-component-system","collision-detection","rigidbody","typescript","canvas"],"author":"","license":"MIT","_id":"2d-physics-engine@1.5.2","maintainers":[{"name":"odoniyor","email":"doniyorgit@gmail.com"}],"homepage":"https://github.com/danyalready/2d-physics-engine#readme","bugs":{"url":"https://github.com/danyalready/2d-physics-engine/issues"},"dist":{"shasum":"4c0de88e9a7041101c0e8c6c8c14a304dff95640","tarball":"https://registry.npmjs.org/2d-physics-engine/-/2d-physics-engine-1.5.2.tgz","fileCount":155,"integrity":"sha512-Z76m9x26zr/y6CTMRhuPDOX5HRqWjxVuZUhQZGjhPyZFqdObMa+1XMvHvn6vWj2/uV7SZ8hbQLRDazUXOz7jXg==","signatures":[{"sig":"MEQCIGUlhpH6FIQPPFg3BKvbPS87jaIAeWmUlY4ZRwPg5wYMAiARmj9k7RPyJnkQkp3E+ojSWGdTpb7yaJWdRQwq941I0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":228826},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"3615684f0912b0a55292d28385e27e13d9eb9089","scripts":{"dev":"vite --open","test":"jest","build":"node scripts/clean-dist.mjs && tsc -p tsconfig.build.json","format":"prettier . --write","preview":"vite preview","build:lib":"npm run build","build:demo":"vite build","format-check":"prettier . --check","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"odoniyor","email":"doniyorgit@gmail.com"},"repository":{"url":"git+https://github.com/danyalready/2d-physics-engine.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, flexible 2D physics engine with ECS architecture, built with TypeScript","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","vite":"^5.0.0","ts-jest":"^29.1.1","prettier":"^3.1.1","babel-jest":"^29.7.0","typescript":"^5.2.2","@types/jest":"^29.5.10","@babel/preset-env":"^7.23.5","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-physics-engine_1.5.2_1780469646079_0.884579550783579","host":"s3://npm-registry-packages-npm-production"}},"1.5.4":{"name":"2d-physics-engine","version":"1.5.4","keywords":["physics","2d","physics-engine","game-engine","ecs","entity-component-system","collision-detection","rigidbody","typescript","canvas"],"author":"","license":"MIT","_id":"2d-physics-engine@1.5.4","maintainers":[{"name":"odoniyor","email":"doniyorgit@gmail.com"}],"homepage":"https://github.com/danyalready/2d-physics-engine#readme","bugs":{"url":"https://github.com/danyalready/2d-physics-engine/issues"},"dist":{"shasum":"c5fc7b68bf392f05dcd9c3c6eaff6cfe5099749a","tarball":"https://registry.npmjs.org/2d-physics-engine/-/2d-physics-engine-1.5.4.tgz","fileCount":155,"integrity":"sha512-AqMYbZ7cIVD4lxx5cSQ/g5ZsMnufweNLDreIfrcO0WAdbq7cyc7OCWfOsu0VI/zZ1sRHgpZ7ytQ8jwq9Zvw8sg==","signatures":[{"sig":"MEQCIHmbS/d0461T1U9q+JOYH8WM2tVw9ZRtdlfhMQPfxssHAiAoGa9P8g7JHfUcJ6UY1uMQLM/7ya4+D+UQmm/tWEuzvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":231675},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"e5732edfcae938a303d8e6245531937de3d98e2a","scripts":{"dev":"vite --open","test":"jest","build":"node scripts/clean-dist.mjs && tsc -p tsconfig.build.json","format":"prettier . --write","preview":"vite preview","build:lib":"npm run build","build:demo":"vite build","format-check":"prettier . --check","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"odoniyor","email":"doniyorgit@gmail.com"},"repository":{"url":"git+https://github.com/danyalready/2d-physics-engine.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, flexible 2D physics engine with ECS architecture, built with TypeScript","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","vite":"^8.0.16","ts-jest":"^29.1.1","prettier":"^3.1.1","babel-jest":"^29.7.0","typescript":"^5.2.2","@types/jest":"^29.5.14","@babel/preset-env":"^7.23.5","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-physics-engine_1.5.4_1780741576401_0.7902794948755929","host":"s3://npm-registry-packages-npm-production"}},"1.5.5":{"name":"2d-physics-engine","version":"1.5.5","keywords":["physics","2d","physics-engine","game-engine","ecs","entity-component-system","collision-detection","rigidbody","typescript","canvas"],"author":"","license":"MIT","_id":"2d-physics-engine@1.5.5","maintainers":[{"name":"odoniyor","email":"doniyorgit@gmail.com"}],"homepage":"https://github.com/danyalready/2d-physics-engine#readme","bugs":{"url":"https://github.com/danyalready/2d-physics-engine/issues"},"dist":{"shasum":"111470de9df108a3ca73fc65b416d478aa189e54","tarball":"https://registry.npmjs.org/2d-physics-engine/-/2d-physics-engine-1.5.5.tgz","fileCount":155,"integrity":"sha512-womlAL9FxPT51hxxHnKDbnI59sETKGOfinrjWcZriZigdkLFCvGtvco5w3jgOwgNbFy9IPtyAkqSOsNclc7TUQ==","signatures":[{"sig":"MEUCID7VAlxh8g5Nwji3dBRlXr/5dXTxJqh2kikUUl/M/ilxAiEAr43V4n8R8qxU7iMsqV1Zeco01iAbzz4QWe5CKKQJHW4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":232949},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"92ff435fbb0435b0083b972e2cf76d5aed5852be","scripts":{"dev":"vite --open","test":"jest","build":"node scripts/clean-dist.mjs && tsc -p tsconfig.build.json","format":"prettier . --write","preview":"vite preview","build:lib":"npm run build","build:demo":"vite build","format-check":"prettier . --check","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"odoniyor","email":"doniyorgit@gmail.com"},"repository":{"url":"git+https://github.com/danyalready/2d-physics-engine.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, flexible 2D physics engine with ECS architecture, built with TypeScript","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","vite":"^8.0.16","ts-jest":"^29.1.1","prettier":"^3.1.1","babel-jest":"^29.7.0","typescript":"^5.2.2","@types/jest":"^29.5.14","@babel/preset-env":"^7.23.5","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-physics-engine_1.5.5_1780742137572_0.8599898098524803","host":"s3://npm-registry-packages-npm-production"}},"1.5.6":{"name":"2d-physics-engine","version":"1.5.6","keywords":["physics","2d","physics-engine","game-engine","ecs","entity-component-system","collision-detection","rigidbody","typescript","canvas"],"author":"","license":"MIT","_id":"2d-physics-engine@1.5.6","maintainers":[{"name":"odoniyor","email":"doniyorgit@gmail.com"}],"homepage":"https://github.com/danyalready/2d-physics-engine#readme","bugs":{"url":"https://github.com/danyalready/2d-physics-engine/issues"},"dist":{"shasum":"95fe0ad09787e8874afa6a7c04f485a5fe0b4c93","tarball":"https://registry.npmjs.org/2d-physics-engine/-/2d-physics-engine-1.5.6.tgz","fileCount":155,"integrity":"sha512-ZfE+bUtWYkldUboSxBBlBWnhg9vq7FA4DjDyNFWzysVjZzKugl5IYCjNhSM1JgWUhDeBMrq/22MjoUkxqGrvYg==","signatures":[{"sig":"MEUCIQDTPM5BoaRoU4tL/b7gSVBQbIVVb3GJPwWR0+JCAtrmgwIgNea8L1wc8PQr6JLqbl9Go9gZ+broIoBw5a1n4x4CTaQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233870},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"c10288b91b8d29d5d9837a97401667d326620374","scripts":{"dev":"vite --open","test":"jest","build":"node scripts/clean-dist.mjs && tsc -p tsconfig.build.json","format":"prettier . --write","preview":"vite preview","build:lib":"npm run build","build:demo":"vite build","format-check":"prettier . --check","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"odoniyor","email":"doniyorgit@gmail.com"},"repository":{"url":"git+https://github.com/danyalready/2d-physics-engine.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, flexible 2D physics engine with ECS architecture, built with TypeScript","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","vite":"^8.0.16","ts-jest":"^29.1.1","prettier":"^3.1.1","babel-jest":"^29.7.0","typescript":"^5.2.2","@types/jest":"^29.5.14","@babel/preset-env":"^7.23.5","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-physics-engine_1.5.6_1780743319840_0.8538760991282559","host":"s3://npm-registry-packages-npm-production"}},"1.5.7":{"name":"2d-physics-engine","version":"1.5.7","keywords":["physics","2d","physics-engine","game-engine","ecs","entity-component-system","collision-detection","rigidbody","typescript","canvas"],"author":"","license":"MIT","_id":"2d-physics-engine@1.5.7","maintainers":[{"name":"odoniyor","email":"doniyorgit@gmail.com"}],"homepage":"https://github.com/danyalready/2d-physics-engine#readme","bugs":{"url":"https://github.com/danyalready/2d-physics-engine/issues"},"dist":{"shasum":"94559c428f2664fbaf7a2996c394e5c11acf40c7","tarball":"https://registry.npmjs.org/2d-physics-engine/-/2d-physics-engine-1.5.7.tgz","fileCount":155,"integrity":"sha512-bW8v11t+Lf5rhNUgF5P14WmZx1BbazzHZvxUP+BcqUi7V/br6TJjg0Wfvw3EQdTPc8ziG7RvJ2AVwmLvJFfiJQ==","signatures":[{"sig":"MEUCIDBincdSgJy+7D4K+Yrn9PtdWI1KaNg2GOgBkbznYv6bAiEAksvj/AchCU9hPOIuZRL2SWyClfqSyZPeVzccx6Bcmyc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233889},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"076b7155fb878a5d059a4b52113a98566e00565a","scripts":{"dev":"vite --open","test":"jest","build":"node scripts/clean-dist.mjs && tsc -p tsconfig.build.json","format":"prettier . --write","prepare":"npm run build","preview":"vite preview","build:lib":"npm run build","build:demo":"vite build","format-check":"prettier . --check","prepublishOnly":"npm test"},"_npmUser":{"name":"odoniyor","email":"doniyorgit@gmail.com"},"repository":{"url":"git+https://github.com/danyalready/2d-physics-engine.git","type":"git"},"_npmVersion":"11.5.1","description":"A lightweight, flexible 2D physics engine with ECS architecture, built with TypeScript","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","vite":"^8.0.16","ts-jest":"^29.1.1","prettier":"^3.1.1","babel-jest":"^29.7.0","typescript":"^5.2.2","@types/jest":"^29.5.14","@babel/preset-env":"^7.23.5","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-physics-engine_1.5.7_1780743973410_0.34528889279058306","host":"s3://npm-registry-packages-npm-production"}},"1.5.8":{"name":"2d-physics-engine","version":"1.5.8","description":"A lightweight, flexible 2D physics engine with ECS architecture, built with TypeScript","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"dev":"vite --open","build":"node scripts/clean-dist.mjs && tsc -p tsconfig.build.json","build:lib":"npm run build","build:demo":"vite build --outDir dist","preview":"vite preview","prepare":"npm run build","prepublishOnly":"npm test","format":"prettier . --write","format-check":"prettier . --check","test":"jest"},"keywords":["physics","2d","physics-engine","game-engine","ecs","entity-component-system","collision-detection","rigidbody","typescript","canvas"],"author":"","license":"MIT","repository":{"type":"git","url":"git+https://github.com/danyalready/2d-physics-engine.git"},"bugs":{"url":"https://github.com/danyalready/2d-physics-engine/issues"},"homepage":"https://github.com/danyalready/2d-physics-engine#readme","devDependencies":{"@babel/preset-env":"^7.23.5","@types/jest":"^29.5.14","babel-jest":"^29.7.0","jest":"^29.7.0","jest-environment-jsdom":"^29.7.0","prettier":"^3.1.1","ts-jest":"^29.1.1","typescript":"^5.2.2","vite":"^8.0.16"},"_id":"2d-physics-engine@1.5.8","gitHead":"c08641b1abebbd338e5bf7e602672182fd880604","_nodeVersion":"23.9.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-/IcJ9e0lnMHrn36IkRyhwy1oBtL/sVJSysCFpwNLNIElsqiKiRget02r1RuvjuApe8MRwF6zDVrSfZefsgAjVQ==","shasum":"5929b5863c8db48d292ab606f177e402a29ed831","tarball":"https://registry.npmjs.org/2d-physics-engine/-/2d-physics-engine-1.5.8.tgz","fileCount":155,"unpackedSize":218784,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCmZmEFJmRLu69/xsIq19WEqkS+TDHzseEUqQTzxLL4egIhAJOKTjkzhryRHInQaTBrEV+Rph7UGNRBPuGhJ1zRvlWg"}]},"_npmUser":{"name":"odoniyor","email":"doniyorgit@gmail.com"},"directories":{},"maintainers":[{"name":"odoniyor","email":"doniyorgit@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/2d-physics-engine_1.5.8_1780760073939_0.9182349697612111"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-29T14:18:07.609Z","modified":"2026-06-06T15:34:34.175Z","0.1.3":"2017-12-17T17:12:51.326Z","1.0.0":"2025-11-29T14:18:07.811Z","1.1.0":"2025-11-30T13:24:28.505Z","1.2.0":"2025-12-07T10:27:40.217Z","1.3.0":"2025-12-08T12:22:01.428Z","1.4.0":"2025-12-09T10:18:35.760Z","1.4.2":"2025-12-11T14:15:12.846Z","1.5.0":"2026-06-03T06:21:14.324Z","1.5.1":"2026-06-03T06:29:26.887Z","1.5.2":"2026-06-03T06:54:06.238Z","1.5.4":"2026-06-06T10:26:16.539Z","1.5.5":"2026-06-06T10:35:37.713Z","1.5.6":"2026-06-06T10:55:20.036Z","1.5.7":"2026-06-06T11:06:13.527Z","1.5.8":"2026-06-06T15:34:34.072Z"},"bugs":{"url":"https://github.com/danyalready/2d-physics-engine/issues"},"license":"MIT","homepage":"https://github.com/danyalready/2d-physics-engine#readme","keywords":["physics","2d","physics-engine","game-engine","ecs","entity-component-system","collision-detection","rigidbody","typescript","canvas"],"repository":{"type":"git","url":"git+https://github.com/danyalready/2d-physics-engine.git"},"description":"A lightweight, flexible 2D physics engine with ECS architecture, built with TypeScript","maintainers":[{"name":"odoniyor","email":"doniyorgit@gmail.com"}],"readme":"# 2D Physics Engine\n\nA lightweight, flexible 2D physics engine built with TypeScript, featuring an Entity-Component-System (ECS) architecture. Perfect for building 2D games, simulations, and interactive applications.\n\n## Features\n\n- 🎮 **ECS Architecture** - Clean separation of concerns with Entity-Component-System pattern\n- 🚀 **Rigidbody Physics** - Mass, velocity, forces, friction, and restitution\n- 💥 **Collision Detection** - Circle-to-circle collision detection with penetration resolution\n- 🎨 **Rendering System** - Built-in canvas-based rendering with custom drawers\n- 🎯 **Input Management** - Keyboard and mouse input handling\n- 📐 **Math Utilities** - Vector2, AABB, and QuadTree for spatial operations\n- 🔧 **TypeScript** - Fully typed for better development experience\n- ⚡ **Fixed Timestep** - Stable physics simulation with configurable timestep\n\n> **⚠️ Note:** This project is **not production-ready**. It is still under active development and primarily built for **educational purposes**, experimentation, and learning how 2D physics engines and ECS architectures work. Use it as a learning tool or prototype, but it may contain bugs, incomplete features, and performance limitations.\n\n## Installation\n\n```bash\nnpm install 2d-physics-engine\n# or\nyarn add 2d-physics-engine\n# or\npnpm add 2d-physics-engine\n```\n\n## Quick Start\n\n```typescript\nimport {\n    Iterator,\n    Scene,\n    Entity,\n    Transform,\n    Rigidbody,\n    CircleCollider,\n    Vector2,\n    InputManager,\n} from '2d-physics-engine';\n\n// Setup canvas\nconst canvas = document.getElementById('canvas') as HTMLCanvasElement;\nconst ctx = canvas.getContext('2d')!;\nconst inputManager = new InputManager();\n\n// Create engine\nconst engine = new Iterator(inputManager, canvas, ctx);\n\n// Create scene\nconst scene = new Scene();\n\n// Create an entity with physics\nconst ball = new Entity('Ball');\nball.addComponent(new Transform(new Vector2(100, 100)));\nball.addComponent(new Rigidbody({ mass: 1, restitution: 0.8, friction: 0.1 }));\nball.addComponent(new CircleCollider(25));\n\nscene.addEntity(ball);\n\n// Start the engine\nengine.setScene(scene);\nengine.start();\n```\n\n## Core Concepts\n\n### Entity-Component-System\n\n- **Entity**: Container for components (e.g., a ball, player, wall)\n- **Component**: Data container (Transform, Rigidbody, Collider)\n- **System**: Logic that operates on entities with specific components\n\n### Components\n\n#### Transform\n\nHandles position, rotation, and scale of entities.\n\n```typescript\nconst transform = new Transform(\n    new Vector2(100, 100), // position\n    0, // rotation (radians)\n    new Vector2(1, 1), // scale\n);\n```\n\n#### Rigidbody\n\nAdds physics properties to an entity.\n\n```typescript\nconst rigidbody = new Rigidbody({\n    mass: 1, // mass in kg\n    restitution: 0.8, // bounciness (0-1)\n    friction: 0.1, // friction coefficient\n});\n```\n\n#### Colliders\n\nDefine collision shapes for entities.\n\n```typescript\nconst collider = new CircleCollider(25); // radius\n```\n\n### Math Utilities\n\n#### Vector2\n\n2D vector operations for position, velocity, forces, etc.\n\n```typescript\nimport { Vector2 } from '2d-physics-engine';\n\nconst v1 = new Vector2(10, 20);\nconst v2 = new Vector2(5, 5);\n\n// Operations (all return new vectors, immutable)\nconst sum = v1.add(v2);\nconst diff = v1.subtract(v2);\nconst scaled = v1.scale(2);\nconst normalized = v1.getNormal();\nconst magnitude = v1.getMagnitude();\n```\n\n#### AABB\n\nAxis-Aligned Bounding Box for spatial queries.\n\n```typescript\nimport { AABB, Vector2 } from '2d-physics-engine';\n\nconst box = new AABB(\n    new Vector2(0, 0), // min corner\n    new Vector2(100, 100), // max corner\n);\n\n// Or use factory methods\nconst box2 = AABB.fromCenter(new Vector2(50, 50), new Vector2(25, 25));\n```\n\n## API Reference\n\n### Core Classes\n\n- `Entity` - Container for components\n- `Scene` - Manages collections of entities\n- `Iterator` - Main game loop and system manager\n- `InputManager` - Handles keyboard and mouse input\n\n### Components\n\n- `Transform` - Position, rotation, scale\n- `Rigidbody` - Physics properties\n- `Collider` (abstract) - Collision shape base class\n- `CircleCollider` - Circular collision shape\n- `Controller` - WASD/Arrow key movement controller\n- `Drawer` (abstract) - Rendering base class\n- `CircleDrawer` - Renders circles\n\n### Systems\n\n- `Physics` - Handles physics simulation\n- `Rendering` - Renders entities with drawer components\n- `CollisionDetector` - Detects collisions between entities\n- `CollisionResolver` - Resolves collisions\n\n### Math\n\n- `Vector2` - 2D vector class\n- `AABB` - Axis-Aligned Bounding Box\n- `QuadTree` - Spatial partitioning structure\n\n## Examples\n\n### Adding Forces\n\n```typescript\nconst rigidbody = entity.getComponent(Rigidbody);\nif (rigidbody) {\n    rigidbody.addForce(new Vector2(100, 0)); // Apply force to the right\n}\n```\n\n### Custom Drawer\n\n```typescript\nimport { Drawer, Transform } from '2d-physics-engine';\n\nclass MyDrawer extends Drawer {\n    draw(ctx: CanvasRenderingContext2D, transform: Transform): void {\n        // Your custom rendering code\n    }\n}\n```\n\n### Custom Collider\n\n```typescript\nimport { Collider, AABB, Transform } from '2d-physics-engine';\n\nclass BoxCollider extends Collider {\n    static readonly COLLIDER_ID = Symbol('BoxCollider');\n    readonly colliderId = BoxCollider.COLLIDER_ID;\n\n    constructor(\n        private width: number,\n        private height: number,\n    ) {\n        super();\n    }\n\n    getAABB(transform: Transform): AABB {\n        // Return AABB based on transform\n    }\n\n    calculateInertia(mass: number): number {\n        // Calculate moment of inertia\n    }\n}\n```\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Run development server\nnpm run dev\n\n# Build library\nnpm run build:lib\n\n# Run tests\nnpm test\n\n# Format code\nnpm run format\n```\n\n## License\n\nMIT\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## Resources\n\n- [Dot Product](https://www.mathsisfun.com/algebra/vectors-dot-product.html)\n- [Cross Product](https://www.mathsisfun.com/algebra/vectors-cross-product.html)\n- [2D Collisions](https://www.vobarian.com/collisions/2dcollisions2.pdf)\n- [Coefficient of Restitution](https://en.wikipedia.org/wiki/Coefficient_of_restitution)\n","readmeFilename":"README.md"}