{"_id":"@browndragon/ecs","_rev":"11-d168f86d8a330c4e77ed8da67a897e44","name":"@browndragon/ecs","dist-tags":{"latest":"0.0.13"},"versions":{"0.0.4":{"name":"@browndragon/ecs","version":"0.0.4","description":"An entity-component-system (intended for phaser but this contains no game logic)","author":{"name":"Brown Dragon","email":"browndragon@googlegroups.com"},"homepage":"https://github.com/browndragon/lair#readme","license":"MIT","main":"lib/index.js","module":"src/index.js","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/browndragon/lair.git"},"scripts":{"test":"echo \"Error: run tests from root\" && exit 1"},"bugs":{"url":"https://github.com/browndragon/lair/issues"},"gitHead":"55882c77b532d7f8b7bae6d661df956b3f2b2d67","_id":"@browndragon/ecs@0.0.4","_nodeVersion":"14.4.0","_npmVersion":"lerna/3.22.1/node@v14.4.0+x64 (darwin)","dist":{"integrity":"sha512-Z631SV2iOm3NdaReATku/gjqctL6AFIdz4dLLL+ZHHGOuqV+l9zdkKtJSPodMddyp84tJhk7WSonJl5A/wrDyA==","shasum":"6744ae509dc17d92afe02df2b90790aebb0aff39","tarball":"https://registry.npmjs.org/@browndragon/ecs/-/ecs-0.0.4.tgz","fileCount":7,"unpackedSize":16577,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbQhsCRA9TVsSAnZWagAAh5QP/3lf6TPTMOPujVr0Gzh7\nZwwtNZNidZUYXPyme+vOViFo1xA0H/FpCpLij/NId3SUPvjup5ec+pO5/VJx\n/h26DJAIYFJUta/EBvDH0LAIDEapTn2QMs9RR/5lOusSRknG1jOhmv7KHLB/\nitYdHJSuM43O1aKDyIz+HXhAx7nPeiyXdXo1E1caBL3j6XaF6lV+gr39dOSc\n8ISqK1HzwjG32Og/I5EyaKeLPk50wwakXnOkiS34l6aZJ5p6VOuIUcIETxyd\nlUZTpxigeVVZFZ+Bq7QbleUQSdhT98/pT/STgtQ6tlwk3KO2zrvecDX2lAZz\n33cwAzwO6FZZ5yO1FxEhpk6F87AT7wD2B/jTQd3111ibZqBf98xIxXTMizC0\n9ypw+4bZs9BdIqJG+GzikgMOJw0JKlguX4Xlbvu/49qBiz0wv6btwwtzzhru\n5zOmNcusI3A7py5quvNI3DjdNBYBxgJkysULpkstvyjIFFvNrqRQUzze3AoC\nbsgdSbJExPYB4J6+P0WhJ8iHxhreB9vbxVgfTE3xglZLLEW2NY+wIcAV4CNW\nLlcmU0dkM68BVlrg/xowJuPZ57oKexNXfDEEDw2dh83YkXL9WHAKf8RigW14\n8BuTPD9OSMAFKSbLhcJeKiz1FH5Ej4nBT0JP0XCv7fN23JvCEf0+4fInYDNp\nfWjY\r\n=6GDQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSs13qc/SGX10A5Rpwlq5VVAPBb6FDB1szPGOq4zCMrgIhALeE3mTb+g445cQM1/bd+vgI/Xk74nZiAbehwuzU52mR"}]},"maintainers":[{"name":"browndragon","email":"browndragon@googlegroups.com"}],"_npmUser":{"name":"browndragon","email":"browndragon@googlegroups.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ecs_0.0.4_1600981099596_0.5183717140061361"},"_hasShrinkwrap":false},"0.0.5":{"name":"@browndragon/ecs","version":"0.0.5","description":"An entity-component-system (intended for phaser but this contains no game logic)","author":{"name":"Brown Dragon","email":"browndragon@googlegroups.com"},"homepage":"https://github.com/browndragon/lair#readme","license":"MIT","main":"lib/index.js","module":"src/index.js","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/browndragon/lair.git"},"scripts":{"test":"echo \"Error: run tests from root\" && exit 1"},"bugs":{"url":"https://github.com/browndragon/lair/issues"},"gitHead":"45296361bc92b9ae4f83693a05e48f5a98db1099","_id":"@browndragon/ecs@0.0.5","_nodeVersion":"14.4.0","_npmVersion":"lerna/3.22.1/node@v14.4.0+x64 (darwin)","dist":{"integrity":"sha512-RF0frpAx1tETJofuVWcyyuDlGCPr3QxP4IJ5X4eTy0yg0nWpwKT41OygHACu2UuUasrsVWtT5yVn5rrlVILEqA==","shasum":"8a50e9cf7adb39c820c32ec4901c60c6ffd3b045","tarball":"https://registry.npmjs.org/@browndragon/ecs/-/ecs-0.0.5.tgz","fileCount":12,"unpackedSize":25678,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbRGxCRA9TVsSAnZWagAAzo0QAKC7TmgVG/LHzBbjEqlG\n2bX6uHtbk4kTznBOGHrULSfX8ektNXNM81ioJeQPAXQweR8byeDZW5/Pc3Ev\nZnzThF5JBrViJXPJ9LhdDWOf2rshjsG6wbpcm31+0jSolb2BzQKLboOusDC+\nU4JY67w72k97gv+FfTRxuvmEhLYhEgzDld8u5jt6KYLfB70AdmDWraDZ7pT7\ndQ35XMo/Ay+waJxUhenPShtx+HQKi0LvD8KTwlImRfBM9iomgWCHwq97wF0w\nZFBeh9aKJuRwrYlc5xw2L0EriTGeGYaljhFtX9V2sOaWEQ+QXv6EgFDSm5MN\ngWcfXpitHfuamMVVS4JZbfZYUsCS+ATRcDgidlgZkTSu8HmXQy6d/mN9R5em\n3gmNjpCVU6ckZjrnaV1q67V3Ruq0tXax0jsy9tz2bxX3D/1Oai9VXrh1gaiC\nbrMgToaVf6+MYhZZuRozOaDspidx1FyqPeHsJl15LdsWajtphPfWQZciviH9\nlPRot/O7G/tn7pc2Gngy6BeyOFd6x3r+Cin+HBqHAK5f5D2NkB7kGm8Rm+V2\nt95k35Z3/PCbR4WCKM0vUlRTCq1eW/ZW6G2oK58XTrGAqqSXLHSR7PkWwxJt\nX87+kgY7ZVpT6R4twgyl/1BsnwccxZKRYkZbCybQDveUXWfVMsfS6CzswgA1\nYgqz\r\n=nRjD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID0BIQkeL3bKiP1kGzaU4V/41oQnBnCIQT2td9DKff32AiEAur62Aaj4MlXKnlybS7D/hUZUqXs2mU2tlNRYbbHr5VI="}]},"maintainers":[{"name":"browndragon","email":"browndragon@googlegroups.com"}],"_npmUser":{"name":"browndragon","email":"browndragon@googlegroups.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ecs_0.0.5_1600983472794_0.6439019808644395"},"_hasShrinkwrap":false},"0.0.6":{"name":"@browndragon/ecs","version":"0.0.6","description":"An entity-component-system (intended for phaser but this contains no game logic)","author":{"name":"Brown Dragon","email":"browndragon@googlegroups.com"},"homepage":"https://github.com/browndragon/lair#readme","license":"MIT","main":"lib/index.js","module":"src/index.js","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/browndragon/lair.git"},"scripts":{"test":"echo \"Error: run tests from root\" && exit 1"},"bugs":{"url":"https://github.com/browndragon/lair/issues"},"gitHead":"4137d1d86544f3c2ad3b948a825d753cfc0e85b8","_id":"@browndragon/ecs@0.0.6","_nodeVersion":"14.4.0","_npmVersion":"lerna/3.22.1/node@v14.4.0+x64 (darwin)","dist":{"integrity":"sha512-V+/Do1mhc/ZlySV/yyqNZdxdH0ldN74o3dV6LdEsfbRDsRriXW7zY8f+aLstOEkmHqNyC3XpU4p1JwxdMxeYFA==","shasum":"84390e52ab0004f0d1c5592d4c42458d45e11a30","tarball":"https://registry.npmjs.org/@browndragon/ecs/-/ecs-0.0.6.tgz","fileCount":7,"unpackedSize":14223,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbRR+CRA9TVsSAnZWagAA8WcQAIXGOjIe6lbZxru/BbyR\n6kmVdxTI0+AZBF6kBN0Vnp5pelSZMp3TeHtJhggyjHSCL203CfjkPyXUvKmx\nT4zE2hDmPDAjLhHjHCCcNYOyJiG8c7amo/sty5EbtrnPKfhgIhVo75TZyPpH\nWmla8ApgXqOxACCQ8wFg8h6u4t9A7otltqOHjnqYZiHzWbn/cEs5cmiNYTSJ\nRuHwz7cSCNH8Z7S+Ruw8ez0+Lfg7vW7U/X8wLS0BTn7PvNvy4i88DvQ1cIpI\nXmMcxERPjpAmwkkzBrzPf07UZobGN/ZoLabjTq3erRKs7j9nEC6olBV5/Dqw\nkY2CMJ5ayIqula7M0Nsc85xGwFYo+aKDIZirk5UhFpFQTR0Ed2W6ASbTFJRe\n3BlQPjxG3tS27amSYTdfubMOGV1O84pXDLpxKcFjQ3iHnDfqUjJAGEbOKyjv\ny3Iy3ZxYo4mBsT+apUeNEbezivm/L9APrQwDoftqVmXhDggbySVJb5VJjUxQ\nAxvkvirbeAO5cpXCt5zOuTvIUBmV8GyI97uQQ+I1WVfNeQGBfnWNGG/xA+6c\nNAV6i9Vx6NeQHrZVvmqE1GDFEzwHWXYGxD8I4Xfcq/RZE0yr+G0l5MGZePmg\nyl3eugv5V+X2V2IsUOBzvlwKlSL6Aa32YkzTSqJOn7ftDgH/0Olm9E158Md2\njBar\r\n=6/e4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEtGy9MYdJnicLqm8707qcS+lakqKhXNrZx3qIjS91aLAiBlX6VgbUv3VAKe3iBKF9gcNKApWr6Rtpv0DNOUTEwtKA=="}]},"maintainers":[{"name":"browndragon","email":"browndragon@googlegroups.com"}],"_npmUser":{"name":"browndragon","email":"browndragon@googlegroups.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ecs_0.0.6_1600984189735_0.4207649698044744"},"_hasShrinkwrap":false},"0.0.7-alpha.0":{"name":"@browndragon/ecs","version":"0.0.7-alpha.0","description":"An entity-component-system (intended for phaser but this contains no game logic)","author":{"name":"Brown Dragon","email":"browndragon@googlegroups.com"},"homepage":"https://github.com/browndragon/lair#readme","license":"MIT","main":"lib/index.js","module":"src/index.js","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/browndragon/lair.git"},"scripts":{"test":"echo \"Error: run tests from root\" && exit 1"},"bugs":{"url":"https://github.com/browndragon/lair/issues"},"gitHead":"447dbea35a853c396c066c3dc164f4c185b89c3b","_id":"@browndragon/ecs@0.0.7-alpha.0","_nodeVersion":"14.4.0","_npmVersion":"lerna/3.22.1/node@v14.4.0+x64 (darwin)","dist":{"integrity":"sha512-XQajTtSWe61xC1KX3o8vBjfkC8JL1l5EquV8z1QVF70JXWQl3Dmc6B3bHglCyoE3IDi7IhVyuRlgH5YNLfccWw==","shasum":"d3c8468e2129a9a68f9d56e2d27cb33c40165a0a","tarball":"https://registry.npmjs.org/@browndragon/ecs/-/ecs-0.0.7-alpha.0.tgz","fileCount":7,"unpackedSize":14255,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbRZWCRA9TVsSAnZWagAAuscP/i7eWY5blHVZQM+PRonn\nCG8KrPryXSFgKssTd4YEubLo/MTqqJnvTrZLKF9qIPfaQIu7VjeYjEQgdYZj\nRSqxsHKkDfa5ztk7gof8ejGutomwBKnTLdBwIvgTdE/ftEAmJ5d1pK/3XE35\nECL9M/O6qlvtOo6arL+aAminOKp5GbVz8NXXu27j2qQ2lLVoT6NgLXEVlJvu\nyBTZlSQJTvyB/2fMk2X/KOYTLcofDKeKagIJ8NDs5BaSMSOB069dau62YucQ\naATNf3AJwtxdwWwUhUbdvrbng07fmsP+vkj4QQiMZ2DCulR8vHu3JqGVSXS6\n1Ny4YnOpRm7ZS9NGZ7StPgHlWV3E6oQ8Bq6yqOHxhIt7dmD65IpVBvzbY9er\nxco/zMNWDr+ggBP/uqYEA5Zy/ex5bo/A6aOg1f/xZN+tud9n1bDnYBJjWNf2\nXr9PnotxdwppYIGLD7ev5uVSaNW42GB5QjgrT60v/4tHWKTtuBjkAzSs28+z\nVxkVUq4zVi0ym5NKhQ/HCyNNzEgMeKv174R24zRTqds80mReW/FW6EzPfi8O\nR3nexcVNiFJTH2Y91vjob0kPGAMICBD8CMxzVpkjcslVUyYkc7k6XDnMrFao\nU7Ffjzx5IowLt938vsNVC4NEzqP2KPqJ/lhR8zVPbOdgam/BeQwEh1/0UKhP\n6AX/\r\n=qNJ9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6YgeBSXpG57W1ndHBajmUt9MkdSrjb/2c2HFh84bnVwIhAPvAVdRsElUGq9JFDip2vxNhA5aeChRleI22FbgjSMDE"}]},"maintainers":[{"name":"browndragon","email":"browndragon@googlegroups.com"}],"_npmUser":{"name":"browndragon","email":"browndragon@googlegroups.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ecs_0.0.7-alpha.0_1600984661909_0.29086265976762093"},"_hasShrinkwrap":false},"0.0.7":{"name":"@browndragon/ecs","version":"0.0.7","description":"An entity-component-system (intended for phaser but this contains no game logic)","author":{"name":"Brown Dragon","email":"browndragon@googlegroups.com"},"homepage":"https://github.com/browndragon/lair#readme","license":"MIT","main":"lib/index.js","module":"src/index.js","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/browndragon/lair.git"},"scripts":{"test":"echo \"Error: run tests from root\" && exit 1"},"bugs":{"url":"https://github.com/browndragon/lair/issues"},"gitHead":"1795c60980c61f7f97e2743af6847fbeba219884","_id":"@browndragon/ecs@0.0.7","_nodeVersion":"14.4.0","_npmVersion":"lerna/3.22.1/node@v14.4.0+x64 (darwin)","dist":{"integrity":"sha512-yWxfjdbrY++Zb7a2brf15/2soHVljJsAW4M5NWXawy+DcAGYv7gH4tvYTducsYSySv7quyA3hrN15eI80BqnsQ==","shasum":"1d25b8cefc474223f090ff20d0cf96d6a77c7fec","tarball":"https://registry.npmjs.org/@browndragon/ecs/-/ecs-0.0.7.tgz","fileCount":7,"unpackedSize":14250,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbjPOCRA9TVsSAnZWagAA+GEQAII5zs1m3y6DHUOcNtPG\nVcJ9J97qQTRbQf2NxuTxuqSUPs3dz0C6veSSqO8yCWxdazW2j5SycMfhGcV5\n3lc6JLogWyIGJJi3k2S95R+N4v76MX/5y/J/pnG6U4XLmN0vrJv3R0cjYn3t\nnn3bgj4i2ItkOanZD6NMPun7G8g4K5S9QH9XnF82YTZB0OKNqi1sSEh/jd27\nSvi4J2EuAWoiksn8XHQL+Z4N1NVq6ZKj4JCN4baQ7c1zvB3PNv0ohKl16kw9\nqMlUClbgsogl8jutV55xcP7XzlLP9B8MFIlp1LvGmhYnbCEtRhaJqhrf57qx\n872Cgc+Q6cnZc8hRB4m0PVJQIWXGv9U0G2ybwWPmkcMN1Xa0gJXLpXS9FTbm\nXASO0MmUVQ4CAkeOh2Bqa96VyKLaB59IvwCQTrUoAys5wjjZgce7HmHUKql4\n99on3wW03UCaiZ+nqws4Fwl0Oy/SOfpQqE+2Agk+wK63UIw/t/dAaqkmMUV9\nk6DADYUNcm8KIUVlss2J+QHQyzPoP1o+4/IqaLjHlREJ21COOsTKDhstDxqf\nO7fr40AbzNcgkguAfMPhA+A6kpCWbEE8+xZgmpwPy2t771DjCikpGj8VyyPb\nLzH598EXJbBwXf3tQxqIGko37tiVKDFt3h/NvzMAanGh/H+W4l77aYL5ppfJ\nIjT3\r\n=cxNr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBJO3bSAl+bWvQnHQZ+94YFk5ZkTNC6xgYCE32dANc7AAiEA/OgJySeY/ITh7PCmTTw7IBWQwBrhlozdDaUiQNlpvXk="}]},"maintainers":[{"name":"browndragon","email":"browndragon@googlegroups.com"}],"_npmUser":{"name":"browndragon","email":"browndragon@googlegroups.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ecs_0.0.7_1601057741316_0.4045363690352479"},"_hasShrinkwrap":false},"0.0.8":{"name":"@browndragon/ecs","version":"0.0.8","description":"An entity-component-system (intended for phaser but this contains no game logic)","author":{"name":"Brown Dragon","email":"browndragon@googlegroups.com"},"homepage":"https://github.com/browndragon/lair#readme","license":"MIT","main":"lib/index.js","module":"src/index.js","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/browndragon/lair.git"},"scripts":{"test":"echo \"Error: run tests from root\" && exit 1"},"bugs":{"url":"https://github.com/browndragon/lair/issues"},"dependencies":{"@browndragon/collections":"^0.0.8"},"gitHead":"7922305e681fc50e23edac76ca3db03bb635e727","_id":"@browndragon/ecs@0.0.8","_nodeVersion":"14.4.0","_npmVersion":"lerna/3.22.1/node@v14.4.0+x64 (darwin)","dist":{"integrity":"sha512-VdiV2jMd2XVKfZaahGmD1Xjbh915IvEsogXN1PsDXl9SYVycMUglEO8pqzvVXNNhhIYQvhBLt1ftGqI4LBU6pg==","shasum":"79107b7f84ab7fa78f684c7b2703630cf95819e6","tarball":"https://registry.npmjs.org/@browndragon/ecs/-/ecs-0.0.8.tgz","fileCount":7,"unpackedSize":14826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJff09hCRA9TVsSAnZWagAApo8P/1ngv1+iDtEfYXyViIwY\ncbuYF8bgCYkRK+yzrbylXMJ9FcOC4DsodJtNsRUxxuVgiQcVDqpB4tPbOlfl\npMJMFl4ykzHsRHHePoMXLuo3N3IADq8SsM0oQwn0/M9iWqbHoXgiEI+FnyZ4\nm0iNuLwXBD+Cc5yZnFRZA8bB4h++llj9CpCBniuvy4Ngvs3nq/qgX/06eC5d\nqtpRfW/k20Dan7Tur+RphqSXlr8yxlC8kveJiaRRjd8eE7bwncYnJBpgStSA\nkhAkjrcp6h1jmzKM8DqJ9xPLBNbl+dGOVs5PIA3Nik1TTXSo/3vXY6OSKFmx\nI1xUMfp5khydQ2UIwOTlJQvc5wJ4aBQrhOMjnYQX8cBYIuCR2lG+87/YGVwf\niSqj5K8900og8Skdi3Vq+ELra+AoZbd183+xafshoMmV5w3aMlECx9DBffA+\n8DIJRDeIRTjZKI800og8UZqj4Pq6g6MgCQykURpa5qPJ+tbNfnltDkiEhYo7\nDtgfZxJylYEtyZBX2QvO5rJE8ZAUiY3qqYVrBQIZD9rBMYJQTEya+nSwVn0T\n6H8QygdP+A3y2QqBIforK7e1L7dyDJNq88vxoqgVUBI7n2YCeCVuxrExzRor\ntOLjz3pXQejT+QBczQA5K6mbO/691Xm8Jm/QyKOUZ+P3IFFOoxqs2fvQrvja\nrnRC\r\n=jF+2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkXyW35f46PSNSUj/j4rHcBWmfaVrFvZKdVbqcajOlqwIhAO/lJI1yoB/yf7wdXd9YOS4Z1XKmNfXqssGPt5NT88W7"}]},"maintainers":[{"name":"browndragon","email":"browndragon@googlegroups.com"}],"_npmUser":{"name":"browndragon","email":"browndragon@googlegroups.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ecs_0.0.8_1602178912356_0.5227475393624683"},"_hasShrinkwrap":false},"0.0.9":{"name":"@browndragon/ecs","version":"0.0.9","description":"An entity-component-system (intended for phaser but this contains no game logic)","author":{"name":"Brown Dragon","email":"browndragon@googlegroups.com"},"homepage":"https://github.com/browndragon/lair#readme","license":"MIT","main":"lib/index.js","module":"src/index.js","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/browndragon/lair.git"},"scripts":{"test":"echo \"Error: run tests from root\" && exit 1"},"bugs":{"url":"https://github.com/browndragon/lair/issues"},"dependencies":{"@browndragon/collections":"^0.0.9"},"gitHead":"7816a2c0c5b874e666cb0318fe902228cbdae19d","_id":"@browndragon/ecs@0.0.9","_nodeVersion":"14.4.0","_npmVersion":"lerna/3.22.1/node@v14.4.0+x64 (darwin)","dist":{"integrity":"sha512-uhwr2B6rMy+360m8qeUJWH4VlXj6BEMNthInpBPejtVTpEncYQipeFmTiQhpydrGCK2/DTuOWpB8TLX7t7QnGg==","shasum":"872d9f3f029827f122634628cbea9d2e6c493010","tarball":"https://registry.npmjs.org/@browndragon/ecs/-/ecs-0.0.9.tgz","fileCount":7,"unpackedSize":14826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJff2rlCRA9TVsSAnZWagAAAQkQAIyu4dNJ7BBbCYiIS5Fr\nbYbLwogIFzTm3nfi15AVNrr8nTCQ6r27n8qBc9BZDEao8OeJoS3tmj92KkK1\nd+EejvCNds4CFjBoByZRi9eju75MX6E3IUiUaLDbiVVSaM+x/AmXj4n+XqSJ\nFRzJFoWtzylMVy7f+9XcZkMSVLHd+rOH+nd7n9Qyy4QXibX6t8vlMZBmSewW\nWmEeJFIKwcliDLOU0kr+l3k3YsC9gp1GguB49/peIYnpB8VPAv9V5h8Wiukt\nJE4cRmBWsp6kT2oMj5eOtMJJPoRUQRpaVVStNe/2nfWqeMbn8dvDWjwBEU0Y\nAlGyXVc5gQF0VAy7QswhaBDemUrwrF5bFL1NgNOar49kZs/EC+Nbrg8l1lLZ\nO/mG5fhvNHqcpXqTXDf2U+L0cGR/nlCSbCcdoiLWMN8d9Fov8tl3c+/EbWcn\n9fiMttoZiLoPdmBytDBa+445gG4HXome4M6FLUCNPaDkJkywC8xnQQOGVNj9\niK65Jq1sFnR33NRYZOi11/VTISVESGqTT/5kS1K7gU48vs8CAVzj30WAsmBq\neljtdvJBxV0EDliRi3Hz3BVeIeXIGxN5wF5HbikprFctFfxWLqgfctSTuXvO\nGQ+xG6HZ8n+6INdKLsbFwc4yMErSaw2aeSH2GiLVgL4L1YRa3LGqt11Up57k\ns9s0\r\n=IAlo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDai6Pesz0J3xJquotfyEmanfuZWAMaJ487QQNTw/akoAiA2MmNufMB5cwdPh8kdVGF9ASue5nvFcuVxklJ0cqTMcg=="}]},"maintainers":[{"name":"browndragon","email":"browndragon@googlegroups.com"}],"_npmUser":{"name":"browndragon","email":"browndragon@googlegroups.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ecs_0.0.9_1602185956900_0.7006429168206632"},"_hasShrinkwrap":false},"0.0.10":{"name":"@browndragon/ecs","version":"0.0.10","description":"An entity-component-system (intended for phaser but this contains no game logic)","author":{"name":"Brown Dragon","email":"browndragon@googlegroups.com"},"homepage":"https://github.com/browndragon/lair#readme","license":"MIT","main":"lib/index.js","module":"src/index.js","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/browndragon/lair.git"},"scripts":{"test":"echo \"Error: run tests from root\" && exit 1"},"bugs":{"url":"https://github.com/browndragon/lair/issues"},"dependencies":{"@browndragon/collections":"^0.0.10"},"gitHead":"3158843b7eebca13e54c041bc4291688ace94f27","_id":"@browndragon/ecs@0.0.10","_nodeVersion":"14.4.0","_npmVersion":"lerna/3.22.1/node@v14.4.0+x64 (darwin)","dist":{"integrity":"sha512-ztqdPw6VB+pX4DgQvQPfhVWxpvCfUnx+XhdlRLJScYLqjv2DcIAJYA+Rm0yEe1HoWT/erIteCslXlckC7zWpfw==","shasum":"1caf628894a7537cee4474a007c7feac80295484","tarball":"https://registry.npmjs.org/@browndragon/ecs/-/ecs-0.0.10.tgz","fileCount":7,"unpackedSize":15044,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjyGnCRA9TVsSAnZWagAA3t4P/18wPXmG9IXswgL9fUy5\n2vK1hVaKf7/5eogZ1UKld7LdW1ROWe2UGOoCKaQEDwL8dDIkGaUDC//mmLc5\nj5ZdB4odMsH7ajXllnX1ILravVGECUPWiPxxrgkktnTOP9xUNs4P/WukzDlW\nWp3hqlEtcXT5zW/E3mnkPNgIXutnCUh9z/VTP4DMCiHeSQLsSmCmL5TQSw7n\nRVh85FAGVXKSZEk0LJkGAbg0Qb5boFN5YgpbXoPOg0IqtZOMARat03VjkGnm\n9rvA/7Qq2wLUhS/fCfWC1Gwleuea2n0KBpJhLltH7JOixqbncBKWoPjRYceg\nG9ObWGNbCysBIyPFawcwrHDdwic61DOyk43Ip1Nrbl65BdcU6+MbeXXs0TS/\nJOt+O3tVSXzQdfA8jYfXF/zKZA3+lMJWd3vXFn3ARUlTwyoZAkdN7zFHnkdR\nS6P5XtY123cPQo1aAJD/t6BBdXpsZZE0yP1Ru3sYe8LPq2fmd2tkRG74m4fo\nMEMVHYVfURJV/MXeaZodGsFKAEZ98eppbes6T9aP2BjyHcuE+9gp4/YoWkua\nLOd7336JQ8Fe6+u2v4VRMg9ZxGli0QpDoS3hxbNU55VCYAWcwMSgd9xIknSp\n6C4vXBlh1qqThzo2YgjvU1PN0c833dltAFiEYIR+31SEL2EusuQgt8C4SBO1\nBYRA\r\n=Wk6S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFmlOXvFnBf484yEdVyjSXXn69t/4DS3yU82NZ/E+otQAiEArHUeyH5VwZF8e+jHB8981DXY6rjAVks9TngML6wXUnM="}]},"maintainers":[{"name":"browndragon","email":"browndragon@googlegroups.com"}],"_npmUser":{"name":"browndragon","email":"browndragon@googlegroups.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ecs_0.0.10_1603215782519_0.5988774975609583"},"_hasShrinkwrap":false},"0.0.11":{"name":"@browndragon/ecs","version":"0.0.11","description":"An entity-component-system (intended for phaser but this contains no game logic)","author":{"name":"Brown Dragon","email":"browndragon@googlegroups.com"},"homepage":"https://github.com/browndragon/lair#readme","license":"MIT","main":"lib/index.js","module":"src/index.js","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/browndragon/lair.git"},"scripts":{"test":"echo \"Error: run tests from root\" && exit 1"},"bugs":{"url":"https://github.com/browndragon/lair/issues"},"dependencies":{"@browndragon/collections":"^0.0.11"},"gitHead":"263620dc09db23c0729e6eb216af03912ef05545","_id":"@browndragon/ecs@0.0.11","_nodeVersion":"14.4.0","_npmVersion":"lerna/3.22.1/node@v14.4.0+x64 (darwin)","dist":{"integrity":"sha512-c1+toU3HVQDr6/hEaxHf9KgIdTP3ufiTvwHi1pekGztNUOkqkD04utEFq40lkxy4pEB2Jpkn1zbxAFghDuB4Pw==","shasum":"340e0696c8d2c7319cf8202956cf1a1b8ec213f3","tarball":"https://registry.npmjs.org/@browndragon/ecs/-/ecs-0.0.11.tgz","fileCount":7,"unpackedSize":15044,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjy7ECRA9TVsSAnZWagAA6P0P/in09cj8FhyPArL226eF\nhK24KyQul/anctJtKmWRwcr922nG32OzOfh9sTII62LwLrgElFRgbJWaswC+\nqZQCeA60pYoiVlHEg261h/7VdR1ZpVUdpI9QnBvAoK3DWZgaI+7W1CFtnsb9\n32lCk2U82drHsr46YbExHxQyNVR+B0hyo6nPEyL+0EnAEkWenjCpVGoQuHA2\nhEn6wVQevlKu3NHcJ9F9ARB3G7av2WUioMH36SStVBuUTgL53vbxLsqtD5pM\n+T+h/JCj0h1fBKPPKTwHHBRpCYUWnF+zhJqLL1WZUBPAYEunddcyxCTLSvdE\nYMklWryWsMUnthPE41D24+7FVPe+qmv4vHxMRILprReTREGM3iSVLBacbo7K\nSF5xDiV0GIfCyI44TYkMdYsgco6t//XPrUD5MSl1eyd+SDGbCD/6etsZRTOE\n/+MGd/vF1PgN/9BYmVflv4tYcD2K97SbNWp2we2XfrvofigND7zv6ei5CZ7n\nKck9EUIYPoL85vIyityZHXGe6Ks9ayWCV1azQqZRmWHgu7KpExHHRnogkahB\nQGUIH0rEyydNErmBRahdKhDB3RpakKN49k34yYmA/tUKu/ZhrNFtSmdhmhuC\n13HBG33Rc5YjSye2MB0bRcHgQtPe51Oh8GJuZ0AuaEZM3HGrNhot4p1B6P29\ncBNS\r\n=zio9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEY78Lj163a0jgF1y8CZindpqqnKvGQuYUDplBQDtu7rAiEAomk12hxcbuvhNTw4dMrteu5bxVXo8k2/Y1s3aicxdHA="}]},"maintainers":[{"name":"browndragon","email":"browndragon@googlegroups.com"}],"_npmUser":{"name":"browndragon","email":"browndragon@googlegroups.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ecs_0.0.11_1603219140543_0.8534873841999742"},"_hasShrinkwrap":false},"0.0.12":{"name":"@browndragon/ecs","version":"0.0.12","description":"An entity-component-system (intended for phaser but this contains no game logic)","author":{"name":"Brown Dragon","email":"browndragon@googlegroups.com"},"homepage":"https://github.com/browndragon/lair#readme","license":"MIT","main":"lib/index.js","module":"src/index.js","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/browndragon/lair.git"},"scripts":{"test":"echo \"Error: run tests from root\" && exit 1"},"bugs":{"url":"https://github.com/browndragon/lair/issues"},"dependencies":{"@browndragon/collections":"^0.0.12"},"gitHead":"b8dc78ede5384fd355ac3fd560c54fcfa366d902","_id":"@browndragon/ecs@0.0.12","_nodeVersion":"14.4.0","_npmVersion":"lerna/3.22.1/node@v14.4.0+x64 (darwin)","dist":{"integrity":"sha512-Tc81jxKR8Sb/s3cKzdmkLzUkCn14B2BwECKFqvbqXPtZtaj/7cyG0367pFfc7+wTMgfZ8IxYgG4RVUab1cfdsg==","shasum":"cdb5ee90128054e388bb44abfa630e881d15b171","tarball":"https://registry.npmjs.org/@browndragon/ecs/-/ecs-0.0.12.tgz","fileCount":7,"unpackedSize":15044,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgD3paCRA9TVsSAnZWagAA2FIP/iOsiIVbsXKL29BJ9OQG\nd3kvM885s0cDTx1rMdAnNcdwbuETDmdEaKavMgWDKcjf3YAFfn/yyl1u/bJl\n080Radwe3STDCo6I9FKuLe+8OBZZzkDNrQcc/zdiNfT1uP4WJHCor4+1zCex\n54nG467G7Rgqw3Bl993Cpf8zYJ7Lgfd4MCu/sgG/9AvNVZFRVTOwt6kSzDKE\nplAB2QsdQIhF/71b/LbaN0RGG7uMfkkxMnn3kwewt6l9R4Or96tYZYayPqeU\nKYboSyFwg2P47gb1IZO8Hr4EovEqXB8YA8zCE/WXQ94wQ+mUQvY8lYOLBMD0\nFTfgurpyja/RAqnzmTgsCBd1VK4jb9KHB8u5fiRPCfy6+7mmad5szKiYvHfJ\nX70XagrTAePpfsY0hpUu6VxxcfEn5GwRmD6uiU8YnTxQUJAbOndqtYX2wEMf\nhXNji9C3grAKRckYWCT3ZVsHqMxBaNKFfWp/y/WIqkS8SbhIY3ai9rUvWweo\nqwL25g0Sbx/XVU5HwfOUYk1wBlIUc/3g2He4U8v2W8bbYxzg0llmPPiHNxVk\nI48B2dOcX6v6zD7pekzMZU4XVFeqvLQOfiacoSPiR6VudkbqVXIf4pN11Cb7\nIU7k7K1Lmg4rmZQ/HDr5KjKPgikM6HF2huzDm5fIDVlpPFnNvlum1yhPNyej\nCMNG\r\n=45UW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC7hlCJXrwsCOB/p4t1Guwp7C20XlP7oxnnInHIOa9+XAiBCaRUGrG8O3abNMBiqu9JCxNa3RPDraRHDhfT+gMRkag=="}]},"_npmUser":{"name":"browndragon","email":"browndragon@googlegroups.com"},"directories":{},"maintainers":[{"name":"browndragon","email":"browndragon@googlegroups.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ecs_0.0.12_1611627098418_0.825654749940625"},"_hasShrinkwrap":false},"0.0.13":{"name":"@browndragon/ecs","version":"0.0.13","description":"An entity-component-system (intended for phaser but this contains no game logic)","author":{"name":"Brown Dragon","email":"browndragon@googlegroups.com"},"homepage":"https://github.com/browndragon/lair#readme","license":"MIT","main":"lib/index.js","module":"src/index.js","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/browndragon/lair.git"},"scripts":{"test":"echo \"Error: run tests from root\" && exit 1"},"bugs":{"url":"https://github.com/browndragon/lair/issues"},"dependencies":{"@browndragon/collections":"^0.0.13"},"gitHead":"afd8869c326ac4627b8482777bcec511cecd9d6c","_id":"@browndragon/ecs@0.0.13","_nodeVersion":"14.4.0","_npmVersion":"lerna/3.22.1/node@v14.4.0+x64 (darwin)","dist":{"integrity":"sha512-etjQlJErSblRsfTtsph0TFR0yJb8cwxOlRDAVwy5tcUaW+NQLRAlgIHtSsX1o6Ld98rcW6tQtwmBu4IYWmHWAg==","shasum":"3f971ed8219539cc08fa69fc26335f7becd0381b","tarball":"https://registry.npmjs.org/@browndragon/ecs/-/ecs-0.0.13.tgz","fileCount":7,"unpackedSize":15044,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEFV2CRA9TVsSAnZWagAAnEgP+wf1w3x1QAXta9IANKSm\nHDoZqozS80mr8rEbYQZU4QzvCQ6jSgAsWBhasM7tOHWbkjL8bSb51221GPOe\nrn7H7vwFLpMDA5t6xiMxTjhPEiaqiXvha7uL8fvc+WQXKH0DWNBurU4/Nu2B\n49OvFwlEaZLhEPjD7ogf7r+qzOg//v1oKuOnyTEaSqUmExNzcEb12CCcX1Hn\nwMNTi/WkieZIIqCvyy3pJ3dOM/jZJnw+qglxnl4odow+tnZ585a51pPyR/9P\nSkdnLnbYZsMTIJ9bc6AWXX9v8pSTIuO0jJaDjUOIM/humB9jdyCNBclQLZpZ\nT2Qr47QE3N0TfmktL4dDxng9qQB0EMKyE7aLfT0ms3bmEAsLDcgS/lQNXU31\nuCYisearlFjYMXjSgm6J/yibzSyKseQ0aeRg4gt8I/slofftfuF9YPRDxuTT\np3al06+BKcPmMgApbskD5mrSNQGLo5Uuc4LiAJgeNvgZ72v2Rn7zXAwr08qF\njlDF6LBVQ+cTlFqdJMLTFJH/ty3hzqGXrZDfvvsCdvD5GyGVAZUgiPcUYNeH\n7amGPGGGtrRigfPWIZuCqKYNTKWr+q8Qzc9l4ztZWH406nZRs96uqoYKoyOn\nRnjggkmKUf/8lQ4lW3VKsmzGyDASZXvql+kwNGhos5MhmZTqjcvOlYU/0L23\nkHRh\r\n=QA8B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMYDqkesnMTwy1LDomGtricgU/C9C3TWFk+VP3mMzOlgIhAN4jEq4Pqtw2R76jSoM/RzoOSgFo53fvYsQbgy/9VwT0"}]},"_npmUser":{"name":"browndragon","email":"browndragon@googlegroups.com"},"directories":{},"maintainers":[{"name":"browndragon","email":"browndragon@googlegroups.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ecs_0.0.13_1611683190328_0.3789547475364332"},"_hasShrinkwrap":false}},"time":{"created":"2020-09-24T20:58:19.554Z","0.0.4":"2020-09-24T20:58:19.695Z","modified":"2022-04-04T20:46:26.294Z","0.0.5":"2020-09-24T21:37:52.915Z","0.0.6":"2020-09-24T21:49:49.886Z","0.0.7-alpha.0":"2020-09-24T21:57:42.027Z","0.0.7":"2020-09-25T18:15:41.493Z","0.0.8":"2020-10-08T17:41:52.773Z","0.0.9":"2020-10-08T19:39:17.007Z","0.0.10":"2020-10-20T17:43:02.702Z","0.0.11":"2020-10-20T18:39:00.672Z","0.0.12":"2021-01-26T02:11:38.566Z","0.0.13":"2021-01-26T17:46:30.478Z"},"maintainers":[{"name":"browndragon","email":"browndragon@googlegroups.com"}],"description":"An entity-component-system (intended for phaser but this contains no game logic)","homepage":"https://github.com/browndragon/lair#readme","repository":{"type":"git","url":"git+https://github.com/browndragon/lair.git"},"author":{"name":"Brown Dragon","email":"browndragon@googlegroups.com"},"bugs":{"url":"https://github.com/browndragon/lair/issues"},"license":"MIT","readme":"# `@browndragon/ecs`\n\nA generic(ish) [entity/component/system](https://en.wikipedia.org/wiki/Entity_component_system) library intended for [phaser.io](phaser.io).\n\nThis package doesn't actually implement the phaser.io bindings however; see `npm i @browndragon/phaser-ecs`.\n\nEntities and components are merged (so entities are bags of data).\n\nSystems are standalone; \n\n> Note: Currently unchanged vs updated tracking is up to you. Your test method can return falsey (but NOT undefined) to indicate unchanged. Returning undefined indicates unsubscribe.\n> In the future, it's possible the test value returned will be snapshotted/diffed to determine change.\n\n## Usage\n\n```js\n// src/greeter.test.js\n\nimport { test, expect } from '@jest/globals';\nimport {Registry, System} from '.';  // '@browndragon/ecs'; <-- this is a unit test so I can't write that!\n\ntest('Greeter', () => {\n    // For testing purposes, this is my console.\n    let console = {\n        c: [],\n        log(x) { this.c.push(x) },\n        get calls() { let c = this.c; this.c = []; return c; },\n    };\n    class Greeter extends System {\n        test(x) {return typeof(x) == 'string'}\n        update() {\n            for (let x of this.context.removed) {\n                console.log(`Goodbye, ${x}!`)\n            }\n            for (let x of this.context.added) {\n                console.log(`Hello, ${x}!`);\n            }\n        }\n    }\n    class Replacer extends System {\n        test(x) {return typeof(x) == 'string' && !x.startsWith('replaced')}\n        update() {\n            for (let x of this.context.added) {\n                // Strings aren't mutable. If these were objects, we could modify the object then re-observe it; exercise to the reader! Instead, we'll forcibly remove it and then add it back.\n                this.context.remove(x);\n                this.context.observe(`replaced${x}`);\n            }\n        }\n    }\n    class Updated extends System {\n        test(x) { return typeof(x) == 'string' }\n        update() {\n            if (this.context.updated.size > 0) {\n                console.log(`Still here, ${[...this.context.updated]}?`);\n            }\n        }\n    }\n    let registry = new Registry();\n    registry.register(Greeter).register(Replacer).register(Updated);\n\n    registry.observe(7);\n    registry.update();\n    // Nobody is listening to boring _numbers_.\n    expect(console.calls).toEqual([]);\n\n    // Observe an apple, then do a few updates and watch each system fire.\n    registry.observe('apple');\n    registry.update();\n    expect(console.calls).toEqual(['Hello, apple!']);\n    registry.update();\n    expect(console.calls).toEqual([\n        'Goodbye, apple!',\n        'Hello, replacedapple!'\n    ]);\n    registry.update();\n    expect(console.calls).toEqual([]);\n\n    // What if there are two (more) entities?\n    registry.observe('banana');\n    registry.observe('cherry');\n    registry.update();\n    expect(console.calls).toEqual(['Hello, banana!', 'Hello, cherry!']);\n    registry.update();\n    expect(console.calls).toEqual([\n        'Goodbye, banana!', 'Goodbye, cherry!',\n        'Hello, replacedbanana!', 'Hello, replacedcherry!'\n    ]);\n    registry.update();\n    expect(console.calls).toEqual([]);\n\n    // What about an entity we've seen before?\n    registry.observe('replacedbanana')\n    registry.update();\n    expect(console.calls).toEqual(['Still here, replacedbanana?']);\n    registry.update();\n    expect(console.calls).toEqual([]);\n\n    // What about the entity we started with, that's already been chewed up?\n    registry.observe('apple');\n    registry.update();\n    expect(console.calls).toEqual([\n        // We do greet it:\n        'Hello, apple!',\n        // ... then it gets transformed into `replacedapple`, which we've known about.\n        // On the next update, the greeter will get a chance to process this.\n        // So `Updated` gets a shot:\n        'Still here, replacedapple?'\n    ]);\n    registry.update();\n    // Is this unintuitive, that we would miss saying goodbye on the first pass?\n    // In theory you could split Greeter in half to enforce ordering, implement Updater\n    // in greeter (they *are* both logging, so they seem related...), or order the systems\n    // replacer/greeter/updater or greeter/updater/replacer to avoid this.\n    // It's down to your specific situation.\n    expect(console.calls).toEqual([\n        'Goodbye, apple!',\n    ]);\n});\n\n```\n","readmeFilename":"README.md"}