{"_id":"@brajkowski/connect4-logic","_rev":"14-2cfab797d7fec4ec57ecccd1c6e2a7ce","name":"@brajkowski/connect4-logic","dist-tags":{"beta":"1.0.3-beta.2","latest":"1.0.6"},"versions":{"1.0.0-beta.0":{"name":"@brajkowski/connect4-logic","version":"1.0.0-beta.0","author":{"name":"Brandon Rajkowski"},"license":"MIT","_id":"@brajkowski/connect4-logic@1.0.0-beta.0","maintainers":[{"name":"brajkowski","email":"npm@brajkowski.bulc.club"}],"dist":{"shasum":"a6df61eca336ae7bfe682ed97440129509095094","tarball":"https://registry.npmjs.org/@brajkowski/connect4-logic/-/connect4-logic-1.0.0-beta.0.tgz","fileCount":21,"integrity":"sha512-Ih4RZ27LsHWL7he1dGeddczjnC7ehHLEPajPlkomkHVB4jkgSQP8+5MDbMhdLxJ3pfDZFvEMFzN8CX4ALjgcNA==","signatures":[{"sig":"MEUCIFaJnrsVGWYWJ5zoSlkenDL/LvSRZn/sqMaFRIZV9a0BAiEA9OrkhhD2LYLi4GGvBCvxacp5IrW8xNYbHV6AxsQCogs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21733,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPEBRCRA9TVsSAnZWagAA9aYP/1I728kWvnaxr/o5sm1M\n30X6oSqEmzG3A5KmgbQsWk4QISRJQ6thYy+L6N8DI4tbDKcW6NtQh220UGDQ\nkL+ZxaKgF8aVVL/HH7CIMXrI5dHNVB0YjbJuHonlUd1I1Du/sgyBZTSdshgD\n0nacwwcgHe74C5DcsEbdEcVZrRnSC2TSBNjOIAMzBS6v9xYNRMcOeJ8Z9cER\nrNrjlGuvXVSqfJTIDTGskb+I4HWDTLyM33TMrCK23rZJFJYcfu4O4X89RyXb\n7BWUEXekRpfbAYEh7+yRJCQ+tS0CZnTz18eJEHClLhkIcJ6jZ9uNROzYCxUN\nfIpXciP0GC09as5iimcfKAP9nclHFady7OCXruADPgaDogFy9H2++lIqBh6U\n8wsW5X7uK/jCTpVjDNflJbID304vdYonoqOxpF5pmQBu+MASKskpZdUew3jy\nJpD/muuZIxIoMvmDMh3alhDKwezCnQ9iAjtBtw0gm2B1iSLyWc1qvAdgzzyn\nECwciRn1wCwzMrxylfNl1VGysJDGZ74uoGF7t0lLi41EOS3p/MmYZ1J5NiXS\nRN48BlaYY4Ft6ylF5IYml1AoSv5hjwqBsXiq2Ex7dSYUYzlSeGGFFnstlCWo\nS6d3q0wp8Lmowy6icn6GBDKhDoqP+pjX+314zjzkKUmD7nuAD33WS5OLJioB\n125M\r\n=I0GN\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testRegex":"(/test/.*|\\.(test|spec))\\.ts$","transform":{".ts":"ts-jest"},"moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"375adbcdb76c6ee2294ee4a560c59c72e77c3706","scripts":{"test":"jest","build":"rimraf ./dist && tsc"},"_npmUser":{"name":"brajkowski","email":"npm@brajkowski.bulc.club"},"_npmVersion":"6.14.4","description":"This library provides APIs for manipulating and querying a standard (7x6) game of connect 4.","directories":{},"_nodeVersion":"14.2.0","dependencies":{"big-integer":"^1.6.48"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","rimraf":"^3.0.2","ts-jest":"^26.4.4","typescript":"^4.1.3","@types/jest":"^26.0.20"},"_npmOperationalInternal":{"tmp":"tmp/connect4-logic_1.0.0-beta.0_1614561360694_0.8866001523703313","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.0-beta.1":{"name":"@brajkowski/connect4-logic","version":"1.0.0-beta.1","keywords":["connect4","logic","ts","typescript"],"author":{"name":"Brandon Rajkowski"},"license":"MIT","_id":"@brajkowski/connect4-logic@1.0.0-beta.1","maintainers":[{"name":"brajkowski","email":"npm@brajkowski.bulc.club"}],"homepage":"https://github.com/brajkowski/connect4-logic#readme","bugs":{"url":"https://github.com/brajkowski/connect4-logic/issues"},"dist":{"shasum":"668007f5bde569609b3544a42b8e62643d08c55c","tarball":"https://registry.npmjs.org/@brajkowski/connect4-logic/-/connect4-logic-1.0.0-beta.1.tgz","fileCount":21,"integrity":"sha512-wzS/qbQ4tbCO15QbplBfstE6RMmSCbN3y4+c3AzM9rhgx0yDix3EU5MZhB6vC5HS6O53WVTvTcW5W5suSRw2ZA==","signatures":[{"sig":"MEYCIQCptFDoBuf3YISDM7hk8bz/5yxwW/9pin2LWsxRxN86+gIhAL++1iWddkR1zVkU6ba0YqrRYZ16NmemWzOjsANY42gu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21920,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPESKCRA9TVsSAnZWagAAYKcQAKQyzsKZN9oNso/wos9X\nRvCsjiz7toCyJgnQSvrOdKi8Ll40eGYp91pQ2nNrn6Ve69Qai+M33Bw/eiUp\ndiEFTMA6vsbcWJCleg+36NzqTULcEXIwmFjkQdVP7OOvBS4Law0KXpdiqzYU\netM0hwVRGFi5UA9gKK0dN2pLRzymK8x07LyEFLEcGC9+jsha2EuqiUHfjHRG\nMB0Cy7kEEMgqC7Mq2wWFf85eh4hWtnJDBLya4LpxPZ1ekpVKQ9nVv1kMtr6l\nRouUxWxiSz8p9YhlikOd4kr/V7JdU5cy/hVkyNZ6PvOJZXlWZP8Ma05OxBTT\nB6FRIoPyAAsJYs2tdBt9UU3ymINZpbMsdVxWyzhntTSnGPgeNGi74ha8oK2t\nduUgOB9wWKH2K1d0tSsfRqbZP3GFHezGEpjI6rIivMGcsliRvYy7xVgAPbWO\n1o1P1J3nGnP0yVRZocRr1lgJmvW8x2lfRQTZRnhTngSj80ZTK+IGC2mz3tfa\nDlhMGBuE9Jtr2jCrayS+TQ8h2r1TdcL5EDvCh5kbU2iM3WM4nGRtlSocAiwh\nIzipxVQcsTO1xxjnY+E5x2XvXocc7UGURSaNP/Guxt8PERrHLlHgAlBC3Zdt\nwSTGq7sYHH+jj4fZnkWG9BrEWz+GPfxx/yU4546XnMtOY0cNRn7JzzqgXvqo\nzZRA\r\n=TL1S\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testRegex":"(/test/.*|\\.(test|spec))\\.ts$","transform":{".ts":"ts-jest"},"moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","readme":"# Connect 4 Logic\r\n\r\nThis library provides APIs for manipulating and querying a standard (7x6) game of connect 4.\r\n\r\n## Installation\r\n\r\nUsing npm:\r\n\r\n```\r\n$ npm i --save @brajkowski/connect4-logic\r\n```\r\n\r\n## Usage\r\n\r\n### Standard Behavior\r\n\r\nThe main class that should be used to manipulate and query the underlying game state is `Logic`.\r\n\r\nTo begin, instantiate an implementation of `Logic` (currently `BitboardLogic` is the only implementation):\r\n\r\n```ts\r\nconst logic: Logic = new BitboardLogic();\r\n```\r\n\r\nFrom there, you may perform queries on the game state such as:\r\n\r\n```ts\r\nlet column = 0;\r\nlet result: boolean = logic.canPlaceChip(column);\r\n```\r\n\r\nand place chips that belong to a player:\r\n\r\n```ts\r\nlet landedOnRow = logic.placeChip(Player.One, column); // returns 0.\r\nlandedOnRow = logic.placeChip(Player.Two, column); // returns 1.\r\n```\r\n\r\nThese operations prevent placing chips in non-existent columns (ie: out-of-bounds columns) as well as overflowing a column (ie: a column can only hold 6 chips).\r\n\r\nA basic game loop may look like:\r\n\r\n```ts\r\nconst logic: Logic = new BitboardLogic();\r\nlet activePlayer: Player = Player.One;\r\nfunction gameLoop() {\r\n  while (true) {\r\n    let column = promptActivePlayerForMove();\r\n    if (!logic.canPlaceChip(column)) {\r\n      continue;\r\n    }\r\n    logic.placeChip(activePlayer, column);\r\n    if (logic.didWin(activePlayer)) {\r\n      break;\r\n    }\r\n    swapActivePlayer();\r\n  }\r\n}\r\n```\r\n\r\n### Customized Behavior\r\n\r\nThe `Logic` class provides default connect 4 behavior (ie: chips fall to the bottom of a column and stack), but custom behavior can also be achieved by using the `PlayerState` class:\r\n\r\n```ts\r\nlet row = 2;\r\nlet column = 3;\r\nlogic.getPlayerState(Player.One).occupyPosition(row, column);\r\n```\r\n\r\nThe `PlayerState` operations allow for any chip placement, but are bounds-checked for valid row and column values and prevent duplicate chip placement (ie: trying to place another chip in a position that is already occupied).\r\n\r\n## Building from Source\r\n\r\nUsing npm:\r\n\r\n```\r\n$ npm run build\r\n```\r\n\r\nwill produce the compiled library under `/dist`.\r\n\r\nThe test suite may also be executed with npm:\r\n\r\n```\r\n$ npm test\r\n```\r\n\r\n## Future Plans\r\n\r\n- Generalize the solution to fit arbitrary game board dimensions\r\n","gitHead":"09313e9379acd13ace2a198875c736c208d41da5","scripts":{"test":"jest","build":"rimraf ./dist && tsc"},"_npmUser":{"name":"brajkowski","email":"npm@brajkowski.bulc.club"},"repository":{"url":"git+https://github.com/brajkowski/connect4-logic.git","type":"git"},"_npmVersion":"6.14.4","description":"This library provides APIs for manipulating and querying a standard (7x6) game of connect 4.","directories":{},"_nodeVersion":"14.2.0","dependencies":{"big-integer":"^1.6.48"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","rimraf":"^3.0.2","ts-jest":"^26.4.4","typescript":"^4.1.3","@types/jest":"^26.0.20"},"_npmOperationalInternal":{"tmp":"tmp/connect4-logic_1.0.0-beta.1_1614562442165_0.851554217002785","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.0":{"name":"@brajkowski/connect4-logic","version":"1.0.0","keywords":["connect4","logic","ts","typescript"],"author":{"name":"Brandon Rajkowski"},"license":"MIT","_id":"@brajkowski/connect4-logic@1.0.0","maintainers":[{"name":"brajkowski","email":"npm@brajkowski.bulc.club"}],"homepage":"https://github.com/brajkowski/connect4-logic#readme","bugs":{"url":"https://github.com/brajkowski/connect4-logic/issues"},"dist":{"shasum":"4e46f0e154eb70b820135c41580398d0be98b7cb","tarball":"https://registry.npmjs.org/@brajkowski/connect4-logic/-/connect4-logic-1.0.0.tgz","fileCount":21,"integrity":"sha512-VibYbj/ZNYlRGBy5Wn2rAYIXt5joAcpU9X0HH7cgZWNrYFV8bSF1M8CDXVcf5NEyfD+UyUtxxAqdkjUVksZHBg==","signatures":[{"sig":"MEQCIC81IZdMvov6Ued94dWU83pKcEdVQA3ikoiun87z9AXjAiBH+iAYrcyhZBSoQvI6iJ3RJW0NySonm6YclLOcfZjJKQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21913,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPEW+CRA9TVsSAnZWagAA7AEP/21jJwN9YFb80CvNHZmp\nBbZyEEW8L1tO3M0dKmrqmHYmi7ekJm/TYZTp8BrwDr6aD1egLESDcsfY95f0\nGrnA50G8Fwt7tTFX9khcpGWSsZ6YNiH5MqZDc+tW+QljCmsoYhD8tJrw9aEY\n7Cxp/IRBskvlQT3OPqidK9rf1/WddbHbCmZvphnGQF1OUqr0fjFVzJMnEmdU\n3i7PgIWusDcjfC8N5Ua2XIprjbNf1EENd5ykyN8v7A5LbnYew5J1ehg046LQ\net85JzlfEv1raE0y05Vj2EvjDIoAwOdYFrh2U9Y8v7oHA3Ff1bnMY5GsWO4/\nEKGAWwcS82c+5+forKRKQ8hOlb6LPbFaBCIvCRksbhfYv0iZqBkpszsblwuM\n6p63rZ1xWo967aOoDc/JC4LSm8RLMFrJvrI6KJywIOWAUV0L4sHJnmoHLXzm\nnzPAEu1w+VqGsYZf1pbMVRZWBW/n8JVR7haz3i3icQVwKR38fIJPe3nHdY3M\nio47ODIQgp7DauMCKAWcDRIGm6YrULgem5ctIn5FPCgYbpvk9Law1WTeEMCv\n1HGWshRCT5prmgi8V5ETvw913kSJIBlo5fK8mX2Uzv3ZHmGDKJvfE92jB1dq\noCAzgm89F6yZWos+o804aKjYuRrXiEOqicy0Ukj4NqXH/ekOihHlCoLCXX6B\nUOSP\r\n=/XC0\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testRegex":"(/test/.*|\\.(test|spec))\\.ts$","transform":{".ts":"ts-jest"},"moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"044bc2aeccc9a21cb9dd7802426bf9c89b33e74a","scripts":{"test":"jest","build":"rimraf ./dist && tsc"},"_npmUser":{"name":"brajkowski","email":"npm@brajkowski.bulc.club"},"repository":{"url":"git+https://github.com/brajkowski/connect4-logic.git","type":"git"},"_npmVersion":"6.14.4","description":"This library provides APIs for manipulating and querying a standard (7x6) game of connect 4.","directories":{},"_nodeVersion":"14.2.0","dependencies":{"big-integer":"^1.6.48"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","rimraf":"^3.0.2","ts-jest":"^26.4.4","typescript":"^4.1.3","@types/jest":"^26.0.20"},"_npmOperationalInternal":{"tmp":"tmp/connect4-logic_1.0.0_1614562749952_0.03696392181946573","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.1-beta.1":{"name":"@brajkowski/connect4-logic","version":"1.0.1-beta.1","keywords":["connect4","logic","ts","typescript"],"author":{"name":"Brandon Rajkowski"},"license":"MIT","_id":"@brajkowski/connect4-logic@1.0.1-beta.1","maintainers":[{"name":"brajkowski","email":"npm@brajkowski.bulc.club"}],"homepage":"https://github.com/brajkowski/connect4-logic#readme","bugs":{"url":"https://github.com/brajkowski/connect4-logic/issues"},"dist":{"shasum":"2f1153cedc58c385b0016f6621a7cfd46342b2eb","tarball":"https://registry.npmjs.org/@brajkowski/connect4-logic/-/connect4-logic-1.0.1-beta.1.tgz","fileCount":23,"integrity":"sha512-/OeJAgk8MZVs9FHTjzHQMS64k+B5zhK61V4AvTdThZYeWpc/t371W7Ax3gp8TW7/RAsPS+2GMjgMd81NGQgm+w==","signatures":[{"sig":"MEUCIAwUAZ0tLwd0jmN6AIVAVqgUqV8AaxPAcQ/kXNZMowA8AiEA07L+C6Ibz66ym2j4Gdv2ygz6uizflHJYLNTKWu/IsrI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWBqtCRA9TVsSAnZWagAA+AMQAIGeDAxBS1U9rMIJba91\nrICkiqFlIvkFuCszl9ea66yZGnRUX4/MdA3yiBBQFWgsGI4h4UfG8kzuFjdd\nLERSIQqwAMaiNOwTJvP6AxQjqOz297kLZTrwalGIy9cmntErBk8pWev68NgQ\n8XrPUna64RA2VftM/dEQKs5YUXw0QcGn7FaipBqIE5wBsDeVzIRZKLTRpC6F\nn+C5AjjX0rxT2sQ7g5QcQzISK1SmGgE3UyBsBwTVtsmE4NfDYuKvZvqUmNOB\n6bIhH9Ouv2qH7CxmA9JhoNbbkOxvoRf5Pk9L3+wS2icfUde/7NfSL7Vwv6Xx\nmwQT82p+ea3c1E6kXBOuxz0SSdmZ9PGOtpSdoYa9xtd64aWnt+Yf9ABSDzu2\nVwj5AVLVneDQriTPybPAMsz8CacM8lsqe7FnEJMTQ4QC/nn0+O42XGeFVKg3\nKl7oUD5fHDmxf3gnC5ixmDYn/HYtvCprFTdrZIvlIIXJ8JeTIe+dUanrkAEo\nhcsa2MpDqbTdY9x3bopPJUFhPL4TCQC3KRfv7kEbgbGpDXIaOXWUGooVh3uK\n69GeuFCN4kZ9BKUNK+nwIEgsnZZwPt3kPrrcI5aJFFCNMYmo4K8IUJF5UqrY\nhv+aaM8wRl20hPHMLEdXAYLQwmUjcgt7m3HgbtO1OuVbD3jdxLei+GcZsmhN\nYudX\r\n=JfR6\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testRegex":"(/test/.*|\\.(test|spec))\\.ts$","transform":{".ts":"ts-jest"},"moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","readme":"# Connect 4 Logic\n\n[![Build](https://github.com/brajkowski/connect4-logic/actions/workflows/build.yml/badge.svg)](https://github.com/brajkowski/connect4-logic/actions/workflows/build.yml)\n[![npm:latest](https://img.shields.io/npm/v/@brajkowski/connect4-logic/latest?color=limegreen&logo=npm)](https://www.npmjs.com/package/@brajkowski/connect4-logic)\n[![npm:beta](https://img.shields.io/npm/v/@brajkowski/connect4-logic/beta?logo=npm)](https://www.npmjs.com/package/@brajkowski/connect4-logic)\n[![codecov](https://codecov.io/gh/brajkowski/connect4-logic/branch/main/graph/badge.svg?token=ID99K7U143)](https://codecov.io/gh/brajkowski/connect4-logic)\n[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)\n\nThis library provides APIs for manipulating and querying a standard (7x6) game of connect 4.\n\n## Installation\n\nUsing npm:\n\n```\n$ npm i --save @brajkowski/connect4-logic\n```\n\n## Usage\n\n### Standard Behavior\n\nThe main class that should be used to manipulate and query the underlying game state is `Logic`.\n\nTo begin, instantiate an implementation of `Logic` (currently `BitboardLogic` is the only implementation):\n\n```ts\nconst logic: Logic = new BitboardLogic();\n```\n\nFrom there, you may perform queries on the game state such as:\n\n```ts\nlet column = 0;\nlet result: boolean = logic.canPlaceChip(column);\n```\n\nand place chips that belong to a player:\n\n```ts\nlet landedOnRow = logic.placeChip(Player.One, column); // returns 0.\nlandedOnRow = logic.placeChip(Player.Two, column); // returns 1.\n```\n\nThese operations prevent placing chips in non-existent columns (ie: out-of-bounds columns) as well as overflowing a column (ie: a column can only hold 6 chips).\n\nA basic game loop may look like:\n\n```ts\nconst logic: Logic = new BitboardLogic();\nlet activePlayer: Player = Player.One;\nfunction gameLoop() {\n  while (true) {\n    let column = promptActivePlayerForMove();\n    if (!logic.canPlaceChip(column)) {\n      continue;\n    }\n    logic.placeChip(activePlayer, column);\n    if (logic.didWin(activePlayer)) {\n      break;\n    }\n    swapActivePlayer();\n  }\n}\n```\n\n### Customized Behavior\n\nThe `Logic` class provides default connect 4 behavior (ie: chips fall to the bottom of a column and stack), but custom behavior can also be achieved by using the `PlayerState` class:\n\n```ts\nlet row = 2;\nlet column = 3;\nlogic.getPlayerState(Player.One).occupyPosition(row, column);\n```\n\nThe `PlayerState` operations allow for any chip placement, but are bounds-checked for valid row and column values and prevent duplicate chip placement (ie: trying to place another chip in a position that is already occupied).\n\n## Building from Source\n\nUsing npm:\n\n```\n$ npm run build\n```\n\nwill produce the compiled library under `/dist`.\n\nThe test suite may also be executed with npm:\n\n```\n$ npm test\n```\n\n## Future Plans\n\n- Generalize the solution to fit arbitrary game board dimensions\n","gitHead":"39eb143bb606d9bbb5dec1f688787c62dc95c9f7","release":{"branches":["main",{"name":"beta","prerelease":true}]},"scripts":{"test":"jest --coverage","build":"rimraf ./dist && tsc"},"_npmUser":{"name":"brajkowski","email":"npm@brajkowski.bulc.club"},"repository":{"url":"git+https://github.com/brajkowski/connect4-logic.git","type":"git"},"_npmVersion":"6.14.11","description":"This library provides APIs for manipulating and querying a standard (7x6) game of connect 4.","directories":{},"_nodeVersion":"14.16.0","dependencies":{"big-integer":"^1.6.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","rimraf":"^3.0.2","ts-jest":"^26.4.4","typescript":"^4.1.3","@types/jest":"^26.0.20","semantic-release":"^17.4.2"},"_npmOperationalInternal":{"tmp":"tmp/connect4-logic_1.0.1-beta.1_1616386733088_0.7763274178517079","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.1":{"name":"@brajkowski/connect4-logic","version":"1.0.1","keywords":["connect4","logic","ts","typescript"],"author":{"name":"Brandon Rajkowski"},"license":"MIT","_id":"@brajkowski/connect4-logic@1.0.1","maintainers":[{"name":"brajkowski","email":"npm@brajkowski.bulc.club"}],"homepage":"https://github.com/brajkowski/connect4-logic#readme","bugs":{"url":"https://github.com/brajkowski/connect4-logic/issues"},"dist":{"shasum":"15800b94e26795d291834754f49adbf5e28a844a","tarball":"https://registry.npmjs.org/@brajkowski/connect4-logic/-/connect4-logic-1.0.1.tgz","fileCount":23,"integrity":"sha512-J0cxVdqZBHG8ZFaqU7Y/Y2cwNm2HXak7Q7sqQxuVnI1tsJv0epqHZRPvFkh8kNbX/C7x43HdV8FjRZEvecqLog==","signatures":[{"sig":"MEUCIQDE4zeoKBB0yjZxjPcY6DkE/eatttf7yyboecgqfLhBvgIgS5zW78TXrNpae5c+Ca6QjrZKvpORpdPo6oPWcEv+5Sk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23229,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgoCMSCRA9TVsSAnZWagAAc+AP/2eSziMHEVvOr//hUm9y\n1NfauzJP8yVl5G29h/tHUpf1g7FCFp/PfnCu/7FOn0hNw5lXcMZisPJ5bgD3\nu0PqzAEdBLd0O7gPUm86A0uRdN/3G169n10P9bhNqWsQZiyD82wFF5aj2fTQ\njPVz5z1ebeVfYHAiMNpKf92rrJscKmpOjAIJHcf3PFjkle1LoT4qS1OceAsl\nWjscPSgleEk7Ad3VT+qhrBgmN5NlzGR9glzSix6WUeH3ClakNwoq2oREmja2\nRWTfqyL2GY7dLYbJANBUfBVQs1t59CwTvJi/9NGk/bqWFsK1YRbEvHiECYwE\nTKwT6ZvMbDaWgbz+qxe0muvA0SfFidv7E4RK+T8DL1H8TpI5XQ4hJ1VgOmCT\nvy8Zv0hmKismGRDbBKWdixKaONgc4hXdbFeTwCPrMsZ0oxRjpbw8V8Ir0kx/\nyBzzXqjEBJTvWBPJ6W0TxGTaak9X8IJnJiSZuS+L3MSw/54JZmtGSV/bWZoG\nZtkx6skcCY+NPmDjST2Hp1BdXZk1RFTXZcZcMxn2CYy3qXX6drgbqVcTVdn3\nb0Y0ALbAbWUZbJyQiWoDsCnnCq/XzGu5URZuJ1UwWEJD1RO/S5DePqomUAqk\nB4roB/Qa59NkQbpwbhzzHaREb8WoYWrro0uYyWkbyZot66lneATTGCQeG971\nacZe\r\n=YUzu\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testRegex":"(/test/.*|\\.(test|spec))\\.ts$","transform":{".ts":"ts-jest"},"moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"4c525eed139d18f5a7da898289f680a4d72501b5","release":{"branches":["main",{"name":"beta","prerelease":true}]},"scripts":{"test":"jest --coverage","build":"rimraf ./dist && tsc"},"_npmUser":{"name":"brajkowski","email":"npm@brajkowski.bulc.club"},"repository":{"url":"git+https://github.com/brajkowski/connect4-logic.git","type":"git"},"_npmVersion":"6.14.11","description":"This library provides APIs for manipulating and querying a standard (7x6) game of connect 4.","directories":{},"_nodeVersion":"14.16.1","dependencies":{"big-integer":"^1.6.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","rimraf":"^3.0.2","ts-jest":"^26.4.4","typescript":"^4.1.3","@types/jest":"^26.0.20","semantic-release":"^17.4.2"},"_npmOperationalInternal":{"tmp":"tmp/connect4-logic_1.0.1_1621107473714_0.020457811885775223","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.2":{"name":"@brajkowski/connect4-logic","version":"1.0.2","keywords":["connect4","logic","ts","typescript"],"author":{"name":"Brandon Rajkowski"},"license":"MIT","_id":"@brajkowski/connect4-logic@1.0.2","maintainers":[{"name":"brajkowski","email":"npm@brajkowski.bulc.club"}],"homepage":"https://github.com/brajkowski/connect4-logic#readme","bugs":{"url":"https://github.com/brajkowski/connect4-logic/issues"},"dist":{"shasum":"6ff1f568bc85c4bbfbe6ce316c4b815559223fdf","tarball":"https://registry.npmjs.org/@brajkowski/connect4-logic/-/connect4-logic-1.0.2.tgz","fileCount":23,"integrity":"sha512-U1YVanece3y6rmiD7wIoNTWPRxGvyF62G/JEG9LHv1RKIhGAIdLxOiok3yfOqaS7r2LyGbsUBqCBM0Lc7oAnTw==","signatures":[{"sig":"MEUCIQDcnzR72dY8l64MKfTu/qowvHOZxfaab66qPMsWVPtReQIgMO5y812rGOrVXsAqudvy7TU3haKKzxvEE/o5eIKhlAE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23229,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgoCXACRA9TVsSAnZWagAAyToQAJ427Y5djqelfq/gFhAj\nKUBqcrQg+NyCUreMkFslQbRKo522KXj3+IcBdWTY3q/kqXON/tsFRtedjytF\nX4jDBc+MPyNmazyzbaTd8owJNcgKZ6+SPMQi7gYpTy6jzHkd4AdH6MWIkkRG\nQiSLpBRjdmF98apUvbnfMY+YlZgRHVXreiaOQLQZcVHj8Cy2Upy7ko3XwtcX\nu7Ddgetqs2DtaW5pwHw9X1Z+x+zvskCrTajV8unBz2VNGgIFz+0l5EZZbIhS\nuFqnt0CW27mY+NuS0qYB0g5WZK7FwXeIcgAyU/bF6ZEvh0tzM1XKu0cOhys3\np80eENYsd3bjtxGh86XKLMAa4Ar5VM5nb+sKlacxZn1WTjHlW3wZdKvGVKru\nzQenS4dyUfWhG0Z8Uv0VAmauJZimrLJ/xayWug4m/ecyIhJyyeymQ4+0R7I5\nV9aUuLD34nvehzX5RKawbmd1171igKOozR9hnDHX0lDbiQtOLEI1InJlPoBv\nGV7OjnKeeLTdHe5w8LHS2is8un3D7oMuCtPQ52U1JWCYgIW2BhRA4V0WkAcW\nU1vbr2hVSOW2NXz6AqVhjf1fGRxZYnMjU4jxRsF90lSVNmd7+nWvB5ekf4FW\n7+HT4IXj77wyqhUzn9Lprg38mpJ5wMe1WdS1d0m7X6TJzxVWyb9HDFWsc5IE\nfcS3\r\n=uj7F\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testRegex":"(/test/.*|\\.(test|spec))\\.ts$","transform":{".ts":"ts-jest"},"moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"ea767b7530f68fd3740c7acf8d84a082150f2e5e","release":{"branches":["main",{"name":"beta","prerelease":true}]},"scripts":{"test":"jest --coverage","build":"rimraf ./dist && tsc"},"_npmUser":{"name":"brajkowski","email":"npm@brajkowski.bulc.club"},"repository":{"url":"git+https://github.com/brajkowski/connect4-logic.git","type":"git"},"_npmVersion":"6.14.11","description":"This library provides APIs for manipulating and querying a standard (7x6) game of connect 4.","directories":{},"_nodeVersion":"14.16.1","dependencies":{"big-integer":"^1.6.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","rimraf":"^3.0.2","ts-jest":"^26.4.4","typescript":"^4.1.3","@types/jest":"^26.0.20","semantic-release":"^17.4.2"},"_npmOperationalInternal":{"tmp":"tmp/connect4-logic_1.0.2_1621108160329_0.07168739290419146","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.3-beta.1":{"name":"@brajkowski/connect4-logic","version":"1.0.3-beta.1","keywords":["connect4","logic","ts","typescript"],"author":{"name":"Brandon Rajkowski"},"license":"MIT","_id":"@brajkowski/connect4-logic@1.0.3-beta.1","maintainers":[{"name":"brajkowski","email":"npm@brajkowski.bulc.club"}],"homepage":"https://github.com/brajkowski/connect4-logic#readme","bugs":{"url":"https://github.com/brajkowski/connect4-logic/issues"},"dist":{"shasum":"20b89aa3fe7dc13404aea9aa407d449a971e34a8","tarball":"https://registry.npmjs.org/@brajkowski/connect4-logic/-/connect4-logic-1.0.3-beta.1.tgz","fileCount":23,"integrity":"sha512-JvW9NlcECbJpUDMhhqhsILU5YD7CXa1iz+KQ+x1xwkdOtYIYOsnnEVD5MStqjCImNUqU/nz0ldJ8/rQawtOOyA==","signatures":[{"sig":"MEUCIQC4unRfndUn48E+ncIRafX+tLpDBApog9/vyud2YNe0sgIgNpYHsh48Z95WYRL/czRsghKeEP6ft35T9Xqr2nwCcv4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23236,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgoCc0CRA9TVsSAnZWagAAs8MP/jvwphnvToXyVo8SWEuB\n3fJMn5H+C+W12MfYvU/yxqXfel2QiFjTv71D5I+MCzdSNYtc52cTwqxs8yxh\nnXEYSiWGuymjQa7odAbEIGxcmJ3ECcGH/KNOuJ6n0BnA4sg7qEttJdbWxDFp\nil8uNbBqLB8LrZNCjZCl04D0HukENbBQA3NmeiRMdMb5sZk3OZF40WEKY6NZ\ngf0VP1pA0QaVr4M9rxwrlT2JBec5c6F6WT/wHtDdV8OHGsPNqu2bZzdtSQH0\nKvqxYTdBk1Li0Cr0RH/94LangBLRvOT3qFg4OKevFzJrl8R3EZOvpu1vmcKL\nfCt4VLIJBuGRtmVJ0tnMPBrN2u0VTbozFk2EasXqX+h5b5lBte8hfTAzYX9n\nk3BPowQOQlc6Idgh8Bm/upE9gWEmOlqRoOYm1ukhCtEywAyStcQNw/yctHDg\nq3BkdYwnw8120FvArpRYPTNJ3vNMZwhxg1D7MfEzwEDoG0sdGIf4Fhc9oBQ1\nWQwS0qYgd4504mIZSEiqFyAZc5yKIHkPB1tsSI+wdnJt9r3GOwtR4Cna6aAI\nwjPHTl/DIbxRPaj/HM4qyenhQAfHA7WXETGFNrogsYHtbZMxpNNc1r+xbyr3\nfBOKHdXPWDH5zEDiF1Ie0F+lxMyr2okeCxqpNAgv4Jz//YglCGiRRuRYirSF\nudHd\r\n=c3Zu\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testRegex":"(/test/.*|\\.(test|spec))\\.ts$","transform":{".ts":"ts-jest"},"moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","readme":"# Connect 4 Logic\n\n[![Build](https://github.com/brajkowski/connect4-logic/actions/workflows/build.yml/badge.svg)](https://github.com/brajkowski/connect4-logic/actions/workflows/build.yml)\n[![npm:latest](https://img.shields.io/npm/v/@brajkowski/connect4-logic/latest?color=limegreen&logo=npm)](https://www.npmjs.com/package/@brajkowski/connect4-logic)\n[![npm:beta](https://img.shields.io/npm/v/@brajkowski/connect4-logic/beta?logo=npm)](https://www.npmjs.com/package/@brajkowski/connect4-logic)\n[![codecov](https://codecov.io/gh/brajkowski/connect4-logic/branch/main/graph/badge.svg?token=ID99K7U143)](https://codecov.io/gh/brajkowski/connect4-logic)\n[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)\n\nThis library provides APIs for manipulating and querying a standard (7x6) game of connect 4.\n\n## Installation\n\nUsing npm:\n\n```\n$ npm i --save @brajkowski/connect4-logic\n```\n\n## Usage\n\n### Standard Behavior\n\nThe main class that should be used to manipulate and query the underlying game state is `Logic`.\n\nTo begin, instantiate an implementation of `Logic` (currently `BitboardLogic` is the only implementation):\n\n```ts\nconst logic: Logic = new BitboardLogic();\n```\n\nFrom there, you may perform queries on the game state such as:\n\n```ts\nlet column = 0;\nlet result: boolean = logic.canPlaceChip(column);\n```\n\nand place chips that belong to a player:\n\n```ts\nlet landedOnRow = logic.placeChip(Player.One, column); // returns 0.\nlandedOnRow = logic.placeChip(Player.Two, column); // returns 1.\n```\n\nThese operations prevent placing chips in non-existent columns (ie: out-of-bounds columns) as well as overflowing a column (ie: a column can only hold 6 chips).\n\nA basic game loop may look like:\n\n```ts\nconst logic: Logic = new BitboardLogic();\nlet activePlayer: Player = Player.One;\nfunction gameLoop() {\n  while (true) {\n    let column = promptActivePlayerForMove();\n    if (!logic.canPlaceChip(column)) {\n      continue;\n    }\n    logic.placeChip(activePlayer, column);\n    if (logic.didWin(activePlayer)) {\n      break;\n    }\n    swapActivePlayer();\n  }\n}\n```\n\n### Customized Behavior\n\nThe `Logic` class provides default connect 4 behavior (ie: chips fall to the bottom of a column and stack), but custom behavior can also be achieved by using the `PlayerState` class:\n\n```ts\nlet row = 2;\nlet column = 3;\nlogic.getPlayerState(Player.One).occupyPosition(row, column);\n```\n\nThe `PlayerState` operations allow for any chip placement, but are bounds-checked for valid row and column values and prevent duplicate chip placement (ie: trying to place another chip in a position that is already occupied).\n\n## Building from Source\n\nUsing npm:\n\n```\n$ npm run build\n```\n\nwill produce the compiled library under `/dist`.\n\nThe test suite may also be executed with npm:\n\n```\n$ npm test\n```\n\n## Future Plans\n\n- Generalize the solution to fit arbitrary game board dimensions\n","gitHead":"6de92bf773a3d2f9fbf147f9b4fc8e370e0ef802","release":{"branches":["main",{"name":"beta","prerelease":true}]},"scripts":{"test":"jest --coverage","build":"rimraf ./dist && tsc"},"_npmUser":{"name":"brajkowski","email":"npm@brajkowski.bulc.club"},"repository":{"url":"git+https://github.com/brajkowski/connect4-logic.git","type":"git"},"_npmVersion":"6.14.11","description":"This library provides APIs for manipulating and querying a standard (7x6) game of connect 4.","directories":{},"_nodeVersion":"14.16.1","dependencies":{"big-integer":"^1.6.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","rimraf":"^3.0.2","ts-jest":"^26.4.4","typescript":"^4.1.3","@types/jest":"^26.0.20","semantic-release":"^17.4.2"},"_npmOperationalInternal":{"tmp":"tmp/connect4-logic_1.0.3-beta.1_1621108532327_0.5217143604160361","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.3-beta.2":{"name":"@brajkowski/connect4-logic","version":"1.0.3-beta.2","keywords":["connect4","logic","ts","typescript"],"author":{"name":"Brandon Rajkowski"},"license":"MIT","_id":"@brajkowski/connect4-logic@1.0.3-beta.2","maintainers":[{"name":"brajkowski","email":"npm@brajkowski.bulc.club"}],"homepage":"https://github.com/brajkowski/connect4-logic#readme","bugs":{"url":"https://github.com/brajkowski/connect4-logic/issues"},"dist":{"shasum":"820f55f879eff52e02ea4b72457f833c1f8686e8","tarball":"https://registry.npmjs.org/@brajkowski/connect4-logic/-/connect4-logic-1.0.3-beta.2.tgz","fileCount":23,"integrity":"sha512-FgDNN5NX5mtjmNusVj3EaX4FN3URN6iGoKY0djVhgAA+yXNg7I3bqc8NxtWQiiHh2qfOdZU3eUUapbjlvYhJNg==","signatures":[{"sig":"MEUCIQDlWq78J9hV3w2yza8+KlsObgZhUBqoiExrD9u74p/vAQIgNcBXF1AE9IvVjoe8zDXuFtCzlJlIPOirElO6fju92rs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23236,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgoDAXCRA9TVsSAnZWagAAjCcQAJ8agFk3YY+rhC926JP4\n4nkgqLaCEoi2jyHy079LO8I+/e0lu86lZy1SHvhRaS49pJYzPQBx5MwycpSg\nm2SkOFMFlrzzlq2lqOgcud7wjL1A1kRErxkJ/xvc5a8pWg8RiBuBAxQOvglT\nBQFOeZRx1uFzHkAm0gvlgi0ABOqynLyemz1gHoss5W7uWbypUHU1S4xDZiiA\nnAvYrdy1P8Hh2jj/BtFDbn9cszy+eEalsv2LW3ftL+DDJfpCU2gMDWKxVhTz\n5Su3zli2th+qPmzKQ0Ts0RiJU7roQ/v9VgLAuS8GnsjcIQuhxZopfDljJH09\nbKcNisf2nD+CSH8Kdc8Ynps4XDsTwl9yaFTQeWgmRR0g7p/gJyNOqZPt/RTg\nuPpHguDVeDPPQxdqJcUsFY739vT4Vw4PYJ25oYRpa+I63bEJe4WO5Jzn7SVT\nn1jzpzvvTQDK4SBwKRlwpo/GmyMTtz/cYgQ5frlS9e6lMOZ8CGYK46KPP3Tg\n2iv6TKREXr5n659z5F1R2I2bibkgNQLajt+/nQl6awHGJersmmElHFWnsPg+\noUS3tZHbDTizNEVjmckHTFci1+CsekzqtExuahfrWf4U/fSA4P33NKRO1kp5\n0PV3kJHlvqLCdjbk5ogYOO0Hz5Bhyzg0JNKz9FoW2FpfD+A1ndavMgSQ6xr0\nxv8L\r\n=/gwV\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testRegex":"(/test/.*|\\.(test|spec))\\.ts$","transform":{".ts":"ts-jest"},"moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","readme":"# Connect 4 Logic\n\n[![Build](https://github.com/brajkowski/connect4-logic/actions/workflows/build.yml/badge.svg)](https://github.com/brajkowski/connect4-logic/actions/workflows/build.yml)\n[![npm:latest](https://img.shields.io/npm/v/@brajkowski/connect4-logic/latest?color=limegreen&logo=npm)](https://www.npmjs.com/package/@brajkowski/connect4-logic)\n[![npm:beta](https://img.shields.io/npm/v/@brajkowski/connect4-logic/beta?logo=npm)](https://www.npmjs.com/package/@brajkowski/connect4-logic)\n[![codecov](https://codecov.io/gh/brajkowski/connect4-logic/branch/main/graph/badge.svg?token=ID99K7U143)](https://codecov.io/gh/brajkowski/connect4-logic)\n[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)\n\nThis library provides APIs for manipulating and querying a standard (7x6) game of connect 4.\n\n## Installation\n\nUsing npm:\n\n```\n$ npm i --save @brajkowski/connect4-logic\n```\n\n## Usage\n\n### Standard Behavior\n\nThe main class that should be used to manipulate and query the underlying game state is `Logic`.\n\nTo begin, instantiate an implementation of `Logic` (currently `BitboardLogic` is the only implementation):\n\n```ts\nconst logic: Logic = new BitboardLogic();\n```\n\nFrom there, you may perform queries on the game state such as:\n\n```ts\nlet column = 0;\nlet result: boolean = logic.canPlaceChip(column);\n```\n\nand place chips that belong to a player:\n\n```ts\nlet landedOnRow = logic.placeChip(Player.One, column); // returns 0.\nlandedOnRow = logic.placeChip(Player.Two, column); // returns 1.\n```\n\nThese operations prevent placing chips in non-existent columns (ie: out-of-bounds columns) as well as overflowing a column (ie: a column can only hold 6 chips).\n\nA basic game loop may look like:\n\n```ts\nconst logic: Logic = new BitboardLogic();\nlet activePlayer: Player = Player.One;\nfunction gameLoop() {\n  while (true) {\n    let column = promptActivePlayerForMove();\n    if (!logic.canPlaceChip(column)) {\n      continue;\n    }\n    logic.placeChip(activePlayer, column);\n    if (logic.didWin(activePlayer)) {\n      break;\n    }\n    swapActivePlayer();\n  }\n}\n```\n\n### Customized Behavior\n\nThe `Logic` class provides default connect 4 behavior (ie: chips fall to the bottom of a column and stack), but custom behavior can also be achieved by using the `PlayerState` class:\n\n```ts\nlet row = 2;\nlet column = 3;\nlogic.getPlayerState(Player.One).occupyPosition(row, column);\n```\n\nThe `PlayerState` operations allow for any chip placement, but are bounds-checked for valid row and column values and prevent duplicate chip placement (ie: trying to place another chip in a position that is already occupied).\n\n## Building from Source\n\nUsing npm:\n\n```\n$ npm run build\n```\n\nwill produce the compiled library under `/dist`.\n\nThe test suite may also be executed with npm:\n\n```\n$ npm test\n```\n\n## Future Plans\n\n- Generalize the solution to fit arbitrary game board dimensions\n","gitHead":"ff620dc822fb4b5edf5178b56227fe6972bc6ba9","release":{"branches":["main",{"name":"beta","prerelease":true}]},"scripts":{"test":"jest --coverage","build":"rimraf ./dist && tsc"},"_npmUser":{"name":"brajkowski","email":"npm@brajkowski.bulc.club"},"repository":{"url":"git+https://github.com/brajkowski/connect4-logic.git","type":"git"},"_npmVersion":"7.13.0","description":"This library provides APIs for manipulating and querying a standard (7x6) game of connect 4.","directories":{},"_nodeVersion":"14.16.1","dependencies":{"big-integer":"^1.6.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","rimraf":"^3.0.2","ts-jest":"^26.4.4","typescript":"^4.1.3","@types/jest":"^26.0.20","semantic-release":"^17.4.2"},"_npmOperationalInternal":{"tmp":"tmp/connect4-logic_1.0.3-beta.2_1621110807410_0.0066600834667061015","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.3":{"name":"@brajkowski/connect4-logic","version":"1.0.3","keywords":["connect4","logic","ts","typescript"],"author":{"name":"Brandon Rajkowski"},"license":"MIT","_id":"@brajkowski/connect4-logic@1.0.3","maintainers":[{"name":"brajkowski","email":"npm@brajkowski.bulc.club"}],"homepage":"https://github.com/brajkowski/connect4-logic#readme","bugs":{"url":"https://github.com/brajkowski/connect4-logic/issues"},"dist":{"shasum":"56cc12ddba33ce1bb17fb57268b32e5ff4778e0d","tarball":"https://registry.npmjs.org/@brajkowski/connect4-logic/-/connect4-logic-1.0.3.tgz","fileCount":23,"integrity":"sha512-ZTBaH+BG5tpeRr2h5WutCbNFcuCjvBObyGMyfLd7BLEHaRxi9bjrvMhfOmNymt+rNExh2P/DQxCZajjYQI/Ovg==","signatures":[{"sig":"MEUCIC6mmGJDBg2KUeikQPmEyJktiZdT64QaJWAQ/46bFZzqAiEAhYF70xcFGmh8TP4vWKQGhjVM/DUux1m/P+nZ/nahhpI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23229,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgoDCMCRA9TVsSAnZWagAAjJUP/1XYKBwK/5VLKzJBRVa5\nIcomu1Quj064YJOwywcceZQwHUtwx4T6Gs9NA0qoWctZ5CnjR4YhoOtbjpWG\nNRoh2Q09vGemU5YCkEXAY7Bfxj8WOsnqPhJ5b7Bsb0AqE6SvkD9giqBfwiWN\nSTdxsz5m5aWkQmto9Rm2/RCk5aQPkSqG/TPui6AfnGAXCfaTnmq8Egbh3OUP\nsKPxUE0VFOBVcmUKNxMx1y7O88AGwfa4F4b4aXQsqBYva7yMMdei+FekCk/b\ncSpBoTJOISXtSEvGIz5ztnX1FahPP7IewGeJGyVMCP2uG/BIexbg39/f41fk\nomtqMpONN8Mp+eG0CIh6PAT+EFeD+9OoARH9Iorv6zzhBoILr8zlVeUkUbqx\nvHLMWNsE9dWbTykQahrBhwbECYfBcMgA6auRhAB3YCufevLFyijNEUqfm4oR\nnTWg4bY2cVyq5EHJhqyrmS8stKL288oARPyZtDHX3M6XruTTUhjcn5PbEsI2\nNB33ge/MaRz5/bQa6JQrBSojOxXoYQp6rkDBkCSkIR0LDS2jxT3J0N4QZttB\nudYkQEnH/wrBcV+izQLjxm7hELIrOpUqRXHlk945YGR2IbwRemKkN33+P9vf\nqFxpwqKWquxPsBe1CeP8WzUtcnuV1qc2erV28OiH6Mri2d9JS5jb5D+rCBka\nih5I\r\n=5LvG\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testRegex":"(/test/.*|\\.(test|spec))\\.ts$","transform":{".ts":"ts-jest"},"moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"d046a14a4e05273adbc4c55bea4fd6d9aee6ac36","release":{"branches":["main",{"name":"beta","prerelease":true}]},"scripts":{"test":"jest --coverage","build":"rimraf ./dist && tsc"},"_npmUser":{"name":"brajkowski","email":"npm@brajkowski.bulc.club"},"repository":{"url":"git+https://github.com/brajkowski/connect4-logic.git","type":"git"},"_npmVersion":"7.13.0","description":"This library provides APIs for manipulating and querying a standard (7x6) game of connect 4.","directories":{},"_nodeVersion":"14.16.1","dependencies":{"big-integer":"^1.6.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","rimraf":"^3.0.2","ts-jest":"^26.4.4","typescript":"^4.1.3","@types/jest":"^26.0.20","semantic-release":"^17.4.2"},"_npmOperationalInternal":{"tmp":"tmp/connect4-logic_1.0.3_1621110923992_0.5274065538002457","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.4":{"name":"@brajkowski/connect4-logic","version":"1.0.4","keywords":["connect4","logic","ts","typescript"],"author":{"name":"Brandon Rajkowski"},"license":"MIT","_id":"@brajkowski/connect4-logic@1.0.4","maintainers":[{"name":"brajkowski","email":"npm@brajkowski.bulc.club"}],"homepage":"https://github.com/brajkowski/connect4-logic#readme","bugs":{"url":"https://github.com/brajkowski/connect4-logic/issues"},"dist":{"shasum":"b04714a1b0a0a611566d13d24ae212f322a396ab","tarball":"https://registry.npmjs.org/@brajkowski/connect4-logic/-/connect4-logic-1.0.4.tgz","fileCount":21,"integrity":"sha512-IggN1oCdr5Yy8dHVPDLzkfklNg7t6Hf1WVmVirE7w74P8mkim/89V/s9w9cHctZt6D6ZcaswSxgx+yt4g/WRGw==","signatures":[{"sig":"MEUCIGRogpRDIBHP6yFz7KWZcM2iiist/iZOw/GdMo/WHzhNAiEAtFPe/m5OGVTk/ag7IOPKpF8XyjiEKt2zRK4rDzO7DWM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrc8YCRA9TVsSAnZWagAAoYMP/1f2HN9e0i/PH7CGZnyQ\ntEr7qApRG8/0ZZ+5gBXce1x0XFP0JZwJoQwVLTK+efGIkWjogg6kKeolcGGm\nWOZ0k77/NAsqq9I7KET82w/69A4ZJHmM82M0fmZs9pIAMTb4k+e7ugkLeD/i\nCNEKW3oHRIHwObZJEDYPYf9Bc74s3VFbyo+61M41tfnvUAlqsa3CvEfAWC3o\n2Ig2ZuIEcRKsHwBbpqsyIhuqyRk5sgRuzsBGwzyB1kXBr8raBsrEpCON2k0C\ntq4CXJDcjJgOnnjB66N76977DsmAQSnAMGyjTc43AGvKYsnX12QFpbECyVsZ\nYprtZWJzZcU7TZ+r5FRSRr8St0WQ1IqWUQkqwoL1Yfs9K44WVHropedCNqaf\nkYf5poGo2b37jzd24l2xIJg+NWtHUeBO/dhOlPkPF634FNrPGe57NPLSZcc+\nHHonweQOeGEu25CrifduQL/E73WNwiELpCIoyIwEGly8xFNxWdCckXyKhYZA\nyBVBpIUW1NmQuKX5KfarzASAjC7iRFT/Fpu1jWO3rxnRv7PH7fAWov+ME7/H\nVxRa1PJ47l8seX0xJOBNLtvbyeD1GxJsw/2SgKVo6DzLjdITPUxUGFGENlYh\nslcIJhKhnfdlaoxVtVdKxtrp9DnhwRrhEOnebRGbtAlCP2tYHWLId+A/J7rv\ngsHK\r\n=PK+a\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testRegex":"(/test/.*|\\.(test|spec))\\.ts$","transform":{".ts":"ts-jest"},"moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"6673fe5b106e240c95805a9aea0a3434f230213e","release":{"branches":["main",{"name":"beta","prerelease":true}]},"scripts":{"test":"jest --coverage","build":"rimraf ./dist && tsc"},"_npmUser":{"name":"brajkowski","email":"npm@brajkowski.bulc.club"},"repository":{"url":"git+https://github.com/brajkowski/connect4-logic.git","type":"git"},"_npmVersion":"7.13.0","description":"This library provides APIs for manipulating and querying a standard (7x6) game of connect 4.","directories":{},"_nodeVersion":"14.17.0","dependencies":{"big-integer":"^1.6.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","rimraf":"^3.0.2","ts-jest":"^26.4.4","typescript":"^4.1.3","@types/jest":"^26.0.20","semantic-release":"^17.4.2"},"_npmOperationalInternal":{"tmp":"tmp/connect4-logic_1.0.4_1622003478346_0.5577761051132133","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.5":{"name":"@brajkowski/connect4-logic","version":"1.0.5","keywords":["connect4","logic","ts","typescript"],"author":{"name":"Brandon Rajkowski"},"license":"MIT","_id":"@brajkowski/connect4-logic@1.0.5","maintainers":[{"name":"brajkowski","email":"npm@brajkowski.bulc.club"}],"homepage":"https://github.com/brajkowski/connect4-logic#readme","bugs":{"url":"https://github.com/brajkowski/connect4-logic/issues"},"dist":{"shasum":"ef1a09a7d16dffb0dcb0a5f1ab53ef46b3c02d05","tarball":"https://registry.npmjs.org/@brajkowski/connect4-logic/-/connect4-logic-1.0.5.tgz","fileCount":21,"integrity":"sha512-8RmNriVgk8WEIAOtzN9SDKN/MhCklyfZMYN8xifqeWhWy1NLNpJx++82Wb23FQ4lbIhWZPc0BcJI7I2krDaWLg==","signatures":[{"sig":"MEUCIQCagpmJp+qSrTxHM1595TYfFWIyxFK6Lj1RykVkGHCVJgIgC/xYb9oYUKED0Mp7m3M62tX/C2+F9ZeUdwStgFnrQug=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQqcLCRA9TVsSAnZWagAA/O8QAJkDEHzN/jhxQWbaEPWS\nfokiWhnw4c+rRgVd2+MlvNHDyHA10YBFjlg7VvWy8v0HyXINiaYl6rtqJvi7\nOAv8FWX3YadECpgehulUlZVwS9Max0w3WVtsysqKMwdy12uzexbtSsVcg/+L\nzjvbSngKB5hFGqInKwDisRfztuQQ42LS44ovO/GosKf5A0H8EEjlZjLE1UTY\nwdVkhk3LQSUnjhXqG5L7QpaZaIfZSoagKJB3w1gJBq4uMQxpvb/kpavS8Gmp\nJjaO+X84HKhDJ2MM7nf1Rmk1mBFM90nqVAGxJea3k0+fbPWXnh5BaFsiE8wt\nXqf8x/cnsxv0MykxD5SWTZJSDx7j0ofpPnM8EZuXPLjPIRSLAxhnH+QzI82M\nsW58sszxJ0LppJ/hT0HecyazmEwDmo5PgdQdVbiDiACPxJ6rU2mLdzt3WLvP\nIF6DlNlLNeNLk+K5sZi7hwRdpmSo0l92+rSEwGOPLsxH3K7BU49+gr8BSSiF\nDuBnjZPoQNhGVdsqA4467AU01RTaP4N2qEMOmfSpfKsdHyEXSoLPGk6BQD/I\nbmjhx4Km19EgiZZQ2PlP5PUnsm3m6cEr3I7/zH46fou2oZ2W9YazpeKggZ5w\n0HnjjlvxATKrdinN9V9+TBzrdgQTqw5Y7pLMH/c/z+tCDVYM18fjqJ04xhjc\n0u63\r\n=oQFs\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testRegex":"(/test/.*|\\.(test|spec))\\.ts$","transform":{".ts":"ts-jest"},"moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"d04e8300355e2be82c868b7ead1ec77325339077","release":{"branches":["main",{"name":"beta","prerelease":true}]},"scripts":{"test":"jest --coverage","build":"rimraf ./dist && tsc"},"_npmUser":{"name":"brajkowski","email":"npm@brajkowski.bulc.club"},"repository":{"url":"git+https://github.com/brajkowski/connect4-logic.git","type":"git"},"_npmVersion":"7.23.0","description":"This library provides APIs for manipulating and querying a standard (7x6) game of connect 4.","directories":{},"_nodeVersion":"14.17.6","dependencies":{"big-integer":"^1.6.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","rimraf":"^3.0.2","ts-jest":"^26.4.4","typescript":"^4.1.3","@types/jest":"^26.0.20","semantic-release":"^17.4.2"},"_npmOperationalInternal":{"tmp":"tmp/connect4-logic_1.0.5_1631758090893_0.8474563585918651","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.6":{"name":"@brajkowski/connect4-logic","version":"1.0.6","keywords":["connect4","logic","ts","typescript"],"author":{"name":"Brandon Rajkowski"},"license":"MIT","_id":"@brajkowski/connect4-logic@1.0.6","maintainers":[{"name":"brajkowski","email":"npm@brajkowski.bulc.club"}],"homepage":"https://github.com/brajkowski/connect4-logic#readme","bugs":{"url":"https://github.com/brajkowski/connect4-logic/issues"},"dist":{"shasum":"8a68706f9e1db8856c1c9f7c1204ca5e102a4edd","tarball":"https://registry.npmjs.org/@brajkowski/connect4-logic/-/connect4-logic-1.0.6.tgz","fileCount":21,"integrity":"sha512-L+UndpG21QXsp8b5vKWagvV+wn5S6wlfRmBrt9zPhVqpVfRQNFq2SbEcVY3BjFxXOefkXzFN5vY6jmZ2Joqpow==","signatures":[{"sig":"MEUCIQCPOPv7+eD5EKN9Nf4ukM+jEJOEBFJlptrTG0axqUmFzwIgeIgnzvc6xDmH6XU2bqmyyVo2CY+dmtFla7BlhwDif+E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22734,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJRT9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrKAg/+M6RiKf6nc9qX55DFJm/ZV+WwVvtMYH2Wh2n9UnxeCwd1m+fJ\r\nQVhG3cIR8P6lILwj7Hh9GZjk1ecdDXhnHsAFHKoyOfnMszrwukEOqQVQftqZ\r\nIN6BChxgLZAI3RZFXzl0NaQ0AoEmXI72qLy5+EX2cZww5U8HJKAz020HJThP\r\nXdwgzK9gE/rlQ8VCSC9ZxEeVBuT1aoGVigxOJy4jfEgoZcCOOpDIB/DO6PTr\r\njS1vjO7tQQA0b1hQhP41yBqT6QRZX1Q5XAJINuSlDG09Htv/hpktYKZpXaw0\r\nLfeQJFSTRWr8fjxb0lph7/rwl6TEeaMC6tOQlVxa3ratk5M13YWBzqFIzs1P\r\nSiR1zZa9US5ZKE5fdNvljV5furF8Bo5uvascAVKNd8SmJPUMzsf+SjOt39Qs\r\n8vhhEGbT3S0O35GQdF6WNj+oZFKiT72c3v+1/lpcNGJi7ZUJ9xH7zq1qcpVu\r\noAJJ1jH7ZSnFP2TlLhTh/y7ltFS/RB+TJfcJsn6R/YtuFNNNyDDwnj/UscBi\r\nc2L7ny7ucYyhzBWcIP+u02RV5OF86gtlarLhsU4AW6jLpda5KWuVimRGe7XF\r\n0E01Y4ivqcdei14Wrd91nlSdSg94bVKBZs7Ue0YYYiUNnEnzEfuSLwp/Rbvx\r\nYz0ZKag64cu0ShJUeiipSk+9CBgHFo92aEI=\r\n=/YU1\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testRegex":"(/test/.*|\\.(test|spec))\\.ts$","transform":{".ts":"ts-jest"},"moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"033df78179f4d3359cc445ba65f85e0b5ff49113","release":{"branches":["main",{"name":"beta","prerelease":true}]},"scripts":{"test":"jest --coverage","build":"rimraf ./dist && tsc"},"_npmUser":{"name":"brajkowski","email":"npm@brajkowski.bulc.club"},"repository":{"url":"git+https://github.com/brajkowski/connect4-logic.git","type":"git"},"_npmVersion":"8.5.3","description":"This library provides APIs for manipulating and querying a standard (7x6) game of connect 4.","directories":{},"_nodeVersion":"14.19.0","dependencies":{"big-integer":"^1.6.51"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.2.0","rimraf":"^3.0.2","ts-jest":"^27.0.5","typescript":"^4.4.3","@types/jest":"^27.0.1","semantic-release":"^19.0.2"},"_npmOperationalInternal":{"tmp":"tmp/connect4-logic_1.0.6_1646597373653_0.5628526273061776","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."}},"time":{"created":"2021-03-01T01:16:00.653Z","modified":"2026-01-02T04:47:26.931Z","1.0.0-beta.0":"2021-03-01T01:16:01.553Z","1.0.0-beta.1":"2021-03-01T01:34:02.283Z","1.0.0":"2021-03-01T01:39:10.097Z","1.0.1-beta.1":"2021-03-22T04:18:53.285Z","1.0.1":"2021-05-15T19:37:53.866Z","1.0.2":"2021-05-15T19:49:20.435Z","1.0.3-beta.1":"2021-05-15T19:55:32.459Z","1.0.3-beta.2":"2021-05-15T20:33:27.530Z","1.0.3":"2021-05-15T20:35:24.121Z","1.0.4":"2021-05-26T04:31:18.562Z","1.0.5":"2021-09-16T02:08:11.020Z","1.0.6":"2022-03-06T20:09:33.850Z"},"bugs":{"url":"https://github.com/brajkowski/connect4-logic/issues"},"author":{"name":"Brandon Rajkowski"},"license":"MIT","homepage":"https://github.com/brajkowski/connect4-logic#readme","keywords":["connect4","logic","ts","typescript"],"repository":{"url":"git+https://github.com/brajkowski/connect4-logic.git","type":"git"},"description":"This library provides APIs for manipulating and querying a standard (7x6) game of connect 4.","maintainers":[{"name":"brajkowski","email":"npm@brajkowski.bulc.club"}],"readme":"# Connect 4 Logic\n\n[![Build](https://github.com/brajkowski/connect4-logic/actions/workflows/build.yml/badge.svg)](https://github.com/brajkowski/connect4-logic/actions/workflows/build.yml)\n[![npm:latest](https://img.shields.io/npm/v/@brajkowski/connect4-logic/latest?color=limegreen&logo=npm)](https://www.npmjs.com/package/@brajkowski/connect4-logic)\n[![npm:beta](https://img.shields.io/npm/v/@brajkowski/connect4-logic/beta?logo=npm)](https://www.npmjs.com/package/@brajkowski/connect4-logic)\n[![codecov](https://codecov.io/gh/brajkowski/connect4-logic/branch/main/graph/badge.svg?token=ID99K7U143)](https://codecov.io/gh/brajkowski/connect4-logic)\n[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)\n\nThis library provides APIs for manipulating and querying a standard (7x6) game of connect 4.\n\n## Installation\n\nUsing npm:\n\n```\n$ npm i --save @brajkowski/connect4-logic\n```\n\n## Usage\n\n### Standard Behavior\n\nThe main class that should be used to manipulate and query the underlying game state is `Logic`.\n\nTo begin, instantiate an implementation of `Logic` (currently `BitboardLogic` is the only implementation):\n\n```ts\nconst logic: Logic = new BitboardLogic();\n```\n\nFrom there, you may perform queries on the game state such as:\n\n```ts\nlet column = 0;\nlet result: boolean = logic.canPlaceChip(column);\n```\n\nand place chips that belong to a player:\n\n```ts\nlet landedOnRow = logic.placeChip(Player.One, column); // returns 0.\nlandedOnRow = logic.placeChip(Player.Two, column); // returns 1.\n```\n\nThese operations prevent placing chips in non-existent columns (ie: out-of-bounds columns) as well as overflowing a column (ie: a column can only hold 6 chips).\n\nA basic game loop may look like:\n\n```ts\nconst logic: Logic = new BitboardLogic();\nlet activePlayer: Player = Player.One;\nfunction gameLoop() {\n  while (true) {\n    let column = promptActivePlayerForMove();\n    if (!logic.canPlaceChip(column)) {\n      continue;\n    }\n    logic.placeChip(activePlayer, column);\n    if (logic.didWin(activePlayer)) {\n      break;\n    }\n    swapActivePlayer();\n  }\n}\n```\n\n### Customized Behavior\n\nThe `Logic` class provides default connect 4 behavior (ie: chips fall to the bottom of a column and stack), but custom behavior can also be achieved by using the `PlayerState` class:\n\n```ts\nlet row = 2;\nlet column = 3;\nlogic.getPlayerState(Player.One).occupyPosition(row, column);\n```\n\nThe `PlayerState` operations allow for any chip placement, but are bounds-checked for valid row and column values and prevent duplicate chip placement (ie: trying to place another chip in a position that is already occupied).\n\n## Building from Source\n\nUsing npm:\n\n```\n$ npm run build\n```\n\nwill produce the compiled library under `/dist`.\n\nThe test suite may also be executed with npm:\n\n```\n$ npm test\n```\n\n## Future Plans\n\n- Generalize the solution to fit arbitrary game board dimensions\n","readmeFilename":"README.md"}