{"_id":"0g","_rev":"25-cf9997f83278fb22b9017dccc6763e77","time":{"1.0.2":"2018-02-13T00:26:28.688Z","created":"2020-12-24T02:29:56.317Z","0.0.2":"2020-12-24T02:29:56.591Z","modified":"2024-05-20T15:52:25.775Z","0.0.3":"2021-01-02T20:26:22.672Z","0.0.4":"2021-01-05T04:41:02.614Z","0.0.5":"2021-03-01T00:28:54.426Z","0.0.6":"2021-03-01T00:34:45.674Z","0.0.7":"2022-06-02T21:10:29.485Z","0.0.8":"2022-06-03T19:48:02.021Z","0.0.9":"2022-06-04T21:33:39.810Z","0.1.0":"2024-04-29T01:37:24.216Z","0.1.1":"2024-04-29T02:07:56.829Z","0.1.2":"2024-05-01T01:55:08.535Z","0.2.0":"2024-05-02T14:36:38.464Z","0.2.1":"2024-05-09T17:10:06.212Z","0.2.2":"2024-05-11T19:00:33.743Z","0.3.0":"2024-05-13T20:26:23.385Z","0.3.1":"2024-05-14T20:50:07.896Z","0.3.2":"2024-05-15T12:05:17.693Z","0.3.3":"2024-05-16T18:30:47.626Z","0.3.4":"2024-05-17T01:09:33.176Z","0.4.0":"2024-05-17T14:55:45.895Z","0.4.1":"2024-05-17T16:24:03.747Z","0.4.2":"2024-05-20T15:52:25.578Z"},"name":"0g","dist-tags":{"latest":"0.4.2"},"versions":{"0.0.2":{"name":"0g","version":"0.0.2","description":"## Entities, Systems, and Stores","main":"./dist/index.js","module":"./dist-esm/index.js","typings":"./dist-esm/index.d.ts","scripts":{"test":"jest","test:watch":"jest --watch --bail","build:cjs":"tsc","build:esm":"tsc -m es6 --outDir dist-esm","build":"concurrently \"yarn build:cjs\" \"yarn build:esm\"","dev:cjs":"tsc --watch","dev:esm":"tsc -m es6 --outDir dist-esm --watch","dev":"concurrently \"yarn dev:cjs\" \"yarn dev:esm\"","prepublishOnly":"yarn build","release":"npm publish --access public","storybook":"start-storybook -p 6006","storybook:build":"build-storybook -o docs/storybook","typedoc":"typedoc --options typedoc.json"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","peerDependencies":{},"devDependencies":{"@babel/core":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-react":"^7.10.4","@babel/preset-typescript":"^7.10.4","@testing-library/jest-dom":"^5.11.1","@testing-library/react":"^10.4.7","@types/jest":"^26.0.5","@types/node":"^14.0.23","@types/ramda":"^0.27.32","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@types/shortid":"0.0.29","@typescript-eslint/eslint-plugin":"^4.8.1","@typescript-eslint/parser":"^4.8.1","babel-loader":"^8.1.0","concurrently":"^5.3.0","eslint":"^7.13.0","eslint-plugin-react":"^7.21.5","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","prettier":"^2.0.5","typedoc":"0.17.0-3","typedoc-plugin-internal-external":"^2.2.0","typescript":"^4.1.2"},"dependencies":{"shortid":"^2.2.16"},"_id":"0g@0.0.2","dist":{"shasum":"05809894d57329dcabfd3400c39c8c347121508f","integrity":"sha512-qHeDAVa41KUWjRPvGybMx1NcpEJpL0IHdNaFirOqKwI5usYIT6l8eLt2mgeEFgxR+anHGn0AorzvSP9MJIaeoQ==","tarball":"https://registry.npmjs.org/0g/-/0g-0.0.2.tgz","fileCount":285,"unpackedSize":344657,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4/0kCRA9TVsSAnZWagAAaCQP/AuEpTmME+Qg4kG0QxWZ\na5URe5ICohmv/Cp3AtBLnhCHfCEBaPepVnqN3NgkatMkxay15GKaTRifDfUe\nT36XItwsWwZaTKg7z8OeWUnXeA5mVN2zFQspNwzABLGr04Vq0RN0BipPOXEo\nQItsf5tk480NxoqY2n9kbEwNZcmVLwV10kBznbn4Rn4UNEzTl9wkpgiXQS07\nHmgn3sFIfC/7X99Lwkw0AH/v+bld4ocg6s98edncZyi6UOuezHgW97VzsxP1\nYH2McCYPNOxR1//8/20YHJ0O5cT0TMOby1ZSyiyBhhnFgA2FLr0TU7y1Wez2\nVvSU3+yYtCBTotv1MPMjswKU9+sBNbbeJi6Of/mi6nzeR6Py8CgbFhSsPkBu\ndsBwopFSyWLoqCn15L8zu5NasDmLD9Hm8TvLt78Eo6rozgkT4gMECbQj9byM\n9U6hX4B8AkYPuc10c3YnfG2IYyyAhgyjsG2Vopm/CmFSr1/Q3tNWV5B1u/wj\nQxM7mw7Es6WHEDjgbvXKtQ9ggKx+ZJRxJB7rAwwsFzjTxOa/2sc/UwoFqy3A\nMGS/9kaNQvnPCKVzKezO2cR2i9cNUvU/SkSNfFGS5HPImlGjvOBOqvo/ylJE\ny3tzFBd97wtmK5OLSWvX5QvXru4V4R8B+q/OYxituAD/vs3udBSzTY3+TvJO\nYkIn\r\n=qR6q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBMvxvnYZwRmnBXqMhUPGmI776KcIP5T1MWaSabCwJZnAiBLwnqL7M4v6MMktWE99BVp2OkMZqKuq4qZX1hquJFKsA=="}]},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.0.2_1608776996318_0.7675777067092122"},"_hasShrinkwrap":false,"deprecated":"try miniplex instead"},"0.0.3":{"name":"0g","version":"0.0.3","description":"The weightless game framework for TypeScript.","main":"./dist/index.js","module":"./dist-esm/index.js","typings":"./dist-esm/index.d.ts","scripts":{"test":"jest","test:watch":"jest --watch --bail","build:cjs":"tsc","build:esm":"tsc -m es6 --outDir dist-esm","build":"concurrently \"yarn build:cjs\" \"yarn build:esm\"","dev:cjs":"tsc --watch","dev:esm":"tsc -m es6 --outDir dist-esm --watch","dev":"concurrently \"yarn dev:cjs\" \"yarn dev:esm\"","prepublishOnly":"yarn build","release":"npm publish --access public --registry https://registry.npmjs.org","storybook":"start-storybook -p 6006","storybook:build":"build-storybook -o docs/storybook","typedoc":"typedoc --options typedoc.json"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","peerDependencies":{},"devDependencies":{"@babel/core":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-react":"^7.10.4","@babel/preset-typescript":"^7.10.4","@testing-library/jest-dom":"^5.11.1","@testing-library/react":"^10.4.7","@types/jest":"^26.0.5","@types/node":"^14.0.23","@types/ramda":"^0.27.32","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@types/shortid":"0.0.29","@typescript-eslint/eslint-plugin":"^4.8.1","@typescript-eslint/parser":"^4.8.1","babel-loader":"^8.1.0","concurrently":"^5.3.0","eslint":"^7.13.0","eslint-plugin-react":"^7.21.5","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","prettier":"^2.0.5","typedoc":"0.17.0-3","typedoc-plugin-internal-external":"^2.2.0","typescript":"^4.1.2"},"dependencies":{"shortid":"^2.2.16"},"_id":"0g@0.0.3","_nodeVersion":"14.10.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-yDxZKZComHoThQ7sZqeAlleHPtsHP9J00ybXZC4qqybEWRbGWkFwM4YOCs1oPvaVxxoV/fNYCLbgE2t5ic1NWA==","shasum":"47593d52fcc5abf4a01dab0746bbe5e12a626ea1","tarball":"https://registry.npmjs.org/0g/-/0g-0.0.3.tgz","fileCount":260,"unpackedSize":347233,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8NbvCRA9TVsSAnZWagAAhQ8P/2/2wI0yB6NAeygLyzBw\nN0lTy+vR2u9zfkBphs25MeDGP9Knl+ik9XrVWgoOgv3qRz/T85YUeteW8WWe\nIluJj2hui7VhCN6lZCMHwFz8dr1Rus8qC550TdNisam8bMnAcYF2IeI8WB+k\nfNFAd/A6y8QTu9v3WyCGQ4+Yvav5VGSHEm5fcyRcAwU+NzVUADwJSR1lY/s5\nij7Y/FbcKCGu+gkOaaGoe2OJJlGOfbU+MS4GTr6MZoiZbPWiGBB3SM+jFB4p\nw7656q2hrqbaS7sdJlCviPgBJBqpw3oB3zdsbe+WTQ+2r519m3jjLlahuvlO\np4VqrBVJlKk68JQLM8xy1TPXgHudsmyaTHCjQe3PnE7xS+DW8DquaSkcnoAn\nzWZGdnMmmUTx+eYRaEMNtCgCFeGp+DMPwBQ6kr93WQmXC4O0VtQhhxw4q25D\nWVad6xUM6bLb1WPSTG9/gkAGJihGY7gfXftx5dUbGp6PQ7jKn6YyjPmlpUT7\nI25G2qe2CVONkIHyOT2AnTE8DH7fHIk/zf89aMfZ7Hvy039F1xtmhhc1I6G0\nG7s4E0NwA3J5XeGpB0Xs136ydlTIrKZyzR05itXfFlu0wNoEEDhnxdlA40e5\nk3/eGEwPsXvgXsrfk8hXKgX1FSqwRs36wtxUO57bxg1UETXvRkilyx78AD4o\na7gq\r\n=yL48\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICDeBfsrAJJnoeP/rJh24e4iqH39psJqB0TPgFg2wYsFAiApPHw8v67txQZhDXHkkHsWs6Op0Tu0DyN9jUmjvjP65Q=="}]},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.0.3_1609619182500_0.959735566895797"},"_hasShrinkwrap":false,"deprecated":"try miniplex instead"},"0.0.4":{"name":"0g","version":"0.0.4","description":"The weightless game framework for TypeScript.","main":"./dist/index.js","module":"./dist-esm/index.js","typings":"./dist-esm/index.d.ts","scripts":{"test":"jest","test:watch":"jest --watch --bail","build:cjs":"tsc","build:esm":"tsc -m es6 --outDir dist-esm","build":"concurrently \"yarn build:cjs\" \"yarn build:esm\"","dev:cjs":"tsc --watch","dev:esm":"tsc -m es6 --outDir dist-esm --watch","dev":"concurrently \"yarn dev:cjs\" \"yarn dev:esm\"","prepublishOnly":"yarn build","release":"npm publish --access public --registry https://registry.npmjs.org","storybook":"start-storybook -p 6006","storybook:build":"build-storybook -o docs/storybook","typedoc":"typedoc --options typedoc.json"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","peerDependencies":{},"devDependencies":{"@babel/core":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-react":"^7.10.4","@babel/preset-typescript":"^7.10.4","@testing-library/jest-dom":"^5.11.1","@testing-library/react":"^10.4.7","@types/jest":"^26.0.5","@types/node":"^14.0.23","@types/ramda":"^0.27.32","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@types/shortid":"0.0.29","@typescript-eslint/eslint-plugin":"^4.8.1","@typescript-eslint/parser":"^4.8.1","babel-loader":"^8.1.0","concurrently":"^5.3.0","eslint":"^7.13.0","eslint-plugin-react":"^7.21.5","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","prettier":"^2.0.5","typedoc":"0.17.0-3","typedoc-plugin-internal-external":"^2.2.0","typescript":"^4.1.2"},"dependencies":{"shortid":"^2.2.16"},"_id":"0g@0.0.4","_nodeVersion":"14.10.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-xHkp/NAPmFbotOOUT69hqztZTmndTKvB5tdH0NtRIkcan5tun+T8gvIoamu9Mo77EGk1BUZJK9vkf+rWUG1DyA==","shasum":"bdd7ffc594f0331ada854d712c902cab04817c27","tarball":"https://registry.npmjs.org/0g/-/0g-0.0.4.tgz","fileCount":314,"unpackedSize":397462,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8+3eCRA9TVsSAnZWagAAty8QAIPDCbtmptbfF5nwsKCh\n1OlKlAj5f2LUsGAM1F3WMtHsKWGgQiQXUzXuJNOshi0Ks4IktBUrUfUmyf4L\nqY2xj/SirG2cq7Gtdb2q4Vc0cHRLrdUUiuH8DAVCzkrSwZZK8PHFkKSwcRUe\nGhTutG0qYkTYRVK/EK3dKOBkM1Mq2ia2FW+0PFvX53bU5QfumzoXH5yAqmsG\n9xfX+NLGbqVp9zlRs9BmBcsYEQN9Psvo/pSfnOkVphOYLpa/mUuSJ1XH4Pyh\nef1R4DZ7Uwy47rvP5BXkVqOt5F7LYwV26OMgzMjVNQKiSruvuireF9s88GiN\nIFOb6s5HfRo9J2HHC2tOWjTWGFwwDiUh51MBdCRqCo/7A/46Va3ODA/ILDuc\ng1m95Z38yE3JthDm0Y6kBdmiPJyx9PiO+CTbaU6U6yf2PSbk1VmQJVJlcsFc\nQDZmFBxkWpB5mx/H2KQIKQXgvVvTgqD4G5ClUXoS11v4KiEiCb/IajFtKLL3\nCKpRGt6yry37zx7I51BL9bxOEOuvDkDFF8AxUzk6UcSsV5NeuIMKJ+EX7tIt\nCqw0WQ+MEq6rymnXuT1WzckRGKkutZ5P1rnJEJw/mE+1mSILE/Pe3K0tT0sI\nn+z46P8JQKbu8ELQSjtMKDUPHMwUmrD61XlOS7ROuKL/tFNKMAzYRex8KZ8B\nwNyD\r\n=o/oK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBgZAAjB2Y7JtXgkk3mz2p2271OxPYbFzGFof+/FJtPgAiBEOPK3bDS6o2e69dG+VTvIH14XkiAOI/soQOH6rkzHjQ=="}]},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.0.4_1609821662478_0.21631626563148165"},"_hasShrinkwrap":false,"deprecated":"try miniplex instead"},"0.0.5":{"name":"0g","version":"0.0.5","description":"The weightless game framework for TypeScript.","main":"./dist/index.js","module":"./dist-esm/index.js","typings":"./dist-esm/index.d.ts","scripts":{"test":"jest","test:watch":"jest --watch --bail","build:cjs":"tsc","build:esm":"tsc -m es6 --outDir dist-esm","build":"concurrently \"yarn build:cjs\" \"yarn build:esm\"","dev:cjs":"tsc --watch","dev:esm":"tsc -m es6 --outDir dist-esm --watch","dev":"concurrently \"yarn dev:cjs\" \"yarn dev:esm\"","prepublishOnly":"yarn build","release":"npm publish --access public --registry https://registry.npmjs.org","storybook":"start-storybook -p 6006","storybook:build":"build-storybook -o docs/storybook","typedoc":"typedoc --options typedoc.json"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","peerDependencies":{},"devDependencies":{"@babel/core":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-react":"^7.10.4","@babel/preset-typescript":"^7.10.4","@testing-library/jest-dom":"^5.11.1","@testing-library/react":"^10.4.7","@types/jest":"^26.0.5","@types/node":"^14.0.23","@types/ramda":"^0.27.32","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@types/shortid":"0.0.29","@typescript-eslint/eslint-plugin":"^4.8.1","@typescript-eslint/parser":"^4.8.1","babel-loader":"^8.1.0","concurrently":"^5.3.0","eslint":"^7.13.0","eslint-plugin-react":"^7.21.5","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","prettier":"^2.0.5","typedoc":"0.17.0-3","typedoc-plugin-internal-external":"^2.2.0","typescript":"^4.1.2"},"dependencies":{"mnemonist":"^0.38.1","shortid":"^2.2.16"},"_id":"0g@0.0.5","_nodeVersion":"14.10.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6y+KzORX6lp8J3NTPNhLTtpFFypyP0fkDBj8iOKaqaHK/eyj4kPGSdyZNOmazLzQtM8yi+QlPMl3Wlrk4FNINA==","shasum":"9b1a19be53369dcdc39ef7a07d3b2261367cea73","tarball":"https://registry.npmjs.org/0g/-/0g-0.0.5.tgz","fileCount":284,"unpackedSize":439322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPDVGCRA9TVsSAnZWagAAo9wP/2o30ZMr7OrQzyfKGgaH\nxsOVTg4bdP7aqd5FAgHspUEf3gQkGTmNDhRLSsa0SeO3tJviKAUHJyab9HP5\npp3hVh7WpMugWKsarjAYPz/Y/SazQ1N9BCxLBB1I7ugnShB9iyO4Ww0gdEEa\nYNkBjT6azhU0Sn4VPJkzSh2hx1g5Fpb0Mu14RILUSH7/LqFrgdF5TSf9wt00\nUxRPHpfRHPKjqDstzSeiaFoLd63TGcXvDT1El9ZRoz0xbymsDb2rJScG0SxG\nLOfKBDpcrwYoBKDpDT1lW2pOFbnbTOSc9LlBgATYlPMTj7nrpyKEiknN9X0k\nkNJAD9R7NcAPyS+zIb4kSuWI1f6ECE5QYGcJMRDJ8XKEHltWeGzJ0OOC3pCY\nhlJ2/o3MWlVw9aPZheXs1rJvZZD12Kd9mcO9H6xOBMEwTjDTaPHJhwBc7w2g\n2IBLVOfFCRd22VCc6XrVfM3kP2JKlgvSKWFPRCA8vdTVaVLT60FeqC5h/PjK\neJNEYJuOl/EdFvQ7NAbhP0lPFr+93CKdRb/24Elya3VevlNZzxreZ297o22O\nIza+5VibaleppgbSxdp246CzKWdYUtai6WaMXrBd7+WMPxN7nzWQJiRg44Uj\n85avYlNkB+MiRxlwBuSNqbLfItZ2o7VjqL7o7YxfQnWeHLTeccoyFsDIAkcP\ngIHo\r\n=9EtO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID3bE3MhA2b09vfMpHr332A98hgmvgrCGbsLO6+mPy50AiA+vYV95Yb2zuOSe9CO3InJjBP2mYyy8yfA0ptsfgQ7eA=="}]},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.0.5_1614558534281_0.2704333340563154"},"_hasShrinkwrap":false,"deprecated":"try miniplex instead"},"0.0.6":{"name":"0g","version":"0.0.6","description":"The weightless game framework for TypeScript.","main":"./dist/index.js","module":"./dist-esm/index.js","typings":"./dist-esm/index.d.ts","scripts":{"test":"jest","test:watch":"jest --watch --bail","build:cjs":"tsc","build:esm":"tsc -m es6 --outDir dist-esm","build":"concurrently \"yarn build:cjs\" \"yarn build:esm\"","dev:cjs":"tsc --watch","dev:esm":"tsc -m es6 --outDir dist-esm --watch","dev":"concurrently \"yarn dev:cjs\" \"yarn dev:esm\"","prepublishOnly":"yarn build","release":"npm publish --access public --registry https://registry.npmjs.org","storybook":"start-storybook -p 6006","storybook:build":"build-storybook -o docs/storybook","typedoc":"typedoc --options typedoc.json"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","peerDependencies":{},"devDependencies":{"@babel/core":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-react":"^7.10.4","@babel/preset-typescript":"^7.10.4","@testing-library/jest-dom":"^5.11.1","@testing-library/react":"^10.4.7","@types/jest":"^26.0.5","@types/node":"^14.0.23","@types/ramda":"^0.27.32","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@types/shortid":"0.0.29","@typescript-eslint/eslint-plugin":"^4.8.1","@typescript-eslint/parser":"^4.8.1","babel-loader":"^8.1.0","concurrently":"^5.3.0","eslint":"^7.13.0","eslint-plugin-react":"^7.21.5","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","prettier":"^2.0.5","typedoc":"0.17.0-3","typedoc-plugin-internal-external":"^2.2.0","typescript":"^4.1.2"},"dependencies":{"mnemonist":"^0.38.1","shortid":"^2.2.16"},"_id":"0g@0.0.6","_nodeVersion":"14.10.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Jl2KSO1NVkQOkipndFD6ICi2n6dxghhJz9vSTR6gpRXWZTvtFoEaSnXBwssQiZ/JVU00g67RVkItYvBJaKOi0w==","shasum":"54abbff17436a468546fc89824fdd914f7cb7406","tarball":"https://registry.npmjs.org/0g/-/0g-0.0.6.tgz","fileCount":284,"unpackedSize":439322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPDalCRA9TVsSAnZWagAAb90P/A2RFYiImM3cQJieVEKh\nqmwbafvFhaLJFs+liJAVviZbGFVoICOsvglnRLBo5BkQGKSCWvOFDeoHcXXD\nr4r8QDloDU8ceZmLsDrKO2pD2j1iuxIaftyNFuii2gzMxDXK2OqlkJ6+HyEq\nA285PaweHJb4SS8FxNhZm0rc0kZZ019PyfBWnKl0yVFHMkZUAkfRfnqKOUzt\nQ71vcNj8JJbM0QxTn2rWYwYyqnI+3wkj1tj7MFhMfYpF5vepDAmxky0lpvQA\no9PbdX/erXXq1S+Hm54YhVfHyqovi01/n9iSk7UEjaie/VIxho4UBjkL62el\nobhd7zswIQnS6stN4bi8peTj7PwjIG+OAFFI1ef6vGMZ75fvDm3CNR+NP4Pu\nj2Zbg5PvAr7jesCngrZxTmPOJYK0ZXhT0W8UzWI5ABovzqA0n2GBrQ5Asppv\nSM+WhlQy6zEpyce7EH54RhEF25+ZqhmjIky83ea7wY8XYuleu32kJS+mzLMP\nUsZ3jYP2z5fVdTLO7VZXh+bFNNpSWTMjbM9zwIt5cLPKB/tU1pyHzOnaeV55\nOps2H8QfcVMTywCyprYQiHQZEEhR7h4I/uuNIJMz9/CwGb5rt2imhpBFE2HE\nPzx8uAjbhFe9M1bL4C5EeSduYCB7bN2lBEuifVPqPJA4JSuonPMGOZsIh/ql\ni4SA\r\n=vXJd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDDz5sFKlXM9YGiORn2Z+iN4UGV7ZNmYMjXnQWz/3pbwIgRAdQqWUTmZ642UkiXAb2MMuEWlMlb7o/0WQDeyVIiFA="}]},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.0.6_1614558885499_0.25304527085063255"},"_hasShrinkwrap":false,"deprecated":"try miniplex instead"},"0.0.7":{"name":"0g","version":"0.0.7","description":"The weightless game framework for TypeScript.","main":"./dist/index.js","module":"./dist-esm/index.js","typings":"./dist-esm/index.d.ts","scripts":{"test":"jest","test:watch":"jest --watch --bail","build:cjs":"tsc","build:esm":"tsc -m es6 --outDir dist-esm","build":"concurrently \"yarn build:cjs\" \"yarn build:esm\"","dev:cjs":"tsc --watch","dev:esm":"tsc -m es6 --outDir dist-esm --watch","dev":"concurrently \"yarn dev:cjs\" \"yarn dev:esm\"","prepublishOnly":"yarn build","release":"npm publish --access public --registry https://registry.npmjs.org","storybook":"start-storybook -p 6006","storybook:build":"build-storybook -o docs/storybook","typedoc":"typedoc --options typedoc.json"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","peerDependencies":{},"devDependencies":{"@babel/core":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-react":"^7.10.4","@babel/preset-typescript":"^7.10.4","@testing-library/jest-dom":"^5.11.1","@testing-library/react":"^10.4.7","@types/jest":"^26.0.5","@types/node":"^14.0.23","@types/ramda":"^0.27.32","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@types/shortid":"0.0.29","@typescript-eslint/eslint-plugin":"^4.8.1","@typescript-eslint/parser":"^4.8.1","babel-loader":"^8.1.0","concurrently":"^5.3.0","eslint":"^7.13.0","eslint-plugin-react":"^7.21.5","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","prettier":"^2.0.5","typedoc":"0.17.0-3","typedoc-plugin-internal-external":"^2.2.0","typescript":"^4.1.2"},"dependencies":{"mnemonist":"^0.38.1","shortid":"^2.2.16"},"gitHead":"601e33fd0ac610180b1780597c8137e8951a0ca2","_id":"0g@0.0.7","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"integrity":"sha512-vgTLK5gCgH5y8wnW94vPPSZsWC51uODDeF812CG5+H/IolX7kBzq7q2XA3WnXVL51e2TGabw9/XPx0wEZIY3tA==","shasum":"4e983a08bb88210a9ded6728f9e2d3ae134cf89e","tarball":"https://registry.npmjs.org/0g/-/0g-0.0.7.tgz","fileCount":206,"unpackedSize":380275,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpQlKSUa3dql7C+Whjh8R+X8h6wRr6+92eaP6mH+k5KAIge0UHa7iolu5iG8FkXdwwJC7zla51kxs8CRcUSSj/L40="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJimSdFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmreVw//SOs9an4xcbDBYWBclZBdnERVOngJX+PrkyVKyLBjCozZTheH\r\nvOUhFG5lgxHQw0SbDcE866e76wtjXGD6l5aPbcPh3y/JqliME2CyKulUxpjA\r\nigiZbdyLDw0FrP0Ww4VKG80aiXDYr++kqC7Ju+zTFXcyrcunXybESQ+wLWZC\r\nOH/0AWVwU56ADglGaBso2Il2JsHR61urNb/JxIpbQKLELJa/hZjntf9GxpZL\r\nRW8lW9N2h9v5GdVZQ6TGeYfKhzOQJp7RYDHeD9snRsjR7r4A38rYnb+SmqW4\r\nNzLx1fABwKQTVnzUrLVw5LmZzRnbNzq5o/zczNeTaBalb9DpeWYtTUjZEHxL\r\nLwqsUzBbWGcu6aKlbtUBcD4AmFJYal2fpUyXQIMTj7EoF6YlezIC2Jx+d3sI\r\n7KB865kQMA7O5Gc+P8SaaUjjxvjqS5gEEwcLJzu6bfXiaA5VDPF+ZvOHijrD\r\ntIBf5Or1D1CWxTy6Xixj2+GytpFY4UixZpBrTIFAg3+2Rf7Vah9hkW5QnAf+\r\nRhCxSbU3f6NM8pKm9Mtd/p29nd+130bopwtYHXBlTQ6XEGXMZgZa3i9rftVi\r\nKv8+C++/GrCiZLkeblm2RpWAzrFV5T4xhtjEqxeg+km+hoQBRCqjHLIFRYjk\r\nTCkX1kcTEWBjf/p7I3OVNC47nwSYlLvnfvM=\r\n=ZcbM\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.0.7_1654204229248_0.1404843636678399"},"_hasShrinkwrap":false,"deprecated":"try miniplex instead"},"0.0.8":{"name":"0g","version":"0.0.8","description":"The weightless game framework for TypeScript.","main":"./dist/index.js","module":"./dist-esm/index.js","typings":"./dist-esm/index.d.ts","scripts":{"test":"jest","test:watch":"jest --watch --bail","build:cjs":"tsc","build:esm":"tsc -m es6 --outDir dist-esm","build":"concurrently \"yarn build:cjs\" \"yarn build:esm\"","dev:cjs":"tsc --watch","dev:esm":"tsc -m es6 --outDir dist-esm --watch","dev":"concurrently \"yarn dev:cjs\" \"yarn dev:esm\"","prepublishOnly":"yarn build","release":"npm publish --access public --registry https://registry.npmjs.org","storybook":"start-storybook -p 6006","storybook:build":"build-storybook -o docs/storybook","typedoc":"typedoc --options typedoc.json"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","peerDependencies":{},"devDependencies":{"@babel/core":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-react":"^7.10.4","@babel/preset-typescript":"^7.10.4","@testing-library/jest-dom":"^5.11.1","@testing-library/react":"^10.4.7","@types/jest":"^26.0.5","@types/node":"^14.0.23","@types/ramda":"^0.27.32","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@types/shortid":"0.0.29","@typescript-eslint/eslint-plugin":"^4.8.1","@typescript-eslint/parser":"^4.8.1","babel-loader":"^8.1.0","concurrently":"^5.3.0","eslint":"^7.13.0","eslint-plugin-react":"^7.21.5","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","prettier":"^2.0.5","typedoc":"0.17.0-3","typedoc-plugin-internal-external":"^2.2.0","typescript":"^4.1.2"},"dependencies":{"mnemonist":"^0.38.1","shortid":"^2.2.16"},"gitHead":"4d7157d3d15c5796c0127fdc0d1c0bae8f77ad91","_id":"0g@0.0.8","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"integrity":"sha512-xiPw9Hg8ihTIWOMeFPLaeeh38N+WSRX6BFA0+WNdyxvwyR04Hz4u5NND3YDLbxhC50mXA2CzUk3h5rxvR9Z96g==","shasum":"6dfe9e76ed1f61f73d59bc505b605909f91f2bd1","tarball":"https://registry.npmjs.org/0g/-/0g-0.0.8.tgz","fileCount":212,"unpackedSize":394428,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAwjgF20cGvu8INC4br1tErd/zzAGB5ROrWa2Nui2roCAiEA/e31QCsoE62pyJZuDPwExe4Bp+QSb6/M8Uuwd3qfsAg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJimmVyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr5ORAAhCp+3O0D+HNaeyndIywaOMXmIG+LU4HYXZIkoFSGu2bhGpv/\r\n80mzvAks+L/SVp378+Y+p0dD4VGevuP7N/ANbuLYswJk2uxnyRW7jkTYCBBr\r\nxjEoVflLGMuBRtAOf+SchwX5KRc5DtWhk0EsWR1Q/Ve6ssWwf434/z/LuFfh\r\nPuRgEjfpFx+PHuAGTcoWknWU25WEVzih6nGer30g6apBtTyOr89MOpvseFxG\r\nnSfyfgDt/s7KHKJOmvZOwUbufU24YMBGnyDpUNKmVv7DF6AooW44hlzoalBj\r\nAhw+bDtjwfev5ShPhm/TOSdcMb3mp5TMx2LKH2IlcqsUxc9TX69+2fadqw4l\r\nmxYZaYwD5HYuClCfSvtKiYugYN0Z/OGHLUESTS6O4ZQShF69CjAemoC1xJHc\r\nQHq+7M8DXnvXh2GhxPg9IfZ97Pz0bTChDfdO9FigDQJJfjTA/WVkGzvOtBbA\r\nTIfd6ceTqtIz3J4k8r2i6kezKVZXn3kj6UnCeK8Ew1sf5+WxWdGDGfrmOChy\r\nDvbhlNNOOKQpMCFAnzgplGriBa81r1dnlFy0HdbQsa04XSlqKJOv/51M6a1k\r\nz9Qmfs8EtOO64DuTh6x1jTh43a3/LbVY/6cLKa90ZvDIQIJ6/7wsYL5zhEPB\r\nkFB09NXPU30r4ydQFsSiLW0f6VjBbbiY2mQ=\r\n=vinU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.0.8_1654285681734_0.6535411334020893"},"_hasShrinkwrap":false,"deprecated":"try miniplex instead"},"0.0.9":{"name":"0g","version":"0.0.9","description":"The weightless game framework for TypeScript.","main":"./dist/index.js","module":"./dist-esm/index.js","typings":"./dist-esm/index.d.ts","scripts":{"test":"jest","test:watch":"jest --watch --bail","build:cjs":"tsc","build:esm":"tsc -m es6 --outDir dist-esm","build":"concurrently \"yarn build:cjs\" \"yarn build:esm\"","dev:cjs":"tsc --watch","dev:esm":"tsc -m es6 --outDir dist-esm --watch","dev":"concurrently \"yarn dev:cjs\" \"yarn dev:esm\"","prepublishOnly":"yarn build","release":"npm publish --access public --registry https://registry.npmjs.org","storybook":"start-storybook -p 6006","storybook:build":"build-storybook -o docs/storybook","typedoc":"typedoc --options typedoc.json"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","peerDependencies":{},"devDependencies":{"@babel/core":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-react":"^7.10.4","@babel/preset-typescript":"^7.10.4","@testing-library/jest-dom":"^5.11.1","@testing-library/react":"^10.4.7","@types/jest":"^26.0.5","@types/node":"^14.0.23","@types/ramda":"^0.27.32","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@types/shortid":"0.0.29","@typescript-eslint/eslint-plugin":"^4.8.1","@typescript-eslint/parser":"^4.8.1","babel-loader":"^8.1.0","concurrently":"^5.3.0","eslint":"^7.13.0","eslint-plugin-react":"^7.21.5","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","prettier":"^2.0.5","typedoc":"0.17.0-3","typedoc-plugin-internal-external":"^2.2.0","typescript":"^4.1.2"},"dependencies":{"events":"^3.3.0"},"_id":"0g@0.0.9","dist":{"shasum":"4e4e0bc424a39f9306bff1f8bcff182e0aecec88","integrity":"sha512-+puq1wfKqtuUdGQboOEr+3dW+X9Ifni+quTC9k+2CcmE9MLYqBRqSBtFaS70gqJ4J4EGIe+l2MkLSoJWwh2MBA==","tarball":"https://registry.npmjs.org/0g/-/0g-0.0.9.tgz","fileCount":221,"unpackedSize":394398,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDCk+ADqfsyv+zS1hQdbbVqUj+t48jU0KeXHxNn73ofMQIhAOfnPmrcThAfm1xCAkZRD3/EqHP1r9SsoUgKSS7/P5uj"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJim8+zACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrjzg//ewUFPDIzZ9orQ8a2F9cjSvPLk9PzVRIs3VMqNgQGxISH0yhi\r\nuOqSUocJ48exRZUGnIvaz4JJbZbU+t8SoFuKolMjfr0/8bsSx6Wvj0H0LfZv\r\nJzLeYbvYQsapAEswcjYQMcKbLZ+ADwMIouhlOaEd25HIvvH0DKg7RHuzxyQy\r\nlu7F/fFAqKPYO0gsGEdC2MFbWIA+OG40DZ+S+z7+pbKYjBxyo/T5o7Wb58kb\r\nZuGnnsWk4DZZioJaJY8OCMPCG/nTaa10LS/zDAfSn+HFo9D0luFUBz+vHP7u\r\nIXxC9CKocPQwMUSez2EOYOaQ8fLrCN1PgRXq90TggOtEnZMTs/usAv4/IgO6\r\nqJAFupoWd9EVzxcjAEPdshQ8MHhj5KhJ3fnUaF25YlzAdFkgCaD0jpRMawBj\r\npa+oKrR2ehxZk/buD9A/6HkxyDFqiK5vL5QvjCxYn9ZgJFAM8rYLZLIypLft\r\naCyt9IdC1Vm1O3XcKIsqQ8CXR0RFrsYtVxXSU7ENIs0K3+MLQlwcX4meXAnl\r\n/rGacHVZaKt4UcaQl+uXQc0APLcjMMVSUwqUNCEBg4gBia778VPk05ycD2az\r\nWflH84YhB+SMZzv2bhPpRyMOpj61dVeqvf/sYHnaQgx0pL/Hg4RQqnN2trnC\r\nzh67sS5yay73NgVfm4qbjnPsUBat0lkme6k=\r\n=VOD1\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.0.9_1654378419624_0.643557999928617"},"_hasShrinkwrap":false,"deprecated":"try miniplex instead"},"0.1.0":{"name":"0g","version":"0.1.0","description":"The weightless game framework for TypeScript.","type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./input":{"import":"./dist/input/index.js","types":"./dist/input/index.d.ts"}},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","devDependencies":{"@types/shortid":"0.0.32","jsdom":"^24.0.0","typedoc":"0.25.13","typedoc-plugin-internal-external":"^2.2.0","typescript":"5.4.5","vite":"5.2.10","vitest":"1.5.2"},"dependencies":{"@a-type/utils":"1.1.0","mnemonist":"0.39.8","shortid":"^2.2.16"},"scripts":{"test":"vitest","build":"tsc","typedoc":"typedoc --options typedoc.json"},"_id":"0g@0.1.0","_integrity":"sha512-2H8b/e/mpcJHt3XxG8s30hlsGAVpW+5llSbn2j24AUO9GkCYbEKucyBXCsUWdVccYYB+mJAsG14hH/cT1EZ1gg==","_resolved":"/tmp/19c5ea2e171cc0b0dc0652d1a6c5d1aa/0g-0.1.0.tgz","_from":"file:0g-0.1.0.tgz","_nodeVersion":"18.20.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-2H8b/e/mpcJHt3XxG8s30hlsGAVpW+5llSbn2j24AUO9GkCYbEKucyBXCsUWdVccYYB+mJAsG14hH/cT1EZ1gg==","shasum":"e8eddd4f07648c2a800de834dfcc8f133e3ce0a0","tarball":"https://registry.npmjs.org/0g/-/0g-0.1.0.tgz","fileCount":139,"unpackedSize":229017,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8TgL/XOg7pB1Ylav24Y0aerzBCpvUGjTnR2YsSqemcAIhALEkMH8OgsJI0v9txQWF4nfh5Ssae2JHUzVog2jZbA1P"}]},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.1.0_1714354644043_0.7844899946055748"},"_hasShrinkwrap":false},"0.1.1":{"name":"0g","version":"0.1.1","description":"The weightless game framework for TypeScript.","type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./input":{"import":"./dist/input/index.js","types":"./dist/input/index.d.ts"}},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","devDependencies":{"@types/shortid":"0.0.32","jsdom":"^24.0.0","typedoc":"0.25.13","typedoc-plugin-internal-external":"^2.2.0","typescript":"5.4.5","vite":"5.2.10","vitest":"1.5.2"},"dependencies":{"@a-type/utils":"1.1.0","mnemonist":"0.39.8","shortid":"^2.2.16"},"scripts":{"test":"vitest","build":"tsc","typedoc":"typedoc --options typedoc.json"},"_id":"0g@0.1.1","_integrity":"sha512-1uIfd3HKzkLezYUHWF37M/WxZt1rk3bot0Xew8Vf/5sZtbv/mTmdMXeBdt4uDQ5KaZM0S+hT5TdP2TwROkrDdQ==","_resolved":"/tmp/d4aa7789e3f4ffa00fe2b521d9a5b5e7/0g-0.1.1.tgz","_from":"file:0g-0.1.1.tgz","_nodeVersion":"18.20.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-1uIfd3HKzkLezYUHWF37M/WxZt1rk3bot0Xew8Vf/5sZtbv/mTmdMXeBdt4uDQ5KaZM0S+hT5TdP2TwROkrDdQ==","shasum":"87d7eeb5de4efd79e8e9211b22b2b2d60421d90d","tarball":"https://registry.npmjs.org/0g/-/0g-0.1.1.tgz","fileCount":139,"unpackedSize":235052,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC4ybhckyxWTODffP6sNSAj/WKz39wPwHEV4WcVH2nkmAiEAluYsGOw/LuOYJn5cR3veB5N7j0FQ/ZIxOZXfm9t1/vc="}]},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.1.1_1714356476584_0.4126404090170892"},"_hasShrinkwrap":false},"0.1.2":{"name":"0g","version":"0.1.2","description":"The weightless game framework for TypeScript.","type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./input":{"import":"./dist/input/index.js","types":"./dist/input/index.d.ts"}},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","devDependencies":{"@types/shortid":"0.0.32","jsdom":"^24.0.0","typedoc":"0.25.13","typedoc-plugin-internal-external":"^2.2.0","typescript":"5.4.5","vite":"5.2.10","vitest":"1.5.2"},"dependencies":{"@a-type/utils":"1.1.0","mnemonist":"0.39.8","shortid":"^2.2.16"},"scripts":{"test":"vitest","build":"tsc","typedoc":"typedoc --options typedoc.json"},"_id":"0g@0.1.2","_integrity":"sha512-bm+wEzzm1tMbjtmOAm6s1L2tFxk3bk53k+0m6FNlKeU4rMJsEeRfsDCaCIypecYbub4x3dV44Bi02s6WO87BBw==","_resolved":"/tmp/540f3c8db6404f14e62aa1c85299e0e1/0g-0.1.2.tgz","_from":"file:0g-0.1.2.tgz","_nodeVersion":"18.20.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-bm+wEzzm1tMbjtmOAm6s1L2tFxk3bk53k+0m6FNlKeU4rMJsEeRfsDCaCIypecYbub4x3dV44Bi02s6WO87BBw==","shasum":"4efd5c4a366bf1844ef37f5968d441a799422876","tarball":"https://registry.npmjs.org/0g/-/0g-0.1.2.tgz","fileCount":139,"unpackedSize":235692,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGQ8z0rklGtY26ISKAFr4fsXxGr/Y3wU7Aq8Z7gE0Y5vAiEAx9sR13Lho8nA251ymoOjYH9XYUaHeepRpRHiARUNH+0="}]},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.1.2_1714528508370_0.6395428867677639"},"_hasShrinkwrap":false},"0.2.0":{"name":"0g","version":"0.2.0","description":"The weightless game framework for TypeScript.","type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./input":{"import":"./dist/input/index.js","types":"./dist/input/index.d.ts"}},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","devDependencies":{"@types/shortid":"0.0.32","jsdom":"^24.0.0","typedoc":"0.25.13","typedoc-plugin-internal-external":"^2.2.0","typescript":"5.4.5","vite":"5.2.10","vitest":"1.5.2"},"dependencies":{"@a-type/utils":"1.1.0","mnemonist":"0.39.8","shortid":"^2.2.16"},"scripts":{"test":"vitest","build":"tsc","typedoc":"typedoc --options typedoc.json"},"_id":"0g@0.2.0","_integrity":"sha512-W4Jv3nDcLNFOKD9nkoiFTnKcHPXvG9DE/H77MAsevUlDYCVbbQ4Xp4Jr2dM/50Bfza3KGBXHbj1WwvdvapzR9w==","_resolved":"/tmp/7f647ee28da8a69e359ced5b759c9a28/0g-0.2.0.tgz","_from":"file:0g-0.2.0.tgz","_nodeVersion":"18.20.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-W4Jv3nDcLNFOKD9nkoiFTnKcHPXvG9DE/H77MAsevUlDYCVbbQ4Xp4Jr2dM/50Bfza3KGBXHbj1WwvdvapzR9w==","shasum":"9b9a908dfb18ebd73ff209751e3a6eafece893b5","tarball":"https://registry.npmjs.org/0g/-/0g-0.2.0.tgz","fileCount":139,"unpackedSize":237672,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvrHfnLjKnQXJbjr0FoitsDWIA1UTF9Q3EXrlqJgaLjQIhALyRlMOymafPP0Mw51KsgZfvqBxPCXB2BuYI5XT7KFG8"}]},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.2.0_1714660598246_0.4999212574973497"},"_hasShrinkwrap":false},"0.2.1":{"name":"0g","version":"0.2.1","description":"The weightless game framework for TypeScript.","type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./input":{"import":"./dist/input/index.js","types":"./dist/input/index.d.ts"}},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","devDependencies":{"@types/shortid":"0.0.32","jsdom":"^24.0.0","typedoc":"0.25.13","typedoc-plugin-internal-external":"^2.2.0","typescript":"5.4.5","vite":"5.2.10","vitest":"1.5.2"},"dependencies":{"@a-type/utils":"1.1.0","mnemonist":"0.39.8","shortid":"^2.2.16"},"scripts":{"test":"vitest","build":"tsc","typedoc":"typedoc --options typedoc.json"},"_id":"0g@0.2.1","_integrity":"sha512-jmyluxF1+uPeeXfQjo9Wmq4v9Nby53XBpXDFrjI5CLWY7pojcww1hvqS/ztib9THLNPhZZnqGQ6d5+eSunxjCA==","_resolved":"/tmp/c2964f108dcdade1c63e5c20e2821da7/0g-0.2.1.tgz","_from":"file:0g-0.2.1.tgz","_nodeVersion":"18.20.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-jmyluxF1+uPeeXfQjo9Wmq4v9Nby53XBpXDFrjI5CLWY7pojcww1hvqS/ztib9THLNPhZZnqGQ6d5+eSunxjCA==","shasum":"cd2f82a68da9fef84d51e6de2358e1ffd8eae9df","tarball":"https://registry.npmjs.org/0g/-/0g-0.2.1.tgz","fileCount":139,"unpackedSize":238371,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6iNlvECf48Gkcayj2BNXtXCUEVYGBBMeq8NwCqulsWQIgGLipeUnt4Q5VPW+UwdbVZ8K5l3rpPPJUAxAXtWn6514="}]},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.2.1_1715274605981_0.9272703944431433"},"_hasShrinkwrap":false},"0.2.2":{"name":"0g","version":"0.2.2","description":"The weightless game framework for TypeScript.","type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./input":{"import":"./dist/input/index.js","types":"./dist/input/index.d.ts"}},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","devDependencies":{"@types/shortid":"0.0.32","jsdom":"^24.0.0","typedoc":"0.25.13","typedoc-plugin-internal-external":"^2.2.0","typescript":"5.4.5","vite":"5.2.10","vitest":"1.5.2"},"dependencies":{"@a-type/utils":"1.1.0","mnemonist":"0.39.8","shortid":"^2.2.16"},"scripts":{"test":"vitest","build":"tsc","typedoc":"typedoc --options typedoc.json"},"_id":"0g@0.2.2","_integrity":"sha512-laBaE5odsRB/vVgxddOY+4uJA/jhfvxFNiNi9xcvdl8djn2VoNx0PctIyEBOrD9scat79BNs3HcprNw8USj+HQ==","_resolved":"/tmp/d3795dbf9e16a9c7050444d4b2e19dbe/0g-0.2.2.tgz","_from":"file:0g-0.2.2.tgz","_nodeVersion":"18.20.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-laBaE5odsRB/vVgxddOY+4uJA/jhfvxFNiNi9xcvdl8djn2VoNx0PctIyEBOrD9scat79BNs3HcprNw8USj+HQ==","shasum":"7f55496c339ab54395c6c28b6cef548d05beda66","tarball":"https://registry.npmjs.org/0g/-/0g-0.2.2.tgz","fileCount":139,"unpackedSize":238979,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICxQ6Q3JttLR+w7/ZahPoFjukYugKQvMjeq6oOfRJYk+AiEAwfeDfLQjRdUyjzogwUjfbZzzqFl8crTyfOHaHYE4wRA="}]},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.2.2_1715454033544_0.9548631048416019"},"_hasShrinkwrap":false},"0.3.0":{"name":"0g","version":"0.3.0","description":"The weightless game framework for TypeScript.","type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./input":{"import":"./dist/input/index.js","types":"./dist/input/index.d.ts"}},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","devDependencies":{"@types/shortid":"0.0.32","jsdom":"^24.0.0","typedoc":"0.25.13","typedoc-plugin-internal-external":"^2.2.0","typescript":"5.4.5","vite":"5.2.10","vitest":"1.5.2"},"dependencies":{"@a-type/utils":"1.1.0","mnemonist":"0.39.8","shortid":"^2.2.16"},"scripts":{"test":"vitest","build":"tsc","typedoc":"typedoc --options typedoc.json"},"_id":"0g@0.3.0","_integrity":"sha512-GVAbJGulCR2TNtXcZf1eVWReulkNA3zL6GmpoxZKmnCuhEMB0iDJsnPgxNheoHinJi1xf8MR8u050qo5d7O64Q==","_resolved":"/tmp/fe7b460088c13aaf5ec232345d1928f4/0g-0.3.0.tgz","_from":"file:0g-0.3.0.tgz","_nodeVersion":"18.20.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-GVAbJGulCR2TNtXcZf1eVWReulkNA3zL6GmpoxZKmnCuhEMB0iDJsnPgxNheoHinJi1xf8MR8u050qo5d7O64Q==","shasum":"67e472b646382fca73091b71e68dc1d6ec57a26c","tarball":"https://registry.npmjs.org/0g/-/0g-0.3.0.tgz","fileCount":143,"unpackedSize":249150,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICxMh9v+2R4d3p/6KGzctJJTaTNOu5croJMuK5ls/iYZAiEAw9wr6f16Pl4PfSHZCucijtcJyxoXvpyrGyRYNsKotvM="}]},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.3.0_1715631983180_0.47802716613165375"},"_hasShrinkwrap":false},"0.3.1":{"name":"0g","version":"0.3.1","description":"The weightless game framework for TypeScript.","type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./input":{"import":"./dist/input/index.js","types":"./dist/input/index.d.ts"}},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","devDependencies":{"@types/shortid":"0.0.32","jsdom":"^24.0.0","typedoc":"0.25.13","typedoc-plugin-internal-external":"^2.2.0","typescript":"5.4.5","vite":"5.2.10","vitest":"1.5.2"},"dependencies":{"@a-type/utils":"1.1.0","mnemonist":"0.39.8","shortid":"^2.2.16"},"scripts":{"test":"vitest","build":"tsc","typedoc":"typedoc --options typedoc.json"},"_id":"0g@0.3.1","_integrity":"sha512-AqK6/eUY53iTod21Wou3k5zugC1az7lubuCdXFOo4H1nCD1Z4dmftkATftqbZyKSoJKkU4eFy+HxLUyL2zHAJQ==","_resolved":"/tmp/74dd2e3e52718d4d773c0f0a60b6e2cb/0g-0.3.1.tgz","_from":"file:0g-0.3.1.tgz","_nodeVersion":"18.20.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-AqK6/eUY53iTod21Wou3k5zugC1az7lubuCdXFOo4H1nCD1Z4dmftkATftqbZyKSoJKkU4eFy+HxLUyL2zHAJQ==","shasum":"0a5641f5b7fa58a143e0721d484ca68c34575b5e","tarball":"https://registry.npmjs.org/0g/-/0g-0.3.1.tgz","fileCount":143,"unpackedSize":254725,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDFd93gjbSDwaumsxw6V+6bC5uEPKAHzfYbvI+A4QFfeAiA1G4qtOkVzsP0br766xvdED8wMx0+BhvT9yaoElh9pew=="}]},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.3.1_1715719807726_0.40287310954756395"},"_hasShrinkwrap":false},"0.3.2":{"name":"0g","version":"0.3.2","description":"The weightless game framework for TypeScript.","type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./input":{"import":"./dist/input/index.js","types":"./dist/input/index.d.ts"}},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","devDependencies":{"@types/shortid":"0.0.32","jsdom":"^24.0.0","typedoc":"0.25.13","typedoc-plugin-internal-external":"^2.2.0","typescript":"5.4.5","vite":"5.2.10","vitest":"1.5.2"},"dependencies":{"@a-type/utils":"1.1.0","mnemonist":"0.39.8","shortid":"^2.2.16"},"scripts":{"test":"vitest","test-ci":"vitest run","build":"tsc","typedoc":"typedoc --options typedoc.json"},"_id":"0g@0.3.2","_integrity":"sha512-ZYyeaS5Yn4+IpMbHB7MzUs2OGU96hth5XYQZQ0eHao1Qid3ssd8Yw4HmEvyE6PrdvWvLuf+w+0oMzbkGqoeL2w==","_resolved":"/tmp/a7da19df5856b5c8bbcc2f9efaa92c4b/0g-0.3.2.tgz","_from":"file:0g-0.3.2.tgz","_nodeVersion":"18.20.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-ZYyeaS5Yn4+IpMbHB7MzUs2OGU96hth5XYQZQ0eHao1Qid3ssd8Yw4HmEvyE6PrdvWvLuf+w+0oMzbkGqoeL2w==","shasum":"5c6bd0fba0c4e2e725ef30ceca61d66e06881bc1","tarball":"https://registry.npmjs.org/0g/-/0g-0.3.2.tgz","fileCount":143,"unpackedSize":255886,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDgywOzdFHt/ns+tLO+J5wbjuNMXx9JJbY2ZniQ3GMJ1AiA6Qi8T3prUNy7xAkGePqZD80AWDyUfIohTw/NtH5PTSg=="}]},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.3.2_1715774717542_0.0657560789230407"},"_hasShrinkwrap":false},"0.3.3":{"name":"0g","version":"0.3.3","description":"The weightless game framework for TypeScript.","type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./input":{"import":"./dist/input/index.js","types":"./dist/input/index.d.ts"}},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","devDependencies":{"@types/shortid":"0.0.32","jsdom":"^24.0.0","typedoc":"0.25.13","typedoc-plugin-internal-external":"^2.2.0","typescript":"5.4.5","vite":"5.2.10","vitest":"1.5.2"},"dependencies":{"@a-type/utils":"1.1.0","mnemonist":"0.39.8","shortid":"^2.2.16"},"scripts":{"test":"vitest","test-ci":"vitest run","build":"tsc","typedoc":"typedoc --options typedoc.json"},"_id":"0g@0.3.3","_integrity":"sha512-FhzhpX/HknkfnM3etxJbBetBqK+bfoC6T1wn1HUhQMiSA9ZSf1tYz4J9I9jiBAZWDZrHxNvWRQ7HvxvJjSSwOA==","_resolved":"/tmp/fed47b212008343e86f867722d5e8d63/0g-0.3.3.tgz","_from":"file:0g-0.3.3.tgz","_nodeVersion":"18.20.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-FhzhpX/HknkfnM3etxJbBetBqK+bfoC6T1wn1HUhQMiSA9ZSf1tYz4J9I9jiBAZWDZrHxNvWRQ7HvxvJjSSwOA==","shasum":"07b0c317bb07ab050487d065bf7fde9d49ad18e8","tarball":"https://registry.npmjs.org/0g/-/0g-0.3.3.tgz","fileCount":143,"unpackedSize":262983,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE9g1IR9X7oIc/FcsaLEX9O/1U8fQwVLe7lrOirUAscPAiEA/Y4Sx6Ety2+f8Q53HaQBXNOEPoWiZI7sLnAXpuDniTU="}]},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.3.3_1715884247431_0.34097916238041925"},"_hasShrinkwrap":false},"0.3.4":{"name":"0g","version":"0.3.4","description":"The weightless game framework for TypeScript.","type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./input":{"import":"./dist/input/index.js","types":"./dist/input/index.d.ts"}},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","devDependencies":{"@types/shortid":"0.0.32","jsdom":"^24.0.0","typedoc":"0.25.13","typedoc-plugin-internal-external":"^2.2.0","typescript":"5.4.5","vite":"5.2.10","vitest":"1.5.2"},"dependencies":{"@a-type/utils":"1.1.0","mnemonist":"0.39.8","shortid":"^2.2.16"},"scripts":{"test":"vitest","test-ci":"vitest run","build":"tsc","typedoc":"typedoc --options typedoc.json"},"_id":"0g@0.3.4","_integrity":"sha512-P/fVMB8gsByB+vlQa+c5qN0c3Ft/MvaFCy/dNOh++64U1e4V/qc4WaYyXHUbXWUUkAmRhdeBDruarvs4Mjfx6A==","_resolved":"/tmp/82e359cd2068d68957dfd885922d95ce/0g-0.3.4.tgz","_from":"file:0g-0.3.4.tgz","_nodeVersion":"18.20.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-P/fVMB8gsByB+vlQa+c5qN0c3Ft/MvaFCy/dNOh++64U1e4V/qc4WaYyXHUbXWUUkAmRhdeBDruarvs4Mjfx6A==","shasum":"d222d5fdabf9d3ec56cbf944ec58c09f3028a640","tarball":"https://registry.npmjs.org/0g/-/0g-0.3.4.tgz","fileCount":143,"unpackedSize":262888,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAXbkSohAa5Eb+hjYcrYgayibBnLgMewPOclXg9GwfgQIgNayX1RedH9fH6aUGcH1/fhnkgYF2SSoHw5eZ33kKkgk="}]},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.3.4_1715908173015_0.30988482038154275"},"_hasShrinkwrap":false},"0.4.0":{"name":"0g","version":"0.4.0","description":"The weightless game framework for TypeScript.","type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./input":{"import":"./dist/input/index.js","types":"./dist/input/index.d.ts"}},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","devDependencies":{"@types/shortid":"0.0.32","jsdom":"^24.0.0","typedoc":"0.25.13","typedoc-plugin-internal-external":"^2.2.0","typescript":"5.4.5","vite":"5.2.10","vitest":"1.5.2"},"dependencies":{"@a-type/utils":"1.1.0","mnemonist":"0.39.8","shortid":"^2.2.16"},"scripts":{"test":"vitest","test-ci":"vitest run","build":"tsc","typedoc":"typedoc --options typedoc.json"},"_id":"0g@0.4.0","_integrity":"sha512-s2P0k705+KIKGfohDV3fwhz4q5dR1zmpKt/qmTO4+Oo2S6vzPpOMX1CrPJj7aBVC+QgL30/07mhDdF+ucOtDfw==","_resolved":"/tmp/ff801ec7cbc1ef299bf7ed1ec73ebd5a/0g-0.4.0.tgz","_from":"file:0g-0.4.0.tgz","_nodeVersion":"18.20.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-s2P0k705+KIKGfohDV3fwhz4q5dR1zmpKt/qmTO4+Oo2S6vzPpOMX1CrPJj7aBVC+QgL30/07mhDdF+ucOtDfw==","shasum":"f6787dc4d5426d1edce731fccbfc38aa842b9325","tarball":"https://registry.npmjs.org/0g/-/0g-0.4.0.tgz","fileCount":143,"unpackedSize":266229,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEvfrdZT/H5N8YDhbECxV105At8fwru7EAnY+BV3vLOAIhAOD2JR+A0KCX5pMjnffgod7zqlz7GwOmSNm7eFNUdE3Q"}]},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.4.0_1715957745701_0.4087719548539328"},"_hasShrinkwrap":false},"0.4.1":{"name":"0g","version":"0.4.1","description":"The weightless game framework for TypeScript.","type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./input":{"import":"./dist/input/index.js","types":"./dist/input/index.d.ts"}},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","devDependencies":{"@types/shortid":"0.0.32","jsdom":"^24.0.0","typedoc":"0.25.13","typedoc-plugin-internal-external":"^2.2.0","typescript":"5.4.5","vite":"5.2.10","vitest":"1.5.2"},"dependencies":{"@a-type/utils":"1.1.0","mnemonist":"0.39.8","shortid":"^2.2.16"},"scripts":{"test":"vitest","test-ci":"vitest run","build":"tsc","typedoc":"typedoc --options typedoc.json"},"_id":"0g@0.4.1","_integrity":"sha512-+Q4yZF8qc/bWtTr9x/KmOAYnxfOcSzebNuDkx1h5bO/b4x6mVqqA3ydfKotsoDWgX15XpSakwNcUBPumZmO+PA==","_resolved":"/tmp/9c9d616294027cb4bbbf6eb6ec18017e/0g-0.4.1.tgz","_from":"file:0g-0.4.1.tgz","_nodeVersion":"18.20.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-+Q4yZF8qc/bWtTr9x/KmOAYnxfOcSzebNuDkx1h5bO/b4x6mVqqA3ydfKotsoDWgX15XpSakwNcUBPumZmO+PA==","shasum":"af700addc1898835ad28890d0fc6adb494e307c0","tarball":"https://registry.npmjs.org/0g/-/0g-0.4.1.tgz","fileCount":143,"unpackedSize":266368,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDaz85GSh/PLXyBycEGFHF3GsWxVoCVcPbSFZpO+SVZygIhAPh4J2IwnKDjaOoB18yD1VSAvfns4QaZQIi27mMvaRtg"}]},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.4.1_1715963043567_0.1187894306207018"},"_hasShrinkwrap":false},"0.4.2":{"name":"0g","version":"0.4.2","description":"The weightless game framework for TypeScript.","type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./input":{"import":"./dist/input/index.js","types":"./dist/input/index.d.ts"}},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"keywords":[],"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"license":"MIT","bugs":{"url":"https://github.com/a-type/0g/issues"},"homepage":"https://github.com/a-type/0g#readme","devDependencies":{"@types/shortid":"0.0.32","jsdom":"^24.0.0","typedoc":"0.25.13","typedoc-plugin-internal-external":"^2.2.0","typescript":"5.4.5","vite":"5.2.10","vitest":"1.5.2"},"dependencies":{"@a-type/utils":"1.1.0","mnemonist":"0.39.8","shortid":"^2.2.16"},"scripts":{"test":"vitest","test-ci":"vitest run","build":"tsc","typedoc":"typedoc --options typedoc.json"},"_id":"0g@0.4.2","_integrity":"sha512-IIVL9Lttg8Oob9xEsGpZG0lYyzXFE3ViaAGAtGKVGM9xLRhyB/ZHEpI9cV1eGjeseIRVd3Y+Ycj3aEK+1CTTnw==","_resolved":"/tmp/20a1020fe30b81b9091b0d1120a665ce/0g-0.4.2.tgz","_from":"file:0g-0.4.2.tgz","_nodeVersion":"18.20.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-IIVL9Lttg8Oob9xEsGpZG0lYyzXFE3ViaAGAtGKVGM9xLRhyB/ZHEpI9cV1eGjeseIRVd3Y+Ycj3aEK+1CTTnw==","shasum":"9badccdad8fc97b7c8392aeb421dcee34d3c46e7","tarball":"https://registry.npmjs.org/0g/-/0g-0.4.2.tgz","fileCount":143,"unpackedSize":270877,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCaLk184w75FUQMx3ERN76MyZxygeo3x9i7bCpPnr2lOQIgEFo2ImDvEXWiAdxUc6TA6fN7FORLyfKMmt3Fi25dvfw="}]},"_npmUser":{"name":"a-type","email":"gaforres@gmail.com"},"directories":{},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/0g_0.4.2_1716220345303_0.737131169903803"},"_hasShrinkwrap":false}},"maintainers":[{"name":"a-type","email":"gaforres@gmail.com"}],"description":"The weightless game framework for TypeScript.","homepage":"https://github.com/a-type/0g#readme","keywords":[],"repository":{"type":"git","url":"git+https://github.com/a-type/0g.git"},"author":{"name":"Grant Forrest","email":"gaforres@gmail.com","url":"https://github.com/a-type"},"bugs":{"url":"https://github.com/a-type/0g/issues"},"license":"MIT","readme":"# `0G`\n\nThe weightless game framework for TypeScript.\n\n### TypeScript Focused\n\n`0G` strikes a balance between flexibility and confidence, supporting seamless TypeScript typing for important data boundaries like Components and core engine features.\n\n### ECS inspired\n\n`0G` tries to take the core ides of Entity-Component-System game frameworks and extend them with greater flexibility and concrete use cases.\n\n### React Compatible\n\n`0G` has some goodies for React developers like me to integrate familiar patterns into game development use cases. You can utilize React to power your game's UI, or you can hook up [`react-three-fiber`](https://github.com/pmndrs/react-three-fiber) or [`react-pixi`](https://github.com/inlet/react-pixi) to power your whole game.\n\nOf course, React adds additional overhead and can require a lot of imperative bailouts (i.e. `ref`s) to render realtime visualizations - but you get to decide where to draw the line for your game.\n\nFor more details, take a look at the [`@0g/react`](https://github.com/a-type/0g/tree/master/packages/react) package after you've read up on the basics of `0G`.\n\n## Docs\n\n`0G` has an \"ECS inspired\" architecture. It's probably not accurate to call it an ECS - it doesn't follow all the rules, and in particular it doesn't maintain the kinds of performance optimizations which form a core part of what \"ECS\" means (Components in `0G` are objects, not raw data - so JavaScript can't optimize their memory locations like you could in a lower-level implementation).\n\nIf you're familiar with ECS, some of these concepts should also feel familiar - but be sure to read on for details about the specifics of `0G`'s usage and patterns!\n\n### Components\n\n```tsx\nclass Transform extends Component({\n  x: 0,\n  y: 0,\n  angle: 0,\n}) {\n  get position() {\n    return {\n      x: this.x,\n      y: this.y,\n    };\n  }\n}\n\nclass Rigidbody extends State({\n  value: new PhysicsLibrary.Rigidbody(),\n}) {}\n```\n\nTo start modeling your game behavior, you'll probably first begin defining Components.\n\nComponents are where your game state lives. The purpose of the rest of your code is either to group, change, or render Components.\n\nComponents come in two flavors:\n\n- _Component_ (persistent): Serializeable and runtime-editable<sup>1</sup>, this data forms the loadable \"scene.\"\n  - Example: Store the configuration of a physics rigidbody for each character\n- _State_ (ephemeral): Store any data you want. Usually these components are derived from persistent Components at initialization time.\n  - Example: Store the runtime rigidbody created by the physics system at runtime\n\n<sup><sup>1</sup> Runtime editing is not yet supported... except in the devtools console.</sup>\n\nYou'll notice the syntax for defining a Component is a bit odd. A Component, like `Transform` above, is a class constructor which inherits from a class generated by calling the function `Component` (or `State`).\n\nThis unique syntax allows `0G` to correctly type all the data in your Components thoughout your game and provide advanced DX.\n\nTo the `Component/State` function, we pass the default values. The object we pass to this function will define what data is serialized in a `Component`.\n\nIn our actual class body, we can define additional properties or methods to improve the usage of our Component. I like to put computed data in properties here to reduce duplicated stored state and make things simpler in my game logic.\n\n#### Component Change Tracking\n\n`0G` can track changes you make to Components when you update it in certain ways. While not often needed, this can help to optimize certain parts of your game which might only need to run when a Component changes.\n\nTo inform `0G` that your component data has changed, you can do one of two things:\n\n1. Set `.updated = true` on your component\n2. Make your changes within an `.update(comp => { comp.foo = 'bar'; })` block\n\nMost of the time, 1 is sufficient and straightforward.\n\nWhen you tell `0G` a Component has been updated, anything 'listening' for changes won't be informed immediately. The new updated flag state will be cached until the next frame.\n\n### Entities\n\n```tsx\nconst transform = entity.get(stores.Transform);\ntransform.x = 100;\n```\n\nAs in classic ECS, Entities are identifiers for groupings of Components. Each Entity has an ID. In `0G`, an Entity object provides some convenience tools for retrieving its components, with full TypeScript support.\n\nThere are a few ways to \"get\" Entities in `0G`. The most common is to get them from a Query (see below). Sometimes, you may know an Entity's ID and want to grab it directly. For that you can use `Game.get`:\n\n```ts\nconst ent = game.get(23);\n```\n\nWhen you use a Query to find Entities, the resulting Entities will be fully typed with guarantees on known Components the Entity must possess. When you get an Entity directly from the game, all Components are considered nullable and you'll need to test to see if they are present before referencing them.\n\n```ts\nconst ent = game.get(23);\nconst transform = ent.get(Transform);\n// null safety is required - Transform may not exist on entity 23\nconst x = transform?.x ?? 0;\n```\n\nThere may be more to say about Entities, but it's better to see them in the context of Queries and Systems.\n\n### Queries\n\n```tsx\n[Player, changed(Transform), not(Body)];\n```\n\nIt's important, as a game developer, to find Entities in the game and iterate over them. Generally you want to find Entities by certain criteria. In `0G` the primary criteria is which Components they have associated.\n\nQueries are managed by the game, and they monitor changes to Entities and select which Entities match your criteria. For example, you could have a Query which selects all Entities that have a `Transform` and `Body` store to do physics calculations.\n\nIn practice, you'll usually define Queries by creating an array of Component constructors and Filters when constructing a System or Effect.\n\n#### Query Filters\n\nThere are a number of filters available on `0G` you can use to select Entities:\n\n- `not(Component)`: The Entity does not have `Component` associated with it\n- `any(ComponentA, ComponentB)`: The Entity has at least one of the listed Components associated with it\n- `changed(Component)`: The query will only include an Entity if the specified Component changed last frame\n- `has(Component)`: The Entity has this Component. Implied if you just pass in `Component` directly\n\n`changed` is probably the most interesting. It relates to the change tracking mentioned above in the Components section. An Entity will only appear in a Query with a `changed` filter if the Component specified by that filter was flagged as changed last frame - either `.updated = true` was called, or a change was made via `.update(...)`.\n\n### Systems\n\n```tsx\nconst demoMove = makeSystem([Transform], (entity, game) => {\n  const transform = entity.get(Transform);\n  // see the Resources section\n  const keyboard = game.resourceManager.immediate('keyboard');\n  if (keyboard.getKeyPressed('ArrowLeft')) {\n    transform.x -= 5;\n  } else if (keyboard.getKeyPressed('ArrowRight')) {\n    transform.x += 5;\n  }\n});\n```\n\nSystems are where your game logic lives. They utilize Queries to access Entities in the game which meet certain constraints. Using those Queries, they can iterate over matching entities each frame, performing logic.\n\nA System has a Query definition (an array of Component constructors and Filters), and a callback. The callback is passed an Entity which matches the Query, and the Game itself.\n\nInside the callback, reference the Entity's Components to gather data about it, and modify them to change the game state. You can also utilize `game` to add new Components, remove Components, create new Entities, etc.\n\n### Effects\n\n```ts\nconst manageModel = makeEffect([ModelSource], async (entity, game) => {\n  const { src } = entity.get(ModelSource);\n  const vertices = await game.resourceManager.load(src);\n  const modelGeometry = new ThreeDLibrary.Geometry({ vertices });\n  game.add(entity.id, Mesh, { geometry: modelGeometry });\n\n  return () => {\n    game.remove(entity.id, Mesh);\n    modelGeometry.dispose();\n  };\n});\n```\n\nEffects are specialized Systems which give you a convenient way to express side-effects and asynchronous logic as part of your game.\n\nAn effect specifies a Query and a callback. The callback receives an Entity which matches the Query, and the Game (like Systems).\n\nHowever, unlike Systems, the callback is only called once - when the Entity first matches the provided Query. The callback can also be `async` and await long-running tasks like asset loading.\n\nThe callback can also return a new function. This returned function will be run during \"cleanup\" - when the Entity in question is first removed from the Query.\n\nEffects are great for modeling dependent state! Dependent state takes a form like \"Any Entity with a BodyConfig component should also get a Body.\" These relationships are easy to express by defining the appropriate Query and writing a callback to create and assign the related Component, then unassign it when the Entity no longer satisfies the Query.\n\n### Resources\n\nThe Game has some tools to help you manage shared global state and asset loading and management.\n\n#### Globals\n\nGlobals are a big key-value store of anything you might need to reference from all over your game. Good candidates for global state are a Three.JS scene, a physics simulation, or smaller one-off state items like timers which might be awkward and heavy to implement with Components.\n\nMore than just a dumb key-value, though, Globals allows you to `await` the presence of an expected global value. This is useful in Effects! For example, perhaps you want to have an Entity which controls the physics simulation on a per-scene basis. This Entity would then load the global physics simulation at some unspecified time - perhaps on the first frame, perhaps later. All Entities with physics objects associated with them would need to wait for this simulation to be bootstrapped - then will have to `await` it!\n\n```ts\nconst manageSimulation = makeEffect(\n  [PhysicsWorldConfig],\n  async (entity, game) => {\n    const config = entity.get(PhysicsWorldConfig);\n    game.globals.resolve('physicsWorld', new PhysicsLibrary.World(config));\n    return () => {\n      game.globals.remove('physicsWorld');\n    };\n  },\n);\n\nconst manageBody = makeEffect([BodyConfig], async (entity, game) => {\n  const simulation = await game.globals.load('physicsWorld');\n  // now the world has been loaded and we can create the Body\n  const body = simulation.createBody();\n  game.add(entity.id, Body, { value: body });\n  return () => {\n    simulation.destroyBody(body);\n    game.remove(entity.id, Body);\n  };\n});\n```\n\nWaiting for globals is a simple but powerful way to encode these kinds of dependencies in your Effects. You're also free to implement more than one way to define a global without changing the rest of the game logic which relies on it.\n\n#### Assets\n\nAssets are similar to Globals, but rather than resolving them manually, you provide specific named asset loaders up-front to your Game. For example, you might have an asset loader that loads `.OBJ` files.\n\nWhen an Asset is awaited for the first time, your loader kicks in and loads it for you, resolving the promise when loading is complete.\n\nAssets are cached once they're loaded the first time. Any subsequent waits on an asset will resolve immediately with the cached value.\n\n```ts\nconst manageModel = makeEffect([ModelSource], async (entity, game) => {\n  const { src } = entity.get(ModelSource);\n  const vertices = await game.assets.load('.obj', src);\n  const modelGeometry = new ThreeDLibrary.Geometry({ vertices });\n  game.add(entity.id, Mesh, { geometry: modelGeometry });\n\n  return () => {\n    game.remove(entity.id, Mesh);\n    modelGeometry.dispose();\n  };\n});\n```\n\n#### Typings for Resources\n\nWhile `0G` can infer a lot of typings for you, globals are harder to do well.\n\nTo achieve type-safety for Globals and Assets, you can manually define their shape by using `declare` in your game code to extend the interfaces which `0G` uses to define them:\n\n```ts\nimport { AssetLoader } from '0g';\n\ndeclare package '0g' {\n  interface Globals {\n    physicsWorld: PhysicsEngine.Simulation;\n    scene: ThreeJS.Scene;\n  }\n\n  interface AssetLoaders {\n    '.obj': AssetLoader<Float32Array>;\n    '.jpg': AssetLoader<Image>;\n  }\n}\n```\n\nWith these type definitions in place, hopefully you'll see stricter type-checking for references to Globals or Assets.\n","readmeFilename":"README.md"}