{"_id":"@chessclub.com/legacy","_rev":"6-9219701d99542cac4e8fbe91fb12a87a","name":"@chessclub.com/legacy","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@chessclub.com/legacy","version":"1.0.0","description":"Telnet connection to legacy ICC servers","main":"legacy.js","filename":"legacy.min.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/djlogan2/icclegacy.git"},"npmName":"legacy.js","npmFileMap":[{"basePath":"","files":["legacy.js","cn.js","l2.js"]}],"keywords":["chessclub.com","icc"],"author":{"name":"David Logan"},"license":"ISC","bugs":{"url":"https://github.com/djlogan2/icclegacy/issues"},"homepage":"https://github.com/djlogan2/icclegacy#readme","devDependencies":{"chai":"^4.2.0","mocha":"^6.2.2","nyc":"^14.1.1"},"gitHead":"509a0bd02e7b7a2fa101c2eab9ab59b81f0b4ce1","_id":"@chessclub.com/legacy@1.0.0","_nodeVersion":"12.12.0","_npmVersion":"6.12.1","dist":{"integrity":"sha512-L3MrSfzQHxiPQBad3Qiee6UZWNlp3NJzZlHLPSjtY3tsvxn/Ue3dJ/XC8hCpVn0VGJUvfBKrTnaj8dyh7MTzdA==","shasum":"1170907ad0f78a1261d5715584afcfdc2d595614","tarball":"https://registry.npmjs.org/@chessclub.com/legacy/-/legacy-1.0.0.tgz","fileCount":25,"unpackedSize":413627,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxc6NCRA9TVsSAnZWagAA0NsQAJr8dfdWw/1IVEqILzbA\nhWMgnQERxv8WxwCqqDtr44LO5DkxYfPlk3M44XsIGp6PGC3+6/fEiJ7Dmv2n\nlcizrrCe/2DkZg2R0exfXxYeeWJcBD6WEoCyX7RLE840efggSkZdrGlQjWgd\nP9SQTmmD8UfGCsuYIddEQqERidHnlfMvgnzWXEuUqhlF6jSW0H15sKR416Wf\ngiCuHsiVARY3B7RhMhzK0agSCijnRV6Lt71HEJo7W0DDQgQe4t3YPqYpg+lB\nc+hUsWfYh6BpRUDm4vjHOW2kokJTF5aNy05B2mq3pTWd7pVn0R40PY5WFNoo\nT9mjsck+BoC3Uacf3t8tsxZsZg9hkZapA7EHUnIQNZzg7x37PceOPXeRa/Rc\nhIv/V83Y2nN6MdNBGFl8eiFxnGeXMElkj5qnezTdtrly/fIT+7tusBl96w0p\nr8cojMbTGS8p6uTbAerXstx3nD8WfQAVgvZjeUDu6cOogwCYFALtCKJpBbpJ\nHdTYZDKtLfNhtY789rqR0CBu8xKYOpGfKpzMba/zWqwO4yTq4EuPZOH3GfM8\nmefBQwF4PlqamN6QcXr2K0lWKA6vHukE+grCEvDyctdZtJH0pH+e9htjLby4\nJ8gOSJKjO+s7bMXNtomWVWaV7M0LU/88J5Nm7I7Ygfiyf454T8ATxuaus3zM\ny+4h\r\n=ZssC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGVQsVyTGeuC75hkkfOgq7/dRAvb31BRUol+4c7DPAosAiEA8ZW1Xd/gozbLCr6PaKP8n9VK9xLmmRqRAcmMTqPHc2Y="}]},"maintainers":[{"name":"djlogan2","email":"djlogan2.dl@gmail.com"}],"_npmUser":{"name":"djlogan2","email":"djlogan2.dl@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/legacy_1.0.0_1573244557416_0.02890266106447581"},"_hasShrinkwrap":false},"1.0.1":{"name":"@chessclub.com/legacy","version":"1.0.1","description":"Telnet connection to legacy ICC servers","main":"legacy.js","filename":"legacy.min.js","scripts":{"test":"mocha","publish":"npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/djlogan2/icclegacy.git"},"npmName":"legacy.js","npmFileMap":[{"basePath":"","files":["legacy.js","cn.js","l2.js"]}],"keywords":["chessclub.com","icc"],"author":{"name":"David Logan"},"license":"ISC","bugs":{"url":"https://github.com/djlogan2/icclegacy/issues"},"homepage":"https://github.com/djlogan2/icclegacy#readme","devDependencies":{"chai":"^4.2.0","mocha":"^6.2.2","nyc":"^14.1.1"},"gitHead":"509a0bd02e7b7a2fa101c2eab9ab59b81f0b4ce1","_id":"@chessclub.com/legacy@1.0.1","_nodeVersion":"12.12.0","_npmVersion":"6.12.1","dist":{"integrity":"sha512-S82Iln1O6OyJKlryDJKknbwXcu5IaU3WrnOJMi9UCif008UUm3JwgfPOteRVCR6PFvA9gF/HIe6gSfeOG/86tw==","shasum":"16fcd73829fb2d931050a6ad5ce73b6489ccc65d","tarball":"https://registry.npmjs.org/@chessclub.com/legacy/-/legacy-1.0.1.tgz","fileCount":25,"unpackedSize":423085,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxe6kCRA9TVsSAnZWagAAE9QP/2tm73Y59SHdDfErpSL0\n34xQdOKQ50ZRVcRi2m5sQkoliktZ/fWRHiX3KLHjI0QDkpjTaEXy5yMn+Nes\nLZqnxh0S7QNXGpxZnsrj/qSWLCHQHUsEDmMDCJkrcCksTYSkKs3JH/NxQhYA\nX3EP02jRvno6lruAJ5PHDYbnAhf+30cElzvRrFHxjk6bOcoMDn1+fgdsuB+y\nQAtCwRav3EDe4773/cBeBCAlieKcu6e9nQvECsq4nu0SI8AWRe+rOdj6bSRL\nAg/7YwTbuY+MK2A5lKZOKExkJf547d+qnJga2AxMhRFg8EExOW1UXiGs9mwZ\n3GlLBKG3HEcZvDlaWyumnPtQTuevzmaCdb8g4Lb5QNh6pXu8d+PB3gqXvEyN\nGNZ/QyRk/CTldnYyTUWbOpRa29LfvNOR1CrNCRU8RYrJcnw34h3/dpi+XXKD\nBCuIXZp6wFo5BP8IwFZRo0CDocalfd5QLLk7sk0zc09l7HASNmr8zI8+5msT\nB5taQ+rvTXc9Ctp6FoF8d0h3/meEv7Uqj/3HZGtwLh+64W0zu3CneeRHv6AY\n+48VMSluDYYEwFFbqpEoxXoyunoOX4KDriswH/K6eHgvsVRU2wRWenJnGLdq\nbdDG/EnNAps3wT1XAFDq/3IFQctfYHuGwdYOmfwdPcpLfrS7Iju04QxXexvC\nTEkL\r\n=XfyD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICkPswwecnPOfLWa/7JOGhQzBoH3pK6VsP5SO6WRI9V+AiAEosUpGWQgax14UnibH1sGE67J3Se2FVmAm32C+GYJBA=="}]},"maintainers":[{"name":"djlogan2","email":"djlogan2.dl@gmail.com"}],"_npmUser":{"name":"djlogan2","email":"djlogan2.dl@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/legacy_1.0.1_1573252772469_0.7885146126119325"},"_hasShrinkwrap":false},"1.0.2":{"name":"@chessclub.com/legacy","version":"1.0.2","description":"Telnet connection to legacy ICC servers","main":"legacy.js","filename":"legacy.min.js","scripts":{"test":"mocha","publish":"npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/djlogan2/icclegacy.git"},"npmName":"legacy.js","npmFileMap":[{"basePath":"","files":["legacy.js","cn.js","l2.js"]}],"keywords":["chessclub.com","icc"],"author":{"name":"David Logan"},"license":"ISC","bugs":{"url":"https://github.com/djlogan2/icclegacy/issues"},"homepage":"https://github.com/djlogan2/icclegacy#readme","devDependencies":{"chai":"^4.2.0","mocha":"^6.2.2","nyc":"^14.1.1"},"gitHead":"509a0bd02e7b7a2fa101c2eab9ab59b81f0b4ce1","_id":"@chessclub.com/legacy@1.0.2","_nodeVersion":"12.12.0","_npmVersion":"6.12.1","dist":{"integrity":"sha512-VbPY3D+3+YmUhf+FHJa75PTpoK1AGiBCoY5KXrEUNxPFfn+jXxdwRRv2nuVdkElJ54zVwxW1qxFKRoEon4GAYA==","shasum":"7fa8960e37f40e4f507bf4daaef49579f497efd8","tarball":"https://registry.npmjs.org/@chessclub.com/legacy/-/legacy-1.0.2.tgz","fileCount":25,"unpackedSize":423085,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxe7RCRA9TVsSAnZWagAAd9wP/RcioPpuiy1nFMUU6ukA\ntNLguHv3Uobvwyn55BRjPMk8WPz1gU4BOdNCasWi1HMobiHGfpI4KQpTpztt\nIccLNkB7lF6ivXNGY/oGMTFW82NvtzQy5LxpPBKGwym8ofhILMxLw8Ud3j8T\ncUzcAPyMm0RF4ERNid9E3R7l8QEwKNpTSApR8O82qWDHEMNl9hq7/hs6Q/BJ\nm0wVmeEAVW6g5Yh9sJeFM3H9x5/Z2vvKhxkdOeiBcE/L+w34dFJ0L+DBhIJb\nOX6PJORN5HT3U5P54w7EbrZ5w0gmvlotScAReDUFpx2u7nUtU4dfMZ6rOU1M\nIEBHQf/CZ9esmQpoE1SvEaBKOpAwtT4IEMOtiOdjbtB4zopxQp2lalP0aVdB\n1KsoMreDDt+OGmV4vRuVntoAAG2V3/YvJFaWYAogi1oyxbMeLK2bezaZE/kg\n+2V9mSWzskcVOppddvpMxL7YmT6lxEei4NC2Pi+cM8b5RKRXsiTu59UycDbD\nThILP4jPjXUoLs+m6COU+qrKJpvjH6Q8LnbM2UEK5bn6vGm6P2QxaihbDhJH\nTdphVTCcBZR5W25hJyzue/aIhHsR/KcP2rt+uYQogxTA8JheGxagKz7C2TMA\nN/vnXudd+J8YH7OqSxyOd3HeUcqwH4oHaeLX3I7zALcyb8b8Vwcpec45nVce\nS571\r\n=nvn9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDnOYVpGSUgIRfx3/dtbdBSuVHfUI5EMqSiZjlj0QacAIhALXDDf+Wn9fzw2hoFKrMmz36Ygk2LGTNw16x3RT2nZav"}]},"maintainers":[{"name":"djlogan2","email":"djlogan2.dl@gmail.com"}],"_npmUser":{"name":"djlogan2","email":"djlogan2.dl@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/legacy_1.0.2_1573252816939_0.6646808967944395"},"_hasShrinkwrap":false},"1.0.3":{"name":"@chessclub.com/legacy","version":"1.0.3","description":"Telnet connection to legacy ICC servers","main":"legacy.js","filename":"legacy.min.js","scripts":{"test":"mocha","publish":"npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/djlogan2/icclegacy.git"},"npmName":"legacy.js","npmFileMap":[{"basePath":"","files":["legacy.js","cn.js","l2.js"]}],"keywords":["chessclub.com","icc"],"author":{"name":"David Logan"},"license":"ISC","bugs":{"url":"https://github.com/djlogan2/icclegacy/issues"},"homepage":"https://github.com/djlogan2/icclegacy#readme","devDependencies":{"chai":"^4.2.0","eslint":"^7.9.0","eslint-plugin-prettier":"^3.1.4","mocha":"^6.2.3","nyc":"^14.1.1","prettier":"^2.1.1"},"dependencies":{},"gitHead":"6f02893f01e5c5bc1243e9936f03d041b88b9e43","_id":"@chessclub.com/legacy@1.0.3","_nodeVersion":"12.18.3","_npmVersion":"6.14.8","dist":{"integrity":"sha512-AphcGbt2BpBQ9zkhe4le1hMY1ffeV5nDEN0bvwB81FB+ZAKW5V4S1i/4xTHo1o6TPX1hm6i4avYZSSI5nVIabg==","shasum":"e193e8aa2507cbe5a2c12c98267749999d8a094e","tarball":"https://registry.npmjs.org/@chessclub.com/legacy/-/legacy-1.0.3.tgz","fileCount":32,"unpackedSize":685339,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflF7uCRA9TVsSAnZWagAAt60QAIU7ewc+FIJEX1NpBaGG\n0kL/rsythBHBJcPpFT1+r54mqtRGijz3D1iKl8r8ntqgTVLRKIQUAxkCYU3/\nfjLP+7J4qe2kcELkUjVMZAqIr2WuBtB+morSReN9MKQnIDc9nO0uuTj3c9Jq\nxB3GFAyF9nsdxEtjvnUHnRF/AglpkFH0CL+3WrBT1tU8/XhatzkkVjRR4M/8\n/h4jGxRpZmXPKLSf2ozXrxqVM//iE7ZaRqmal7ydJBkyE3/r75/rNul2RiNn\nVIDljqV3l7H8zlXTS32Q0iAqEUk0d6juhi3HqjK+S9NDFPRmGOFIdhBm/7lh\ntfsex6CR2iM98HBLQg+/Q5+ezziga40TOPLGswyxSr4QdNGHYKmgl/0WQ3S1\nN1kBnXLkD3cOncZQ1nxlZmunDxRljwC+NBQ1qmYt/QPvJRLCBuzmurvTsgYE\nuvjeGzVUDIv8bIUFusZdt1niVcM+5FgRtzXeYFl8PS9GM58xTdilb9xPYU4J\nc5AXgMvmHGbQ+kHCzVupw+bGEejtQQdEBBnJb7vLHkOpuY2nqHuBgMRFngzT\nFOvuMMcDE9+6io64bBvgNr6r8NRAqwecQLhPEDliOUNMc/OPwownHhVeCn2S\nRO7zXXIuFmw8YcV2JMcHnwxszXaHSX7ez/EHS7I3PVURSx189+ei13YPIxwT\nlt+F\r\n=/yBj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDRai/XHTKSHPek8iuepd6TvpAq8LaA6g0zJFt7MbvLbQIhAKEUK94Cn4Kq4s/J4QZ/mLn/UxyB5unGw2DUZAo03NHC"}]},"maintainers":[{"name":"djlogan2","email":"djlogan2.dl@gmail.com"}],"_npmUser":{"name":"djlogan2","email":"djlogan2.dl@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/legacy_1.0.3_1603559150286_0.008138200543755136"},"_hasShrinkwrap":false},"1.0.4":{"name":"@chessclub.com/legacy","version":"1.0.4","description":"Telnet connection to legacy ICC servers","main":"legacy.js","filename":"legacy.min.js","scripts":{"test":"mocha","publish":"npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/djlogan2/icclegacy.git"},"npmName":"legacy.js","npmFileMap":[{"basePath":"","files":["legacy.js","cn.js","l2.js"]}],"keywords":["chessclub.com","icc"],"author":{"name":"David Logan"},"license":"ISC","bugs":{"url":"https://github.com/djlogan2/icclegacy/issues"},"homepage":"https://github.com/djlogan2/icclegacy#readme","devDependencies":{"chai":"^4.2.0","eslint":"^7.12.0","eslint-plugin-prettier":"^3.1.4","mocha":"^6.2.3","nyc":"^14.1.1","prettier":"^2.1.2","sinon":"^9.2.0"},"dependencies":{},"gitHead":"b9b63341242d457ff42ca6fe1052c571325f0f3f","_id":"@chessclub.com/legacy@1.0.4","_nodeVersion":"16.6.2","_npmVersion":"7.20.3","dist":{"integrity":"sha512-PDIuZiDE/XcXkKUV8+l+hoHq9DYJVNDene4QJfkkzqaBNJEhV7/lUGNPKvSK/YbVKyl8E+uw0EQYHuZ7KKSOGw==","shasum":"65a10f76c41f2b55b48bfd7b2fc3a821c871478d","tarball":"https://registry.npmjs.org/@chessclub.com/legacy/-/legacy-1.0.4.tgz","fileCount":31,"unpackedSize":685244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2CmLCRA9TVsSAnZWagAAPHoP/3OsCjHQ5XO3PwLuugwQ\n9WipSfpc5wIt4bnmSDgi2z/peVzy7vO7od0HmXuRoTV4TM3vLmdVUsm8StXJ\nSVxqCUQKDVdOtLKZW5gTIFTZd9f8e6ZGQ1gvfwr34OHMnCEM3nP7ffTjU1Fp\nO3znYB2CgZpsOdTYt9W4DMTtxaEXNTPmad3DWVnCm6wvgLxcj+lkVf3WkSWh\nmqODTED+zauavGf3CFbD9XPcx4phfg5tHGjWIdYOeI6UyV/v2JIy7uwaCvhC\nrd0d3TRDCZTKfyKBej4VaFoTaiQ7dtehDXTDMBeCPG25dBUx1DspdIg/ppoC\noRGkrZCoe701iluTuCZ12D/BNWCPQ24EJX8zHjL37vuc5iHNz/L1pCD8vu2P\nodse78OJMVKaMdH5wRrHmqNw3KwF4DlI2SjP6rKvsdYIU1/up4GfNduRJgHn\nR7TS0gB4MJHNTGhCy46Q7fTPjfTccl6lIvHZrG6zfVAumJ87JI71df+Sxtdx\nk0Pts1hnCJAHYsdDc/wvanbAoYEkg7cg7sqtGO5oN9+fU8JZXwvGPV+IcOB+\nKwdSlCGHgwXY79mrKX2kVOOcXGhTfJOwhhqfEb6HTNdY3Fbs0aIrECRkC/AT\nWFNXc503ixXXRhFoBjy8baPDLhNdXe17auIwx/DROM2Bnd9ApFBeBT1JjCsV\n/r04\r\n=rFXY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlWAK04o427PUnwmDxU1YeKrzD1bsjkj6feAul6S+jJwIgWF4Qes6xzNjoflaUfGwuR6E8u8BICcEfV7ztOBSix7E="}]},"_npmUser":{"name":"djlogan2","email":"djlogan2.dl@gmail.com"},"directories":{},"maintainers":[{"name":"djlogan2","email":"djlogan2.dl@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/legacy_1.0.4_1632667899562_0.7113170078492961"},"_hasShrinkwrap":false}},"time":{"created":"2019-11-08T20:22:37.185Z","1.0.0":"2019-11-08T20:22:37.514Z","modified":"2022-04-04T22:39:55.064Z","1.0.1":"2019-11-08T22:39:32.585Z","1.0.2":"2019-11-08T22:40:17.084Z","1.0.3":"2020-10-24T17:05:50.524Z","1.0.4":"2021-09-26T14:51:39.776Z"},"maintainers":[{"name":"djlogan2","email":"djlogan2.dl@gmail.com"}],"description":"Telnet connection to legacy ICC servers","homepage":"https://github.com/djlogan2/icclegacy#readme","keywords":["chessclub.com","icc"],"repository":{"type":"git","url":"git+https://github.com/djlogan2/icclegacy.git"},"author":{"name":"David Logan"},"bugs":{"url":"https://github.com/djlogan2/icclegacy/issues"},"license":"ISC","readme":"# icclegacy\nA library to interact with the legacy ICC server from Node/Javascript\n\nThis is a work in progress. I am writing this primarily for my own purposes to add to another ICC related project.\nThus, there are going to be lots of things that aren't possible right away. Error messaging doesn't work as\nwell as it needs to, etc.\n\nFeel free to pull and add to the code if you so desire. I will do my best to let you know if I have to change\nthe code to meet my own needs, and of course I will do my best to make sure I can fit within the existing framework\nif you write it.\n\nHere are the hooks and methods written so far:\n```\n\n//const Legacy = require('../legacy').LegacyICC;\n//or\n//import legacy from \"icclegacy\";\n\n//const legacy = new Legacy({\n//or\n//const legacy = new legacy.LegacyICC({\n    username: \"x\",    /* Defaults to a guest login */\n    password: \"x\",    /* Defaults to a guest login */\n    host: \"x\",        /* Defaults, so generally no reason to use */\n    port: 999,        /* Defaults, so generally no reason to use */\n    error_function: (error) => {}, // Function called when there are errors\n    /* \n       These preprocessors will prevent the code from going further if you return a truthy\n       value. For example, if \"sendpreprocessor(data)\" returns true, the code will no longer send\n       that data to the server. preprocessor would prevent packets from being processed further, etc.\n    */\n    sendpreprocessor(data) => {},  // Function called just before sending this data to the server\n    preprocessor: (packets) => {}, // Function called after preparser and before specific datagram functions\n    preparser: (data) => {},       // Function called after receiving new data from ICC socket\n\n    loggedin: (data) => {},\n    login_failed: (data) => {},    \n    logged_out: () => {},          \n\n    match: (data) => {},           \n    match_removed: (data) => {},   \n\n    seek: (data) => {},            \n    seek_removed: (data) => {},    \n\n    my_game_started: (data) => {},  \n    my_game_result: (data) => {}, \n    move: (data) => {},\n    offers_in_my_game: (data) => {},\n    players_in_my_game: (data) => {},\n    examined_game_is_gone: (data) => {},\n    my_game_ended: (data) => {},\n    msec(data) => {},\n\n    player_arrived: (data) => {},\n    player_left: (data) => {},\n\n    game_started: (data) => {},\n    game_result: (data) => {},\n\n    backward: (data) => {},\n    circle: (data) => {},\n    uncircle: (data) => {},\n    arrow: (data) => {},\n    unarrow: (data) => {},\n    boardinfo: (data) => {},\n\n    personal_tell: (data) => {}\n});\n\nlegacy.login();\n\n/* ... */\n\nlegacy.match(message_identifier, name, time, increment, time2, increment2, rated, wild, color);\nlegacy.seek(message_identifier, time, inc, rated, wild, color, auto, minrating, maxrating);\nlegacy.unseek(message_identifier, index);\nlegacy.remove_all_matches_and_seeks(message_identifier);\nlegacy.accept(message_identifier, who);\nlegacy.play(message_identifier, who);\nlegacy.move(message_identifier, _move);\nlegacy.resign(message_identifier, who);\nlegacy.decline_match(message_identifier, who);\nlegacy.adjourn(message_identifier);\nlegacy.resume(message_identifier);\nlegacy.abort(message_identifier);\nlegacy.takeback(message_identifier, count);\nlegacy.draw(message_identifier);\n\nlegacy.observe(message_identifier, what);\n\nlegacy.examine(message_identifier, what);\nlegacy.forward(message_identifier, count);\nlegacy.backward(message_identifier, count);\nlegacy.mexamine(message_identifier, who);\nlegacy.unexamine(message_identifier);\nlegacy.circle(message_identifier, sq);\nlegacy.uncircle(message_identifier, sq);\nlegacy.arrow(message_identifier, sq1, sq2);\nlegacy.unarrow(message_identifier, sq1, sq2);\nlegacy.revert(message_identifier);\n\nlegacy.boardinfo(message_identifier, type, square_a, square_b, color);\nlegacy.libdelete(message_identifier, slot);\nlegacy.noautologout(message_identifier, true_or_false);\nlegacy.libkeepexam(message_identifier, whitename, blackname, result, slot);\nlegacy.personal_tell(message_identifier, who, what);\n\nlegacy.active_level2(); // Just returns an array of level 2 datagrams we are receiving\n\n/* ... */\n\nlegacy.logout();\n```\nHere is an example of how we are using it in our Meteor based project today:\n```\nimport legacy from \"icclegacy\";\n//...\n//...\nLegacyUser.login = function(user) {\n  legacy_users[user._id] = new legacy.LegacyICC({\n    username: user.profile.legacy.username,\n    password: decrypt(user.profile.legacy.password),\n    error_function: Meteor.bindEnvironment(error_function),\n    loggedin: Meteor.bindEnvironment(data => loggedin(data, user._id)),\n    logged_out: Meteor.bindEnvironment(data => loggedout(data, user._id)),\n    login_failed: Meteor.bindEnvironment(login_failed),\n    seek: Meteor.bindEnvironment(seek),\n    seek_removed: Meteor.bindEnvironment(seek_removed),\n    preprocessor: Meteor.bindEnvironment(debugpackets),\n    preparser: Meteor.bindEnvironment(debugrawdata),\n    sendpreprocessor: Meteor.bindEnvironment(debugsentcommands),\n    player_arrived: Meteor.bindEnvironment(player_arrived),\n    player_left: Meteor.bindEnvironment(player_left),\n    match: Meteor.bindEnvironment(match),\n    match_removed: Meteor.bindEnvironment(match_removed),\n    my_game_started: Meteor.bindEnvironment(my_game_started),\n    my_game_result: Meteor.bindEnvironment(my_game_result),\n    my_game_ended: Meteor.bindEnvironment(my_game_ended),\n    msec: Meteor.bindEnvironment(msec),\n    move: Meteor.bindEnvironment(move)\n  });\n  this.userId = user._id;\n  legacy_users[user._id].login();\n};\n//\n// A few of our methods just for illustration:\n//\nfunction seek_removed(data) {\n  //log.debug(\"seek_removed\", data);\n  GameRequests.removeLegacySeek(\"server\", data.index, data.reasoncode);\n}\n\nfunction debugpackets(data) {\n  //log.debug(\"PACKETS=\", data);\n}\n\nfunction debugrawdata(databuffer) {\n  //log.debug(\"RAW=\", databuffer);\n}\n\nfunction debugsentcommands(databuffer) {}\n\nfunction player_arrived(data) {\n  log.debug(\"player_arrived\", data);\n  LegacyUsersCollection.insert(data);\n}\n\nfunction player_left(data) {\n  log.debug(\"player_left\", data);\n  LegacyUsersCollection.remove({ player_name: data.player_name });\n}\n\nfunction match_removed(data) {\n  log.debug(\"match_removed\", data);\n  GameRequests.removeLegacyMatchRequest(\n    data.message_identifier,\n    data.challenger_name,\n    data.receiver_name,\n    data.explanation_string\n  );\n}\n\n```\nIn general, the library will return you an object that has every field in format.txt in the same order, typed correctly (ints are ints, booleans are booleans, etc.)\nIt uses the level 1 \"aribitrary-word\" support to send what we call a \"message-identifier\", which basically means that when you send a command to ICC like ```legacy.accept('acceptgame-123', 'djlogan')```,\nany packets associated with this command will have a message_identifier of ```'acceptgame-123'```. In this example, you should receive a message identifier of ```'acceptgame-123'``` whether the packets are game started packets or error packets.\nThis obviously gives you the ability to route packets to the right place based on unique message identifiers of your choosing.\n","readmeFilename":"README.md"}