{"_id":"6cclab-node-irsdk","_rev":"6-c96cbb12bfbf3de51b29b40059e4132c","name":"6cclab-node-irsdk","dist-tags":{"latest":"1.0.6"},"versions":{"1.0.0":{"name":"6cclab-node-irsdk","version":"1.0.0","keywords":["iracing"],"author":{"name":"Antti Pihlaja"},"license":"MIT","_id":"6cclab-node-irsdk@1.0.0","maintainers":[{"name":"anpato","email":"anpato1994@gmail.com"}],"dist":{"shasum":"cf1dbd6fea12c92b46edfcdd01843d596b77e2b2","tarball":"https://registry.npmjs.org/6cclab-node-irsdk/-/6cclab-node-irsdk-1.0.0.tgz","fileCount":20,"integrity":"sha512-67pW0od/RppRqBWu6xbu8OMuiTRpyoE5habCbiPjS16yDC+FQXkKK6Zsjk7SY1nkGYeGOjj3BfoQsc6husI5XA==","signatures":[{"sig":"MEUCIQC1LOWe9QIlzcr7Q8mLeSQDejYaa6JjVW4vvwozTknIvwIgcxhNNXnWQjXnnkIf/H/b4ZyhdO/dA/gXVeiEYlSctYM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114981},"main":"src/node-irsdk.js","engines":{"node":">=20"},"gitHead":"b848df97fbde68b1887bb4248a40b043c1fb9482","scripts":{"doc":"jsdoc2md -d 3 -t src/doc/README.hbs --partial src/doc/examples.hbs -m none -g none src/node-irsdk.js src/JsIrSdk.js src/IrSdkConsts.js > README.md","lint":"standard --fix","test":"npm run lint && npm run mocha","mocha":"mocha src/**/*-spec.js","ready":"npm test && node test/smoke-test.js && npm run doc","install":"prebuild-install || node-gyp rebuild","prebuild":"prebuild --all --strip","release-notes":"changelog node-irsdk latest","prebuild-upload":"prebuild --all --strip -u %GH_TOKEN%"},"_npmUser":{"name":"anpato","email":"anpato1994@gmail.com"},"standard":{"globals":["it","describe","beforeEach","afterEach","sinon"]},"repository":{"url":"https://gitea.6cclab.dev/6cclab/irsdk-node.git","type":"git"},"_npmVersion":"10.9.2","description":"iRacing SDK implementation for Node.js","directories":{},"_nodeVersion":"22.13.1","dependencies":{"nan":"2.19.0","js-yaml":"^3.14.1","prebuild-install":"^7.1.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","mocha":"^6.2.3","sinon":"^7.5.0","moment":"^2.29.1","prebuild":"13.0.0","standard":"8.6.0","changelog":"1.*","sinon-chai":"^3.5.0","sandboxed-module":"^2.0.4","jsdoc-to-markdown":"^8.0.1"},"_npmOperationalInternal":{"tmp":"tmp/6cclab-node-irsdk_1.0.0_1737578422530_0.6995068941093805","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"6cclab-node-irsdk","version":"1.0.1","keywords":["iracing"],"author":{"name":"Antti Pihlaja"},"license":"MIT","_id":"6cclab-node-irsdk@1.0.1","maintainers":[{"name":"anpato","email":"anpato1994@gmail.com"}],"dist":{"shasum":"914402e4b536ed91c5e3bcf58703dbece9e78e45","tarball":"https://registry.npmjs.org/6cclab-node-irsdk/-/6cclab-node-irsdk-1.0.1.tgz","fileCount":20,"integrity":"sha512-Rh7UVezoaydGEw7B9BlizEtgBIFpbeUP+K6REMPbOmZcGBVxEgpvTo6pUjfk8w1Re0MGGZlMou2rUfxpR37YbQ==","signatures":[{"sig":"MEUCIFIdM2NyltR/KQBzZmAjxxrYRwqtuCxBGpkykSMr7bUbAiEAyUTeB2yAilud6PyVu4El5X+Aocgi0CpB/ZIfS0g+rzo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115029},"main":"src/node-irsdk.js","engines":{"node":">=20"},"gitHead":"68e3c38c375cadd4e910fa1a42b7c178ef2029a4","scripts":{"doc":"jsdoc2md -d 3 -t src/doc/README.hbs --partial src/doc/examples.hbs -m none -g none src/node-irsdk.js src/JsIrSdk.js src/IrSdkConsts.js > README.md","lint":"standard --fix","test":"npm run lint && npm run mocha","mocha":"mocha src/**/*-spec.js","ready":"npm test && node test/smoke-test.js && npm run doc","install":"prebuild-install || node-gyp rebuild","prebuild":"prebuild --all --strip","release-notes":"changelog node-irsdk latest","prebuild-upload":"prebuild --all --strip -u %GH_TOKEN%"},"_npmUser":{"name":"anpato","email":"anpato1994@gmail.com"},"standard":{"globals":["it","describe","beforeEach","afterEach","sinon"]},"repository":{"url":"https://gitea.6cclab.dev/6cclab/irsdk-node.git","type":"git"},"_npmVersion":"10.9.2","description":"iRacing SDK implementation for Node.js","directories":{},"_nodeVersion":"22.13.1","dependencies":{"nan":"2.19.0","js-yaml":"^3.14.1","node-gyp":"^11.0.0","prebuild-install":"^7.1.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","mocha":"^6.2.3","sinon":"^7.5.0","moment":"^2.29.1","prebuild":"13.0.0","standard":"8.6.0","changelog":"1.*","sinon-chai":"^3.5.0","sandboxed-module":"^2.0.4","jsdoc-to-markdown":"^8.0.1"},"_npmOperationalInternal":{"tmp":"tmp/6cclab-node-irsdk_1.0.1_1738191011543_0.6017538551385022","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"6cclab-node-irsdk","version":"1.0.2","keywords":["iracing"],"author":{"name":"Antti Pihlaja"},"license":"MIT","_id":"6cclab-node-irsdk@1.0.2","maintainers":[{"name":"anpato","email":"anpato1994@gmail.com"}],"dist":{"shasum":"6991888728613edc1bd8fe32c15d51f333484ce6","tarball":"https://registry.npmjs.org/6cclab-node-irsdk/-/6cclab-node-irsdk-1.0.2.tgz","fileCount":20,"integrity":"sha512-fjr1PniPuJZohu0nkpE08MCo0xA77Pu3gP93XodzNyxvW7nvOOGzZwX26n688s7SAJPf7lwts3jyyaNTpvivCA==","signatures":[{"sig":"MEYCIQCvu+K2uRSRdG0xGnWZdhDeGaggd5O0W4u98ZFEArB1QgIhAMyeWBkb5WS9qQY8pYAtaYjSGvpn2FyJnxTRCdIK1v8U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115029},"main":"src/node-irsdk.js","engines":{"node":">=20"},"gitHead":"68e3c38c375cadd4e910fa1a42b7c178ef2029a4","scripts":{"doc":"jsdoc2md -d 3 -t src/doc/README.hbs --partial src/doc/examples.hbs -m none -g none src/node-irsdk.js src/JsIrSdk.js src/IrSdkConsts.js > README.md","lint":"standard --fix","test":"npm run lint && npm run mocha","mocha":"mocha src/**/*-spec.js","ready":"npm test && node test/smoke-test.js && npm run doc","install":"prebuild-install || node-gyp rebuild","prebuild":"prebuild --all --strip","release-notes":"changelog node-irsdk latest","prebuild-upload":"prebuild --all --strip -u %GH_TOKEN%"},"_npmUser":{"name":"anpato","email":"anpato1994@gmail.com"},"standard":{"globals":["it","describe","beforeEach","afterEach","sinon"]},"repository":{"url":"https://gitea.6cclab.dev/6cclab/irsdk-node.git","type":"git"},"_npmVersion":"10.9.2","description":"iRacing SDK implementation for Node.js","directories":{},"_nodeVersion":"22.13.1","dependencies":{"nan":"2.19.0","js-yaml":"^3.14.1","node-gyp":"^11.0.0","prebuild-install":"^7.1.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","mocha":"^6.2.3","sinon":"^7.5.0","moment":"^2.29.1","prebuild":"13.0.0","standard":"8.6.0","changelog":"1.*","sinon-chai":"^3.5.0","sandboxed-module":"^2.0.4","jsdoc-to-markdown":"^8.0.1"},"_npmOperationalInternal":{"tmp":"tmp/6cclab-node-irsdk_1.0.2_1738191427724_0.8879082773486664","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"6cclab-node-irsdk","version":"1.0.3","keywords":["iracing"],"author":{"name":"Antti Pihlaja"},"license":"MIT","_id":"6cclab-node-irsdk@1.0.3","maintainers":[{"name":"anpato","email":"anpato1994@gmail.com"}],"dist":{"shasum":"bc4e017a3fa673a4e08ca79008031c75f32586d8","tarball":"https://registry.npmjs.org/6cclab-node-irsdk/-/6cclab-node-irsdk-1.0.3.tgz","fileCount":20,"integrity":"sha512-mPhdAwaS/A68LeSYmnDB/NLAW7RArxCHEVEGP3AHX7Z4U/uE6lkEJCBvUPnPNr9MinND7KmBQycDO8R59Zme+w==","signatures":[{"sig":"MEYCIQC/lIfnjWqEcnT+Z6lCC2tfNta1kkmIVB+h6I9tRasGUQIhAKqTP5DbL9vn/goJsx2rKJnKx+ZI6A6pvJgPf5LLNWmm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115043},"main":"src/node-irsdk.js","engines":{"node":">=20"},"gitHead":"68e3c38c375cadd4e910fa1a42b7c178ef2029a4","scripts":{"doc":"jsdoc2md -d 3 -t src/doc/README.hbs --partial src/doc/examples.hbs -m none -g none src/node-irsdk.js src/JsIrSdk.js src/IrSdkConsts.js > README.md","lint":"standard --fix","test":"npm run lint && npm run mocha","mocha":"mocha src/**/*-spec.js","ready":"npm test && node test/smoke-test.js && npm run doc","install":"prebuild-install || node-gyp rebuild","prebuild":"prebuild --all --strip","release-notes":"changelog node-irsdk latest","prebuild-upload":"prebuild --all --strip -u %GH_TOKEN%"},"_npmUser":{"name":"anpato","email":"anpato1994@gmail.com"},"standard":{"globals":["it","describe","beforeEach","afterEach","sinon"]},"repository":{"url":"https://gitea.6cclab.dev/6cclab/irsdk-node.git","type":"git"},"_npmVersion":"10.8.2","description":"iRacing SDK implementation for Node.js","directories":{},"_nodeVersion":"20.18.2","dependencies":{"nan":"2.19.0","js-yaml":"^3.14.1","prebuild-install":"^7.1.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","mocha":"^6.2.3","sinon":"^7.5.0","moment":"^2.29.1","node-gyp":"10.3.1","prebuild":"13.0.0","standard":"8.6.0","changelog":"1.*","sinon-chai":"^3.5.0","sandboxed-module":"^2.0.4","jsdoc-to-markdown":"^8.0.1"},"_npmOperationalInternal":{"tmp":"tmp/6cclab-node-irsdk_1.0.3_1738194718739_0.9153884169831492","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"6cclab-node-irsdk","version":"1.0.4","keywords":["iracing"],"author":{"name":"Antti Pihlaja"},"license":"MIT","_id":"6cclab-node-irsdk@1.0.4","maintainers":[{"name":"anpato","email":"anpato1994@gmail.com"}],"dist":{"shasum":"7dc83e6124ba2995a2f6c9467b121e6dd9180b5b","tarball":"https://registry.npmjs.org/6cclab-node-irsdk/-/6cclab-node-irsdk-1.0.4.tgz","fileCount":21,"integrity":"sha512-ROsUF1sdJ86D37uXmsTQm0hUnTg/TYi/RDTJvJPSq/9N4fCJfsPNrQDBiRZ7/m6NUqlQsyOohrvNzbgRqAcpGg==","signatures":[{"sig":"MEYCIQDloK3LwhcgTxig0HcBrRfyJuNyFNraCb9jUKV2PonoAQIhAMx3uOa4ytX4rINAwX34uV6ece1OSWHdqlfC94mB2TUU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":348406},"main":"src/node-irsdk.js","engines":{"node":">=20"},"gitHead":"9c681a45e4b6ebd6a4028a32a7080a050fb34452","gypfile":true,"scripts":{"doc":"jsdoc2md -d 3 -t src/doc/README.hbs --partial src/doc/examples.hbs -m none -g none src/node-irsdk.js src/JsIrSdk.js src/IrSdkConsts.js > README.md","lint":"standard --fix","test":"npm run lint && npm run mocha","mocha":"mocha src/**/*-spec.js","ready":"npm test && node test/smoke-test.js && npm run doc","install":"node-gyp rebuild","release-notes":"changelog node-irsdk latest","prebuild-upload":"prebuild --all --strip -u %GH_TOKEN%"},"_npmUser":{"name":"anpato","email":"anpato1994@gmail.com"},"standard":{"globals":["it","describe","beforeEach","afterEach","sinon"]},"repository":{"url":"https://gitea.6cclab.dev/6cclab/irsdk-node.git","type":"git"},"_npmVersion":"10.8.2","description":"iRacing SDK implementation for Node.js","directories":{},"_nodeVersion":"20.18.2","dependencies":{"nan":"2.19.0","js-yaml":"^3.14.1","prebuild-install":"^7.1.3"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.5.0","mocha":"^6.2.3","sinon":"^7.5.0","moment":"^2.30.1","node-gyp":"10.3.1","prebuild":"13.0.0","standard":"8.6.0","changelog":"~1.4.2","sinon-chai":"^3.7.0","sandboxed-module":"^2.0.4","jsdoc-to-markdown":"^8.0.3"},"_npmOperationalInternal":{"tmp":"tmp/6cclab-node-irsdk_1.0.4_1738197145134_0.06564129153141485","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"6cclab-node-irsdk","version":"1.0.5","keywords":["iracing"],"author":{"name":"Antti Pihlaja"},"license":"MIT","_id":"6cclab-node-irsdk@1.0.5","maintainers":[{"name":"anpato","email":"anpato1994@gmail.com"}],"dist":{"shasum":"da4bacec95c7a62c0374ecda3184c16d4a4a7ec5","tarball":"https://registry.npmjs.org/6cclab-node-irsdk/-/6cclab-node-irsdk-1.0.5.tgz","fileCount":21,"integrity":"sha512-dy9B4OVoJTDrnAujlCXEYkcgTlfsr36wV4rP/CJSvrCCv2zHK7pCJSojDRLr86Wzl8NidgGiLr9nMLIT+GaDWg==","signatures":[{"sig":"MEUCIQC8NkfS00jWSvW8k6he5Jlf6LjbJ1/X6ED/dGJ08ZLobwIgJC4DwiP8ajaT7BaNeTj5WIPS0ES7fFrrDd4GHBtRCoY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":348555},"main":"src/node-irsdk.js","engines":{"node":">=20"},"gitHead":"9c681a45e4b6ebd6a4028a32a7080a050fb34452","scripts":{"doc":"jsdoc2md -d 3 -t src/doc/README.hbs --partial src/doc/examples.hbs -m none -g none src/node-irsdk.js src/JsIrSdk.js src/IrSdkConsts.js > README.md","lint":"standard --fix","test":"npm run lint && npm run mocha","mocha":"mocha src/**/*-spec.js","ready":"npm test && node test/smoke-test.js && npm run doc","install":"prebuild-install || @electron/node-gyp rebuild","prebuild":"prebuild --all --strip","release-notes":"changelog node-irsdk latest","prebuild-upload":"prebuild --all --strip -u %GH_TOKEN%"},"_npmUser":{"name":"anpato","email":"anpato1994@gmail.com"},"standard":{"globals":["it","describe","beforeEach","afterEach","sinon"]},"repository":{"url":"https://gitea.6cclab.dev/6cclab/irsdk-node.git","type":"git"},"_npmVersion":"10.8.2","description":"iRacing SDK implementation for Node.js","directories":{},"_nodeVersion":"20.18.2","dependencies":{"nan":"2.19.0","js-yaml":"^3.14.1","prebuild-install":"^7.1.3"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.5.0","mocha":"^6.2.3","sinon":"^7.5.0","moment":"^2.30.1","electron":"^34.0.2","node-gyp":"10.3.1","prebuild":"13.0.0","standard":"8.6.0","changelog":"~1.4.2","sinon-chai":"^3.7.0","sandboxed-module":"^2.0.4","jsdoc-to-markdown":"^8.0.3"},"_npmOperationalInternal":{"tmp":"tmp/6cclab-node-irsdk_1.0.5_1738198106771_0.5325015755758635","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"6cclab-node-irsdk","version":"1.0.6","description":"iRacing SDK implementation for Node.js","main":"src/node-irsdk.js","scripts":{"install":"prebuild-install || node-gyp rebuild","prebuild":"prebuild --all --strip","prebuild-upload":"prebuild --all --strip -u %GH_TOKEN%","test":"npm run lint && npm run mocha","mocha":"mocha src/**/*-spec.js","lint":"standard --fix","doc":"jsdoc2md -d 3 -t src/doc/README.hbs --partial src/doc/examples.hbs -m none -g none src/node-irsdk.js src/JsIrSdk.js src/IrSdkConsts.js > README.md","ready":"npm test && node test/smoke-test.js && npm run doc","release-notes":"changelog node-irsdk latest"},"keywords":["iracing"],"author":{"name":"Antti Pihlaja"},"license":"MIT","repository":{"type":"git","url":"https://gitea.6cclab.dev/6cclab/irsdk-node.git"},"engines":{"node":">=20"},"dependencies":{"js-yaml":"^3.14.1","nan":"2.19.0","prebuild-install":"^7.1.2"},"devDependencies":{"chai":"^4.2.0","changelog":"1.*","jsdoc-to-markdown":"^8.0.1","mocha":"^6.2.3","moment":"^2.29.1","node-gyp":"10.3.1","prebuild":"13.0.0","sandboxed-module":"^2.0.4","sinon":"^7.5.0","sinon-chai":"^3.5.0","standard":"8.6.0"},"standard":{"globals":["it","describe","beforeEach","afterEach","sinon"]},"_id":"6cclab-node-irsdk@1.0.6","gitHead":"9c681a45e4b6ebd6a4028a32a7080a050fb34452","_nodeVersion":"20.18.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-wCEjttWKjKz+dCBNiuIVo7QPy45G1mMqtiHELRk7hOIVlga4CEHjuDqb6/fu9QRyC2ssNbgEPy+kh7ZdxWpLFQ==","shasum":"a8e561054da94ef3c8af281255586fd413b14ac8","tarball":"https://registry.npmjs.org/6cclab-node-irsdk/-/6cclab-node-irsdk-1.0.6.tgz","fileCount":21,"unpackedSize":348515,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDKqzIU2Zr9D2NdSGTff0gGrOzwLUPNhPWUm9SIH2icrgIhAJYhn21CDa8Ur6O/2q/KqY7B+eIbYrK1xemXXlMhLcX8"}]},"_npmUser":{"name":"anpato","email":"anpato1994@gmail.com"},"directories":{},"maintainers":[{"name":"anpato","email":"anpato1994@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/6cclab-node-irsdk_1.0.6_1738198150813_0.5627153139350625"},"_hasShrinkwrap":false}},"time":{"created":"2025-01-22T20:40:22.529Z","modified":"2025-01-30T00:49:12.416Z","1.0.0":"2025-01-22T20:40:22.734Z","1.0.1":"2025-01-29T22:50:11.722Z","1.0.2":"2025-01-29T22:57:07.950Z","1.0.3":"2025-01-29T23:51:58.933Z","1.0.4":"2025-01-30T00:32:25.356Z","1.0.5":"2025-01-30T00:48:27.110Z","1.0.6":"2025-01-30T00:49:11.027Z"},"author":{"name":"Antti Pihlaja"},"license":"MIT","keywords":["iracing"],"repository":{"type":"git","url":"https://gitea.6cclab.dev/6cclab/irsdk-node.git"},"description":"iRacing SDK implementation for Node.js","maintainers":[{"name":"anpato","email":"anpato1994@gmail.com"}],"readme":"\r\n## Changes on this fork\r\n* Implement martinguders solution to https://github.com/apihlaja/node-irsdk/issues/94\r\n* Remove non valid ascii characters from iRacing user names\r\n##\r\n# node-irsdk\r\n\r\n[![Build status](https://ci.appveyor.com/api/projects/status/ukyuuq9004wy9h5b/branch/master?svg=true)](https://ci.appveyor.com/project/apihlaja/node-irsdk/branch/master)\r\n[![Greenkeeper badge](https://badges.greenkeeper.io/apihlaja/node-irsdk.svg)](https://greenkeeper.io/)\r\n[![Dependencies](https://img.shields.io/david/apihlaja/node-irsdk.svg)](https://david-dm.org/apihlaja/node-irsdk)\r\n[![devDependencies](https://img.shields.io/david/dev/apihlaja/node-irsdk.svg)](https://david-dm.org/apihlaja/node-irsdk?type=dev)\r\n[![npm version](https://img.shields.io/npm/v/node-irsdk.svg)](https://www.npmjs.com/package/node-irsdk)\r\n\r\nUnofficial [iRacing](http://www.iracing.com/) SDK implementation for Node.js.\r\n\r\n**node-irsdk** provides data access (live telemetry and session info) and most of available commands. You can find some usage examples from [utils](https://github.com/apihlaja/node-irsdk/tree/master/utils) directory, and there is some [data samples](https://github.com/apihlaja/node-irsdk/tree/master/sample-data) too.\r\n\r\n* [GitHub repo](https://github.com/apihlaja/node-irsdk)\r\n* [documentation](https://apihlaja.github.io/node-irsdk)\r\n* [forum thread](http://members.iracing.com/jforum/posts/list/3329583.page)\r\n\r\nOther iRSDK implementations:\r\n\r\n* [Official C/C++ SDK](http://members.iracing.com/jforum/posts/list/1470675.page)\r\n* [iRacingSdkWrapper (C#)](https://github.com/NickThissen/iRacingSdkWrapper)\r\n* [pyirsdk (python3)](https://github.com/kutu/pyirsdk/)\r\n* [iRacingSDK.Net](https://github.com/vipoo/iRacingSDK.Net)\r\n\r\n\r\n## Installing\r\n\r\nMake sure you have [Node.js](https://nodejs.org/) v6 x64 or later.\r\n\r\n`npm install --save node-irsdk`\r\n\r\n\r\n## API documentation\r\n\r\n<a name=\"module_irsdk\"></a>\r\n\r\n### irsdk\r\n\r\n* [irsdk](#module_irsdk)\r\n    * [.init([opts])](#module_irsdk.init) ⇒ [<code>iracing</code>](#iracing)\r\n    * [.getInstance()](#module_irsdk.getInstance) ⇒ [<code>iracing</code>](#iracing)\r\n\r\n<a name=\"module_irsdk.init\"></a>\r\n\r\n#### irsdk.init([opts]) ⇒ [<code>iracing</code>](#iracing)\r\nInitialize JsIrSdk, can be done once before using getInstance first time.\r\n\r\n**Kind**: static method of [<code>irsdk</code>](#module_irsdk)  \r\n**Returns**: [<code>iracing</code>](#iracing) - Running instance of JsIrSdk  \r\n\r\n| Param | Type | Default | Description |\r\n| --- | --- | --- | --- |\r\n| [opts] | <code>Object</code> |  | Options |\r\n| [opts.telemetryUpdateInterval] | <code>Integer</code> | <code>0</code> | Telemetry update interval, milliseconds |\r\n| [opts.sessionInfoUpdateInterval] | <code>Integer</code> | <code>0</code> | SessionInfo update interval, milliseconds |\r\n| [opts.sessionInfoParser] | [<code>sessionInfoParser</code>](#iracing..sessionInfoParser) |  | Custom parser for session info |\r\n\r\n  \r\n```js\r\nvar irsdk = require('node-irsdk')\r\n// look for telemetry updates only once per 100 ms\r\nvar iracing = irsdk.init({telemetryUpdateInterval: 100})\r\n```\r\n<a name=\"module_irsdk.getInstance\"></a>\r\n\r\n#### irsdk.getInstance() ⇒ [<code>iracing</code>](#iracing)\r\nGet initialized instance of JsIrSdk\r\n\r\n**Kind**: static method of [<code>irsdk</code>](#module_irsdk)  \r\n**Returns**: [<code>iracing</code>](#iracing) - Running instance of JsIrSdk  \r\n  \r\n```js\r\nvar irsdk = require('node-irsdk')\r\nvar iracing = irsdk.getInstance()\r\n```\r\n<a name=\"iracing\"></a>\r\n\r\n### iracing ⇐ <code>events.EventEmitter</code>\r\n**Kind**: global class  \r\n**Extends**: <code>events.EventEmitter</code>  \r\n**Emits**: [<code>Connected</code>](#iracing+event_Connected), [<code>Disconnected</code>](#iracing+event_Disconnected), [<code>Telemetry</code>](#iracing+event_Telemetry), [<code>TelemetryDescription</code>](#iracing+event_TelemetryDescription), [<code>SessionInfo</code>](#iracing+event_SessionInfo)  \r\n**See**: [EventEmitter API](https://nodejs.org/api/events.html#events_class_eventemitter)  \r\n\r\n* [iracing](#iracing) ⇐ <code>events.EventEmitter</code>\r\n    * [new JsIrSdk()](#new_iracing_new)\r\n    * _instance_\r\n        * [.Consts](#iracing+Consts) : [<code>IrSdkConsts</code>](#IrSdkConsts)\r\n        * [.camControls](#iracing+camControls) : <code>Object</code>\r\n            * [.setState(state)](#iracing+camControls.setState)\r\n            * [.switchToCar(carNum, [camGroupNum], [camNum])](#iracing+camControls.switchToCar)\r\n            * [.switchToPos(position, [camGroupNum], [camNum])](#iracing+camControls.switchToPos)\r\n        * [.playbackControls](#iracing+playbackControls) : <code>Object</code>\r\n            * [.play()](#iracing+playbackControls.play)\r\n            * [.pause()](#iracing+playbackControls.pause)\r\n            * [.fastForward([speed])](#iracing+playbackControls.fastForward)\r\n            * [.rewind([speed])](#iracing+playbackControls.rewind)\r\n            * [.slowForward([divider])](#iracing+playbackControls.slowForward)\r\n            * [.slowBackward([divider])](#iracing+playbackControls.slowBackward)\r\n            * [.search(searchMode)](#iracing+playbackControls.search)\r\n            * [.searchTs(sessionNum, sessionTimeMS)](#iracing+playbackControls.searchTs)\r\n            * [.searchFrame(frameNum, rpyPosMode)](#iracing+playbackControls.searchFrame)\r\n        * [.telemetry](#iracing+telemetry)\r\n        * [.telemetryDescription](#iracing+telemetryDescription)\r\n        * [.sessionInfo](#iracing+sessionInfo)\r\n        * [.execCmd(msgId, [arg1], [arg2], [arg3])](#iracing+execCmd)\r\n        * [.reloadTextures()](#iracing+reloadTextures)\r\n        * [.reloadTexture(carIdx)](#iracing+reloadTexture)\r\n        * [.execChatCmd(cmd, [arg])](#iracing+execChatCmd)\r\n        * [.execChatMacro(num)](#iracing+execChatMacro)\r\n        * [.execPitCmd(cmd, [arg])](#iracing+execPitCmd)\r\n        * [.execTelemetryCmd(cmd)](#iracing+execTelemetryCmd)\r\n        * [\"Connected\"](#iracing+event_Connected)\r\n        * [\"Disconnected\"](#iracing+event_Disconnected)\r\n        * [\"TelemetryDescription\"](#iracing+event_TelemetryDescription)\r\n        * [\"Telemetry\"](#iracing+event_Telemetry)\r\n        * [\"SessionInfo\"](#iracing+event_SessionInfo)\r\n        * [\"update\"](#iracing+event_update)\r\n    * _inner_\r\n        * [~sessionInfoParser](#iracing..sessionInfoParser) ⇒ <code>Object</code>\r\n\r\n<a name=\"new_iracing_new\"></a>\r\n\r\n#### new JsIrSdk()\r\nJsIrSdk is javascript implementation of iRacing SDK.\r\n\r\n  Don't use constructor directly, use [getInstance](#module_irsdk.getInstance).\r\n\r\n  \r\n```js\r\nvar iracing = require('node-irsdk').getInstance()\r\n```\r\n<a name=\"iracing+Consts\"></a>\r\n\r\n#### iracing.Consts : [<code>IrSdkConsts</code>](#IrSdkConsts)\r\niRacing SDK related constants\r\n\r\n**Kind**: instance property of [<code>iracing</code>](#iracing)  \r\n<a name=\"iracing+camControls\"></a>\r\n\r\n#### iracing.camControls : <code>Object</code>\r\nCamera controls\r\n\r\n**Kind**: instance property of [<code>iracing</code>](#iracing)  \r\n\r\n* [.camControls](#iracing+camControls) : <code>Object</code>\r\n    * [.setState(state)](#iracing+camControls.setState)\r\n    * [.switchToCar(carNum, [camGroupNum], [camNum])](#iracing+camControls.switchToCar)\r\n    * [.switchToPos(position, [camGroupNum], [camNum])](#iracing+camControls.switchToPos)\r\n\r\n<a name=\"iracing+camControls.setState\"></a>\r\n\r\n##### camControls.setState(state)\r\nChange camera tool state\r\n\r\n**Kind**: static method of [<code>camControls</code>](#iracing+camControls)  \r\n\r\n| Param | Type | Description |\r\n| --- | --- | --- |\r\n| state | [<code>CameraState</code>](#IrSdkConsts.CameraState) | new state |\r\n\r\n  \r\n```js\r\n// hide UI and enable mouse aim\r\nvar States = iracing.Consts.CameraState\r\nvar state = States.CamToolActive | States.UIHidden | States.UseMouseAimMode\r\niracing.camControls.setState(state)\r\n```\r\n<a name=\"iracing+camControls.switchToCar\"></a>\r\n\r\n##### camControls.switchToCar(carNum, [camGroupNum], [camNum])\r\nSwitch camera, focus on car\r\n\r\n**Kind**: static method of [<code>camControls</code>](#iracing+camControls)  \r\n\r\n| Param | Type | Description |\r\n| --- | --- | --- |\r\n| carNum | <code>Integer</code> \\| <code>String</code> \\| [<code>CamFocusAt</code>](#IrSdkConsts.CamFocusAt) | Car to focus on |\r\n| [camGroupNum] | <code>Integer</code> | Select camera group |\r\n| [camNum] | <code>Integer</code> | Select camera |\r\n\r\n  \r\n```js\r\n// show car #2\r\niracing.camControls.switchToCar(2)\r\n      \r\n```\r\n  \r\n```js\r\n// show car #02\r\niracing.camControls.switchToCar('02')\r\n      \r\n```\r\n  \r\n```js\r\n// show leader\r\niracing.camControls.switchToCar('leader')\r\n      \r\n```\r\n  \r\n```js\r\n// show car #2 using cam group 3\r\niracing.camControls.switchToCar(2, 3)\r\n```\r\n<a name=\"iracing+camControls.switchToPos\"></a>\r\n\r\n##### camControls.switchToPos(position, [camGroupNum], [camNum])\r\nSwitch camera, focus on position\r\n\r\n**Kind**: static method of [<code>camControls</code>](#iracing+camControls)  \r\n\r\n| Param | Type | Description |\r\n| --- | --- | --- |\r\n| position | <code>Integer</code> \\| [<code>CamFocusAt</code>](#IrSdkConsts.CamFocusAt) | Position to focus on |\r\n| [camGroupNum] | <code>Integer</code> | Select camera group |\r\n| [camNum] | <code>Integer</code> | Select camera |\r\n\r\n  \r\n```js\r\niracing.camControls.switchToPos(2) // show P2\r\n```\r\n<a name=\"iracing+playbackControls\"></a>\r\n\r\n#### iracing.playbackControls : <code>Object</code>\r\nReplay and playback controls\r\n\r\n**Kind**: instance property of [<code>iracing</code>](#iracing)  \r\n\r\n* [.playbackControls](#iracing+playbackControls) : <code>Object</code>\r\n    * [.play()](#iracing+playbackControls.play)\r\n    * [.pause()](#iracing+playbackControls.pause)\r\n    * [.fastForward([speed])](#iracing+playbackControls.fastForward)\r\n    * [.rewind([speed])](#iracing+playbackControls.rewind)\r\n    * [.slowForward([divider])](#iracing+playbackControls.slowForward)\r\n    * [.slowBackward([divider])](#iracing+playbackControls.slowBackward)\r\n    * [.search(searchMode)](#iracing+playbackControls.search)\r\n    * [.searchTs(sessionNum, sessionTimeMS)](#iracing+playbackControls.searchTs)\r\n    * [.searchFrame(frameNum, rpyPosMode)](#iracing+playbackControls.searchFrame)\r\n\r\n<a name=\"iracing+playbackControls.play\"></a>\r\n\r\n##### playbackControls.play()\r\nPlay replay\r\n\r\n**Kind**: static method of [<code>playbackControls</code>](#iracing+playbackControls)  \r\n  \r\n```js\r\niracing.playbackControls.play()\r\n```\r\n<a name=\"iracing+playbackControls.pause\"></a>\r\n\r\n##### playbackControls.pause()\r\nPause replay\r\n\r\n**Kind**: static method of [<code>playbackControls</code>](#iracing+playbackControls)  \r\n  \r\n```js\r\niracing.playbackControls.pause()\r\n```\r\n<a name=\"iracing+playbackControls.fastForward\"></a>\r\n\r\n##### playbackControls.fastForward([speed])\r\nfast-forward replay\r\n\r\n**Kind**: static method of [<code>playbackControls</code>](#iracing+playbackControls)  \r\n\r\n| Param | Type | Default | Description |\r\n| --- | --- | --- | --- |\r\n| [speed] | <code>Integer</code> | <code>2</code> | FF speed, something between 2-16 works |\r\n\r\n  \r\n```js\r\niracing.playbackControls.fastForward() // double speed FF\r\n```\r\n<a name=\"iracing+playbackControls.rewind\"></a>\r\n\r\n##### playbackControls.rewind([speed])\r\nrewind replay\r\n\r\n**Kind**: static method of [<code>playbackControls</code>](#iracing+playbackControls)  \r\n\r\n| Param | Type | Default | Description |\r\n| --- | --- | --- | --- |\r\n| [speed] | <code>Integer</code> | <code>2</code> | RW speed, something between 2-16 works |\r\n\r\n  \r\n```js\r\niracing.playbackControls.rewind() // double speed RW\r\n```\r\n<a name=\"iracing+playbackControls.slowForward\"></a>\r\n\r\n##### playbackControls.slowForward([divider])\r\nslow-forward replay, slow motion\r\n\r\n**Kind**: static method of [<code>playbackControls</code>](#iracing+playbackControls)  \r\n\r\n| Param | Type | Default | Description |\r\n| --- | --- | --- | --- |\r\n| [divider] | <code>Integer</code> | <code>2</code> | divider of speed, something between 2-17 works |\r\n\r\n  \r\n```js\r\niracing.playbackControls.slowForward(2) // half speed\r\n```\r\n<a name=\"iracing+playbackControls.slowBackward\"></a>\r\n\r\n##### playbackControls.slowBackward([divider])\r\nslow-backward replay, reverse slow motion\r\n\r\n**Kind**: static method of [<code>playbackControls</code>](#iracing+playbackControls)  \r\n\r\n| Param | Type | Default | Description |\r\n| --- | --- | --- | --- |\r\n| [divider] | <code>Integer</code> | <code>2</code> | divider of speed, something between 2-17 works |\r\n\r\n  \r\n```js\r\niracing.playbackControls.slowBackward(2) // half speed RW\r\n```\r\n<a name=\"iracing+playbackControls.search\"></a>\r\n\r\n##### playbackControls.search(searchMode)\r\nSearch things from replay\r\n\r\n**Kind**: static method of [<code>playbackControls</code>](#iracing+playbackControls)  \r\n\r\n| Param | Type | Description |\r\n| --- | --- | --- |\r\n| searchMode | [<code>RpySrchMode</code>](#IrSdkConsts.RpySrchMode) | what to search |\r\n\r\n  \r\n```js\r\niracing.playbackControls.search('nextIncident')\r\n```\r\n<a name=\"iracing+playbackControls.searchTs\"></a>\r\n\r\n##### playbackControls.searchTs(sessionNum, sessionTimeMS)\r\nSearch timestamp\r\n\r\n**Kind**: static method of [<code>playbackControls</code>](#iracing+playbackControls)  \r\n\r\n| Param | Type | Description |\r\n| --- | --- | --- |\r\n| sessionNum | <code>Integer</code> | Session number |\r\n| sessionTimeMS | <code>Integer</code> | Session time in milliseconds |\r\n\r\n  \r\n```js\r\n// jump to 2nd minute of 3rd session\r\niracing.playbackControls.searchTs(2, 2*60*1000)\r\n```\r\n<a name=\"iracing+playbackControls.searchFrame\"></a>\r\n\r\n##### playbackControls.searchFrame(frameNum, rpyPosMode)\r\nGo to frame. Frame counting can be relative to begin, end or current.\r\n\r\n**Kind**: static method of [<code>playbackControls</code>](#iracing+playbackControls)  \r\n\r\n| Param | Type | Description |\r\n| --- | --- | --- |\r\n| frameNum | <code>Integer</code> | Frame number |\r\n| rpyPosMode | [<code>RpyPosMode</code>](#IrSdkConsts.RpyPosMode) | Is frame number relative to begin, end or current frame |\r\n\r\n  \r\n```js\r\niracing.playbackControls.searchFrame(1, 'current') // go to 1 frame forward\r\n```\r\n<a name=\"iracing+telemetry\"></a>\r\n\r\n#### iracing.telemetry\r\nLatest telemetry, may be null or undefined\r\n\r\n**Kind**: instance property of [<code>iracing</code>](#iracing)  \r\n<a name=\"iracing+telemetryDescription\"></a>\r\n\r\n#### iracing.telemetryDescription\r\nLatest telemetry, may be null or undefined\r\n\r\n**Kind**: instance property of [<code>iracing</code>](#iracing)  \r\n<a name=\"iracing+sessionInfo\"></a>\r\n\r\n#### iracing.sessionInfo\r\nLatest telemetry, may be null or undefined\r\n\r\n**Kind**: instance property of [<code>iracing</code>](#iracing)  \r\n<a name=\"iracing+execCmd\"></a>\r\n\r\n#### iracing.execCmd(msgId, [arg1], [arg2], [arg3])\r\nExecute any of available commands, excl. FFB command\r\n\r\n**Kind**: instance method of [<code>iracing</code>](#iracing)  \r\n\r\n| Param | Type | Description |\r\n| --- | --- | --- |\r\n| msgId | <code>Integer</code> | Message id |\r\n| [arg1] | <code>Integer</code> | 1st argument |\r\n| [arg2] | <code>Integer</code> | 2nd argument |\r\n| [arg3] | <code>Integer</code> | 3rd argument |\r\n\r\n<a name=\"iracing+reloadTextures\"></a>\r\n\r\n#### iracing.reloadTextures()\r\nReload all car textures\r\n\r\n**Kind**: instance method of [<code>iracing</code>](#iracing)  \r\n  \r\n```js\r\niracing.reloadTextures() // reload all paints\r\n```\r\n<a name=\"iracing+reloadTexture\"></a>\r\n\r\n#### iracing.reloadTexture(carIdx)\r\nReload car's texture\r\n\r\n**Kind**: instance method of [<code>iracing</code>](#iracing)  \r\n\r\n| Param | Type | Description |\r\n| --- | --- | --- |\r\n| carIdx | <code>Integer</code> | car to reload |\r\n\r\n  \r\n```js\r\niracing.reloadTexture(1) // reload paint of carIdx=1\r\n```\r\n<a name=\"iracing+execChatCmd\"></a>\r\n\r\n#### iracing.execChatCmd(cmd, [arg])\r\nExecute chat command\r\n\r\n**Kind**: instance method of [<code>iracing</code>](#iracing)  \r\n\r\n| Param | Type | Description |\r\n| --- | --- | --- |\r\n| cmd | [<code>ChatCommand</code>](#IrSdkConsts.ChatCommand) |  |\r\n| [arg] | <code>Integer</code> | Command argument, if needed |\r\n\r\n  \r\n```js\r\niracing.execChatCmd('cancel') // close chat window\r\n```\r\n<a name=\"iracing+execChatMacro\"></a>\r\n\r\n#### iracing.execChatMacro(num)\r\nExecute chat macro\r\n\r\n**Kind**: instance method of [<code>iracing</code>](#iracing)  \r\n\r\n| Param | Type | Description |\r\n| --- | --- | --- |\r\n| num | <code>Integer</code> | Macro's number (0-15) |\r\n\r\n  \r\n```js\r\niracing.execChatMacro(1) // macro 1\r\n```\r\n<a name=\"iracing+execPitCmd\"></a>\r\n\r\n#### iracing.execPitCmd(cmd, [arg])\r\nExecute pit command\r\n\r\n**Kind**: instance method of [<code>iracing</code>](#iracing)  \r\n\r\n| Param | Type | Description |\r\n| --- | --- | --- |\r\n| cmd | [<code>PitCommand</code>](#IrSdkConsts.PitCommand) |  |\r\n| [arg] | <code>Integer</code> | Command argument, if needed |\r\n\r\n  \r\n```js\r\n// full tank, no tires, no tear off\r\niracing.execPitCmd('clear')\r\niracing.execPitCmd('fuel', 999) // 999 liters\r\niracing.execPitCmd('lf') // new left front\r\niracing.execPitCmd('lr', 200) // new left rear, 200 kPa\r\n```\r\n<a name=\"iracing+execTelemetryCmd\"></a>\r\n\r\n#### iracing.execTelemetryCmd(cmd)\r\nControl telemetry logging (ibt file)\r\n\r\n**Kind**: instance method of [<code>iracing</code>](#iracing)  \r\n\r\n| Param | Type | Description |\r\n| --- | --- | --- |\r\n| cmd | [<code>TelemCommand</code>](#IrSdkConsts.TelemCommand) | Command: start/stop/restart |\r\n\r\n  \r\n```js\r\niracing.execTelemetryCmd('restart')\r\n```\r\n<a name=\"iracing+event_Connected\"></a>\r\n\r\n#### \"Connected\"\r\niRacing, sim, is started\r\n\r\n**Kind**: event emitted by [<code>iracing</code>](#iracing)  \r\n  \r\n```js\r\niracing.on('Connected', function (evt) {\r\n  console.log(evt)\r\n})\r\n```\r\n<a name=\"iracing+event_Disconnected\"></a>\r\n\r\n#### \"Disconnected\"\r\niRacing, sim, was closed\r\n\r\n**Kind**: event emitted by [<code>iracing</code>](#iracing)  \r\n  \r\n```js\r\niracing.on('Disconnected', function (evt) {\r\n  console.log(evt)\r\n})\r\n```\r\n<a name=\"iracing+event_TelemetryDescription\"></a>\r\n\r\n#### \"TelemetryDescription\"\r\nTelemetry description, contains description of available telemetry values\r\n\r\n**Kind**: event emitted by [<code>iracing</code>](#iracing)  \r\n  \r\n```js\r\niracing.on('TelemetryDescription', function (data) {\r\n  console.log(evt)\r\n})\r\n```\r\n<a name=\"iracing+event_Telemetry\"></a>\r\n\r\n#### \"Telemetry\"\r\nTelemetry update\r\n\r\n**Kind**: event emitted by [<code>iracing</code>](#iracing)  \r\n  \r\n```js\r\niracing.on('Telemetry', function (evt) {\r\n  console.log(evt)\r\n})\r\n```\r\n<a name=\"iracing+event_SessionInfo\"></a>\r\n\r\n#### \"SessionInfo\"\r\nSessionInfo update\r\n\r\n**Kind**: event emitted by [<code>iracing</code>](#iracing)  \r\n  \r\n```js\r\niracing.on('SessionInfo', function (evt) {\r\n  console.log(evt)\r\n})\r\n```\r\n<a name=\"iracing+event_update\"></a>\r\n\r\n#### \"update\"\r\nany update event\r\n\r\n**Kind**: event emitted by [<code>iracing</code>](#iracing)  \r\n  \r\n```js\r\niracing.on('update', function (evt) {\r\n  console.log(evt)\r\n})\r\n```\r\n<a name=\"iracing..sessionInfoParser\"></a>\r\n\r\n#### iracing~sessionInfoParser ⇒ <code>Object</code>\r\nParser for SessionInfo YAML\r\n\r\n**Kind**: inner typedef of [<code>iracing</code>](#iracing)  \r\n**Returns**: <code>Object</code> - parsed session info  \r\n\r\n| Param | Type | Description |\r\n| --- | --- | --- |\r\n| sessionInfo | <code>String</code> | SessionInfo YAML |\r\n\r\n<a name=\"IrSdkConsts\"></a>\r\n\r\n### IrSdkConsts\r\nIrSdkConsts, iRacing SDK constants/enums.\r\n\r\n**Kind**: global constant  \r\n  \r\n```js\r\nvar IrSdkConsts = require('node-irsdk').getInstance().Consts\r\n```\r\n\r\n* [IrSdkConsts](#IrSdkConsts)\r\n    * [.BroadcastMsg](#IrSdkConsts.BroadcastMsg)\r\n    * [.CameraState](#IrSdkConsts.CameraState)\r\n    * [.RpyPosMode](#IrSdkConsts.RpyPosMode)\r\n    * [.RpySrchMode](#IrSdkConsts.RpySrchMode)\r\n    * [.RpyStateMode](#IrSdkConsts.RpyStateMode)\r\n    * [.ReloadTexturesMode](#IrSdkConsts.ReloadTexturesMode)\r\n    * [.ChatCommand](#IrSdkConsts.ChatCommand)\r\n    * [.PitCommand](#IrSdkConsts.PitCommand)\r\n    * [.TelemCommand](#IrSdkConsts.TelemCommand)\r\n    * [.CamFocusAt](#IrSdkConsts.CamFocusAt)\r\n\r\n<a name=\"IrSdkConsts.BroadcastMsg\"></a>\r\n\r\n#### IrSdkConsts.BroadcastMsg\r\nAvailable command messages.\r\n\r\n**Kind**: static enum of [<code>IrSdkConsts</code>](#IrSdkConsts)  \r\n**Properties**\r\n\r\n| Name | Default | Description |\r\n| --- | --- | --- |\r\n| CamSwitchPos | <code>0</code> | Switch cam, args: car position, group, camera |\r\n| CamSwitchNum | <code>1</code> | Switch cam, args, driver #, group, camera |\r\n| CamSetState | <code>2</code> | Set cam state, args: CameraState, unused, unused |\r\n| ReplaySetPlaySpeed | <code>3</code> | Set replay speed, args: speed, slowMotion, unused |\r\n| ReplaySetPlayPosition | <code>4</code> | Jump to frame, args: RpyPosMode, Frame Number (high, low) |\r\n| ReplaySearch | <code>5</code> | Search things from replay, args: RpySrchMode, unused, unused |\r\n| ReplaySetState | <code>6</code> | Set replay state, args: RpyStateMode, unused, unused |\r\n| ReloadTextures | <code>7</code> | Reload textures, args: ReloadTexturesMode, carIdx, unused |\r\n| ChatComand | <code>8</code> | Chat commands, args: ChatCommand, subCommand, unused |\r\n| PitCommand | <code>9</code> | Pit commands, args: PitCommand, parameter |\r\n| TelemCommand | <code>10</code> | Disk telemetry commands, args: TelemCommand, unused, unused |\r\n| FFBCommand | <code>11</code> | *not supported by node-irsdk**: Change FFB settings, args:  FFBCommandMode, value (float, high, low) |\r\n| ReplaySearchSessionTime | <code>12</code> | Search by timestamp, args: sessionNum, sessionTimeMS (high, low) |\r\n\r\n<a name=\"IrSdkConsts.CameraState\"></a>\r\n\r\n#### IrSdkConsts.CameraState\r\nCamera state\r\n    Camera state is bitfield; use these values to compose a new state.\r\n\r\n**Kind**: static enum of [<code>IrSdkConsts</code>](#IrSdkConsts)  \r\n**Properties**\r\n\r\n| Name | Default | Description |\r\n| --- | --- | --- |\r\n| IsSessionScreen | <code>1</code> | Is driver out of the car |\r\n| IsScenicActive | <code>2</code> | The scenic camera is active (no focus car) |\r\n| CamToolActive | <code>4</code> | Activate camera tool |\r\n| UIHidden | <code>8</code> | Hide UI |\r\n| UseAutoShotSelection | <code>16</code> | Enable auto shot selection |\r\n| UseTemporaryEdits | <code>32</code> | Enable temporary edits |\r\n| UseKeyAcceleration | <code>64</code> | Enable key acceleration |\r\n| UseKey10xAcceleration | <code>128</code> | Enable 10x key acceleration |\r\n| UseMouseAimMode | <code>256</code> | Enable mouse aim |\r\n\r\n<a name=\"IrSdkConsts.RpyPosMode\"></a>\r\n\r\n#### IrSdkConsts.RpyPosMode\r\n**Kind**: static enum of [<code>IrSdkConsts</code>](#IrSdkConsts)  \r\n**Properties**\r\n\r\n| Name | Default | Description |\r\n| --- | --- | --- |\r\n| Begin | <code>0</code> | Frame number is relative to beginning |\r\n| Current | <code>1</code> | Frame number is relative to current frame |\r\n| End | <code>2</code> | Frame number is relative to end |\r\n\r\n<a name=\"IrSdkConsts.RpySrchMode\"></a>\r\n\r\n#### IrSdkConsts.RpySrchMode\r\n**Kind**: static enum of [<code>IrSdkConsts</code>](#IrSdkConsts)  \r\n**Properties**\r\n\r\n| Name | Default |\r\n| --- | --- |\r\n| ToStart | <code>0</code> | \r\n| ToEnd | <code>1</code> | \r\n| PrevSession | <code>2</code> | \r\n| NextSession | <code>3</code> | \r\n| PrevLap | <code>4</code> | \r\n| NextLap | <code>5</code> | \r\n| PrevFrame | <code>6</code> | \r\n| NextFrame | <code>7</code> | \r\n| PrevIncident | <code>8</code> | \r\n| NextIncident | <code>9</code> | \r\n\r\n<a name=\"IrSdkConsts.RpyStateMode\"></a>\r\n\r\n#### IrSdkConsts.RpyStateMode\r\n**Kind**: static enum of [<code>IrSdkConsts</code>](#IrSdkConsts)  \r\n**Properties**\r\n\r\n| Name | Default | Description |\r\n| --- | --- | --- |\r\n| EraseTape | <code>0</code> | Clear any data in the replay tape (works only if replay spooling disabled) |\r\n\r\n<a name=\"IrSdkConsts.ReloadTexturesMode\"></a>\r\n\r\n#### IrSdkConsts.ReloadTexturesMode\r\n**Kind**: static enum of [<code>IrSdkConsts</code>](#IrSdkConsts)  \r\n**Properties**\r\n\r\n| Name | Default |\r\n| --- | --- |\r\n| All | <code>0</code> | \r\n| CarIdx | <code>1</code> | \r\n\r\n<a name=\"IrSdkConsts.ChatCommand\"></a>\r\n\r\n#### IrSdkConsts.ChatCommand\r\n**Kind**: static enum of [<code>IrSdkConsts</code>](#IrSdkConsts)  \r\n**Properties**\r\n\r\n| Name | Default | Description |\r\n| --- | --- | --- |\r\n| Macro | <code>0</code> | Macro, give macro num (0-15) as argument |\r\n| BeginChat | <code>1</code> | Open up a new chat window |\r\n| Reply | <code>2</code> | Reply to last private chat |\r\n| Cancel | <code>3</code> | Close chat window |\r\n\r\n<a name=\"IrSdkConsts.PitCommand\"></a>\r\n\r\n#### IrSdkConsts.PitCommand\r\n**Kind**: static enum of [<code>IrSdkConsts</code>](#IrSdkConsts)  \r\n**Properties**\r\n\r\n| Name | Default | Description |\r\n| --- | --- | --- |\r\n| Clear | <code>0</code> | Clear all pit checkboxes |\r\n| WS | <code>1</code> | Clean the winshield, using one tear off |\r\n| Fuel | <code>2</code> | Request fuel, optional argument: liters |\r\n| LF | <code>3</code> | Request new left front, optional argument: pressure in kPa |\r\n| RF | <code>4</code> | Request new right front, optional argument: pressure in kPa |\r\n| LR | <code>5</code> | Request new left rear, optional argument: pressure in kPa |\r\n| RR | <code>6</code> | Request new right rear, optional argument: pressure in kPa |\r\n| ClearTires | <code>7</code> | Clear tire pit checkboxes |\r\n| FR | <code>8</code> | Request a fast repair |\r\n| ClearWS | <code>9</code> | Disable clear windshield |\r\n| ClearFR | <code>10</code> | Disable fast repair |\r\n| ClearFuel | <code>11</code> | Disable refueling |\r\n\r\n<a name=\"IrSdkConsts.TelemCommand\"></a>\r\n\r\n#### IrSdkConsts.TelemCommand\r\n**Kind**: static enum of [<code>IrSdkConsts</code>](#IrSdkConsts)  \r\n**Properties**\r\n\r\n| Name | Default | Description |\r\n| --- | --- | --- |\r\n| Stop | <code>0</code> | Turn telemetry recording off |\r\n| Start | <code>1</code> | Turn telemetry recording on |\r\n| Restart | <code>2</code> | Write current file to disk and start a new one |\r\n\r\n<a name=\"IrSdkConsts.CamFocusAt\"></a>\r\n\r\n#### IrSdkConsts.CamFocusAt\r\nWhen switching camera, these can be used instead of car number / position\r\n\r\n**Kind**: static enum of [<code>IrSdkConsts</code>](#IrSdkConsts)  \r\n**Properties**\r\n\r\n| Name | Default | Description |\r\n| --- | --- | --- |\r\n| Incident | <code>-3</code> |  |\r\n| Leader | <code>-2</code> |  |\r\n| Exciting | <code>-1</code> |  |\r\n| Driver | <code>0</code> | Use car number / position instead of this |\r\n\r\n\r\n\r\n## Development\r\n\r\nTo develop `node-irsdk` itself, you need working working installation of\r\n[node-gyp](https://github.com/nodejs/node-gyp#on-windows).\r\n\r\nUseful commands:\r\n\r\n* `npm install` builds binary addon\r\n* `npm run ready` runs tests and updates docs\r\n\r\n### Making a new release\r\n\r\n1. Check if license file needs updating\r\n2. `npm run ready`\r\n3. Tag new version using `npm version`, push to Github\r\n4. Wait for Appveyor to upload binaries\r\n5. `npm publish`\r\n6. Add release notes to Github, helper `npm run release-notes`.\r\n\r\n## License\r\n\r\nReleased under the [MIT License](https://github.com/apihlaja/node-irsdk/blob/master/LICENSE.md).\r\n\r\n\r\n## Credits\r\n\r\nParts of original irsdk used, license available here: https://github.com/apihlaja/node-irsdk/blob/master/src/cpp/irsdk/irsdk_defines.h (BSD-3-Clause)\r\n","readmeFilename":"README.md"}