{"_id":"@demostf/demo.js","_rev":"7-7d4bbe4a835de9a9fc554b9d16915bab","name":"@demostf/demo.js","description":"A parser for TF2 demo files","dist-tags":{"latest":"2.1.3"},"versions":{"2.0.2":{"name":"@demostf/demo.js","description":"A parser for TF2 demo files","version":"2.0.2","bin":{"demo-analyse":"./bin/analyse.js"},"main":"build/index.js","jsnext:main":"build/es6/index.js","module":"build/es6/index.js","dependencies":{"bit-buffer":"^0.2.3","snappyjs":"^0.6.0","text-encoding-shim":"git+https://gitlab.com/hongaar/text-encoding-shim.git#83ff0f77f48d05b8ce83ddc7ca49d8df61363b31"},"devDependencies":{"@types/node":"^8.0.31","minimist":"^1.2.0","mocha":"^3.5.3","split2":"^2.2.0","ts-node":"^3.3.0","tsconfig":"^7.0.0","tslint":"^5.7.0","typescript":"^2.5.2"},"gitHead":"91069fa94d50a9718361b5be37a901f1caee4480","_id":"@demostf/demo.js@2.0.2","_npmVersion":"5.6.0","_nodeVersion":"9.3.0","_npmUser":{"name":"icewind1991","email":"robin@icewind.nl"},"dist":{"integrity":"sha512-YmO8CS+8nBxsdluECQEQf0Jevv9AqWfSYm2LNdpAohbJTHnoCBF8nt0TNdrisY4AftDVIYjy8EK9GsF0pwsabA==","shasum":"c90322ec2bfbee07a9d5030b6566ac256df90b27","tarball":"https://registry.npmjs.org/@demostf/demo.js/-/demo.js-2.0.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMb5fWabTtVgkbbAC5/ftOeNEiS/ONpaUTg7yfkwDMfgIgCOB6lHlKUrecV5TofueqoCIgP0N4irA2cTaRFFIbO6E="}]},"maintainers":[{"name":"icewind1991","email":"robin@icewind.nl"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo.js-2.0.2.tgz_1513424281625_0.2809945421759039"},"directories":{}},"2.0.3":{"name":"@demostf/demo.js","description":"A parser for TF2 demo files","version":"2.0.3","bin":{"demo-analyse":"./bin/analyse.js"},"main":"build/index.js","jsnext:main":"build/es6/index.js","module":"build/es6/index.js","dependencies":{"bit-buffer":"^0.2.3","snappyjs":"^0.6.0","text-encoding-shim":"git+https://gitlab.com/hongaar/text-encoding-shim.git#83ff0f77f48d05b8ce83ddc7ca49d8df61363b31"},"devDependencies":{"@types/node":"^8.0.31","minimist":"^1.2.0","mocha":"^3.5.3","split2":"^2.2.0","ts-node":"^3.3.0","tsconfig":"^7.0.0","tslint":"^5.7.0","typescript":"^2.5.2"},"gitHead":"d418cf93c4a3fd24b6fa2538c7a7e4c7236da676","_id":"@demostf/demo.js@2.0.3","_npmVersion":"5.6.0","_nodeVersion":"9.3.0","_npmUser":{"name":"icewind1991","email":"robin@icewind.nl"},"dist":{"integrity":"sha512-+lw0IexQXqMGHigTQ7HwO/P+QqGuNeb5TWkztF58l5MXA//3PexbU2JVbea+dBk+rsunvx6Hj6XeP71E4s5Dwg==","shasum":"05667cf31ab548f4d2bab14fd6705576645be072","tarball":"https://registry.npmjs.org/@demostf/demo.js/-/demo.js-2.0.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG3h4YvTOaWShTtweLZb45F9DsTSuUWiVNtiJKxF1GXOAiAa5lHdjI1YFPrlpXCL1AB/r9cV2TN1b2AAA3mJ8wgKDw=="}]},"maintainers":[{"name":"icewind1991","email":"robin@icewind.nl"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo.js-2.0.3.tgz_1513428335923_0.07644625729881227"},"directories":{}},"2.1.0":{"name":"@demostf/demo.js","description":"A parser for TF2 demo files","version":"2.1.0","bin":{"demo-analyse":"./bin/analyse.js"},"main":"build/index.js","jsnext:main":"build/es6/index.js","module":"build/es6/index.js","dependencies":{"bit-buffer":"^0.2.3","snappyjs":"^0.6.0","text-encoding-shim":"git+https://gitlab.com/hongaar/text-encoding-shim.git#83ff0f77f48d05b8ce83ddc7ca49d8df61363b31"},"devDependencies":{"@types/node":"^8.0.31","minimist":"^1.2.0","mocha":"^3.5.3","split2":"^2.2.0","ts-node":"^3.3.0","tsconfig":"^7.0.0","tslint":"^5.7.0","typescript":"^2.5.2"},"gitHead":"ca5188e8f64a711408271262cc1cb5e1adb5de8c","_id":"@demostf/demo.js@2.1.0","_npmVersion":"5.7.1","_nodeVersion":"9.8.0","_npmUser":{"name":"icewind1991","email":"robin@icewind.nl"},"dist":{"integrity":"sha512-tcWAwGiiPT+PUFXEE6a0Ahy4d650/rIjkvri117jNkLhHpz7fuvmfi5qYbqDN33al/4AI+rwtjldZiAJPTWVng==","shasum":"6fb8e0d20f5382f10f149e65caa6de41ba0c67ba","tarball":"https://registry.npmjs.org/@demostf/demo.js/-/demo.js-2.1.0.tgz","fileCount":553,"unpackedSize":1246028,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHQIpXrHYKVUuTDFJJCHi5400VxbVMYcDDe8xOrMWyJjAiEAp9WexCNzp27sZWylIRb7Rr+lkhGwBz4Zm/k/s/jzxRQ="}]},"maintainers":[{"name":"icewind1991","email":"robin@icewind.nl"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo.js_2.1.0_1520552016096_0.12591736707179457"},"_hasShrinkwrap":false},"2.1.1":{"name":"@demostf/demo.js","description":"A parser for TF2 demo files","version":"2.1.1","bin":{"demo-analyse":"./bin/analyse.js"},"main":"build/index.js","jsnext:main":"build/es6/index.js","module":"build/es6/index.js","dependencies":{"bit-buffer":"^0.2.3","snappyjs":"^0.6.0","text-encoding-shim":"git+https://gitlab.com/hongaar/text-encoding-shim.git#83ff0f77f48d05b8ce83ddc7ca49d8df61363b31"},"devDependencies":{"@types/node":"^8.0.31","minimist":"^1.2.0","mocha":"^3.5.3","split2":"^2.2.0","ts-node":"^3.3.0","tsconfig":"^7.0.0","tslint":"^5.7.0","typescript":"^2.5.2"},"gitHead":"2d0fad9ad28ff34a520729e3832987b6d8891065","_id":"@demostf/demo.js@2.1.1","_npmVersion":"5.7.1","_nodeVersion":"9.8.0","_npmUser":{"name":"icewind1991","email":"robin@icewind.nl"},"dist":{"integrity":"sha512-0dDx2++f8ILRsHayPQK2aMzVIbkd5CO6Y8tykvwimrLE4y2CFHm2MgICSuDgSPcEeHc9UMHyRBXwy4XQWKgK2g==","shasum":"5fdeb3751db25d8e9218cab9435ee8efd6efec06","tarball":"https://registry.npmjs.org/@demostf/demo.js/-/demo.js-2.1.1.tgz","fileCount":562,"unpackedSize":1265287,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF2qgkUQpv/L7+gb5clYCq5pA0CjWRCMsCTbXBU0VRruAiAGDb4MAxLdJbvuQG4LXowpo3JUJkyWmAMB+LwHYtYsHA=="}]},"maintainers":[{"name":"icewind1991","email":"robin@icewind.nl"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo.js_2.1.1_1520693286786_0.06429978771229039"},"_hasShrinkwrap":false},"2.1.2":{"name":"@demostf/demo.js","description":"A parser for TF2 demo files","version":"2.1.2","bin":{"demo-analyse":"bin/analyse.js"},"main":"build/index.js","jsnext:main":"build/es6/index.js","module":"build/es6/index.js","dependencies":{"bit-buffer":"^0.2.4","snappyjs":"^0.6.0","text-encoding-shim":"^1.0.5"},"devDependencies":{"@types/mocha":"^5.2.5","@types/node":"^10.12.24","minimist":"^1.2.0","mocha":"^5.2.0","split2":"^3.1.0","ts-node":"^8.0.2","tsconfig":"^7.0.0","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"2523a5b3d2480a484225200baa24725aa2766be1","_id":"@demostf/demo.js@2.1.2","_nodeVersion":"16.3.0","_npmVersion":"7.17.0","dist":{"integrity":"sha512-YajDzVcWcYAdlo05gWJ9zfRoymGz2fCIQ9OWJsvAyK1g5GzR96QI4fyJbvzRI/rTUPpk6Ki1mwHn5KivsVeJXw==","shasum":"6bd5a890d18aedc7270d828b093c6962281a0275","tarball":"https://registry.npmjs.org/@demostf/demo.js/-/demo.js-2.1.2.tgz","fileCount":13,"unpackedSize":20982,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0I3xCRA9TVsSAnZWagAA8H0QAJtujUOu+VJLnwm0Sdra\neUVvWvkxsdTxP8v22DQP6p33FRyTrWcEbOesEyabpHm6D4eSqJ7Mm6fMMTrU\nITYc+bdAoi+Hds+cpv62Y2BGmyfOitroSGErMWim1yR5M5fsc/A1eQm5aIw5\nuP71Gqwcp+pgDunN6eeOFoxuyGAqKTbyWV/FGChemkoghw8wqCgEjMS3pKBR\nA14qGJpkwcnkBCCkrLmrS3Q35rbu6adMRAH8sgN/Lk2rJ3594PenPZiH0+Jd\n1/EVQv/+XOqBkME1WBCeLCeFaGUKXsvepyitvKeONf+DdnlRQnZRLVsEDPrt\nq0+DZzKA8niC2VigKXRVa/MGepEXjKQRVQrKyHcMsq6st4Nvwo8U5NdzWQsk\nKzWAcFC8pmIEr4euC68cPD0u63i3Hv/o6zePQECh0CZIVDnoyz5Td/RzstQj\nWrctkR1yZsv6u36bXZhZDZ4LZ5YQSVJiN+96VfaSZUu8PWEYcnZbWE7SUZIN\nRgbQjDOcG1w+/KuQc7vj3kD8dl+xJP8W/nl1fCn/OMft2+zLlJcasPWRuMJz\nd4nxOlBnaNQo0oXsOWTohRHnd0wr3GEblAXUM/FTr58IgbPmaq0YKWw/uehK\nIb09wMjhbsOoRBpLijIMleWJOc9FTGPF24uY0atIXJuQj1deC3eZcm7jxGs7\nu6VH\r\n=Fg8h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBqPdAig0GCZd99HPMnN/XK+6vT1NMfWj1SN8n72KJY/AiEA5ZQNTU85m+8nkG+/JV6lHb8t/mhy1zxcfWPM7HjYtJc="}]},"_npmUser":{"name":"icewind1991","email":"robin@icewind.nl"},"directories":{},"maintainers":[{"name":"icewind1991","email":"robin@icewind.nl"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo.js_2.1.2_1624280560598_0.0326680588830377"},"_hasShrinkwrap":false},"2.1.3":{"name":"@demostf/demo.js","description":"A parser for TF2 demo files","version":"2.1.3","bin":{"demo-analyse":"bin/analyse.js"},"main":"build/index.js","jsnext:main":"build/es6/index.js","module":"build/es6/index.js","dependencies":{"bit-buffer":"^0.2.4","snappyjs":"^0.6.0","text-encoding-shim":"^1.0.5"},"devDependencies":{"@types/mocha":"^5.2.5","@types/node":"^10.12.24","minimist":"^1.2.0","mocha":"^5.2.0","split2":"^3.1.0","ts-node":"^8.0.2","tsconfig":"^7.0.0","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"c4dd53257a37883acbf70155ee972072d050601f","_id":"@demostf/demo.js@2.1.3","_nodeVersion":"16.3.0","_npmVersion":"7.17.0","dist":{"integrity":"sha512-oCl67AaQMGWZnhLoXUl0J8Uh8DFzXedFIZNZCY3LWlBc38LbUbRti6o58/u9k6TMaufPiJ9X/rK+DdYsA+zjkw==","shasum":"c5da0e5f237c1eee2c8149e2da0e60acea62868d","tarball":"https://registry.npmjs.org/@demostf/demo.js/-/demo.js-2.1.3.tgz","fileCount":547,"unpackedSize":1162582,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0dtwCRA9TVsSAnZWagAAFVEP/2JNRGEPH90Z2UwX5qIZ\n6ufWJ8ayLJUnYUL8sJDvYobIzOuSc86j91UHc1pNw3yNqI0h9908danCGI+D\n4WjTBHjLCai5oip6AcEoyitsLI4XhYI7JZRWQn2pIdFFWv62pU5W6OdTbUs1\nKm3RcnGRMUoQDUa/6at8BmljN914rI1odjgUMI+NF/T/SGQu0lNPKNZMF/Tv\nes1AcRhO1lLh+3y99dU/XefeiQFyrqUG0e60f7PDgK+wQ05uiNGHEmpbYikE\nYqgnWzzlW2fD2YzAE8ikTzu62EspkF2MC6eRWz3/Z3XWs+A0VtfCe13Rt6Fy\nJKbkwE5nLhP9kQXxpNNaTQPFQxrD2gLOdoEl8pVdCIFFDLcYyHiSULW0k2XK\nZJ5bn2n556UsWVtrU19UstLHd+7IVijBoshba1HJqA4JoU/9HzML8wrQzTYl\nGhVEaLVN6hj24USHth6Wn0/4MC4nbKAoEx1WIL9dKUCkAuzCGAc7d0QxvHwZ\nbhavgmZILRuwL7Iq6upfBANz3XKV0i6njO4nhq/qaHdXuytJzxBPN7NS1IQN\ns0w6JLhBCRWXoJKZJOnP0I54AHRt/fi5WnFkQZejcXEUNgt8xrEBaKVq5c90\nlggoA0PinvfnAnGZuHkJfsd0tP2zjhjJw/SC0yXB92pCqrqycLL5vcCk1eot\njM+5\r\n=zu0U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCABHLpT71FaDfWXuNlDI1neOElqmblrAUbYbRewGBZ4wIhANt34JWTkmt1H9jBlTZpgZn5OamKQjU2A5rH0gcbCqNv"}]},"_npmUser":{"name":"icewind1991","email":"robin@icewind.nl"},"directories":{},"maintainers":[{"name":"icewind1991","email":"robin@icewind.nl"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo.js_2.1.3_1624365936173_0.7747934218512689"},"_hasShrinkwrap":false}},"readme":"# demo.js\n\n[![Build Status](https://travis-ci.org/demostf/demo.js.svg?branch=master)](https://travis-ci.org/demostf/demo.js)\n\nParsing of TF2 demo files in node.js and the browser\n\n## usage\n\n### cli\n\n```\nnode bin/analyse demo.dem\n```\n\n### api\n\n```js\nvar Demo = require('@demostf/demo.js');\nvar fs = require('fs');\n\nfs.readFile(\"example.dem\", function (err, data) {\n\tif (err) throw err;\n\tvar demo = Demo.fromNodeBuffer(data);\n\tvar analyser = demo.getAnalyser();\n\tvar head = analyser.getHeader();\n\tconsole.log(head);\n\tvar body = analyser.getBody();\n\tconsole.log(body.getState());\n});\n```\n\n### more information from packets\n\nUsing the javascript api it's possible to get far more information out of a demo\nfile than the basic state provided by the cli interface.\n\n```js\nvar Demo = require('@demostf/demo.js');\nvar fs = require('fs');\n\nfs.readFile(\"example.dem\", function (err, data) {\n\tif (err) throw err;\n\tvar demo = Demo.fromNodeBuffer(data);\n\tvar analyser = demo.getAnalyser();\n\tvar head = analyser.getHeader();\n\tvar match = analyser.match;\n\tfor (const packet of analyser.getPackets()) {\n\t\t// where you can either get information directly from the packet (see ./src/Data/Packet.ts)\n\t\t// or use the `match` object which has contains an (incomplete) state of the match at the current tick\n\t}\n});\n```\n\n\n## A note on POV demos\n\nDuring the development of this project the main focus has always been on parsing\nSTV demos.\nAlthough there are currently no known issues iwth POV demos parsing them is a lot more error prone.\n\n## Credits\n\nSpecial thanks goes to\n\n- Panzer for [DemoLib](https://github.com/PazerOP/DemoLib)\n- The StatsHelix team for [DemoInfo](https://github.com/StatsHelix/demoinfo)\n- The SkadiStats for [smoke](https://github.com/skadistats/smoke)\n\nWithout the information provided by these projects this would not have been possible\n","maintainers":[{"name":"icewind1991","email":"robin@icewind.nl"}],"time":{"modified":"2022-04-05T03:44:17.249Z","created":"2017-12-16T11:38:02.986Z","2.0.2":"2017-12-16T11:38:02.986Z","2.0.3":"2017-12-16T12:45:37.219Z","2.1.0":"2018-03-08T23:33:36.430Z","2.1.1":"2018-03-10T14:48:06.897Z","2.1.2":"2021-06-21T13:02:40.750Z","2.1.3":"2021-06-22T12:45:36.414Z"},"readmeFilename":"README.md"}