{"_id":"ide_qsys","_rev":"28-1d3e4cad1ba7c0fd14f9678bd316ec42","name":"ide_qsys","dist-tags":{"latest":"3.1.2"},"versions":{"1.0.0":{"name":"ide_qsys","version":"1.0.0","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@1.0.0","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"72f1bf1bb99455c29183ae3e366de24ab65c9984","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-1.0.0.tgz","fileCount":6,"integrity":"sha512-4PtTF2ZQ7JEAbd1rGOzQXY9bXaKddgW23ZmQoI11uiyNDI/ptvlqvpFu0sLbdrOeVa9srDxWOrCzZopnb8sXKw==","signatures":[{"sig":"MEUCIA185Gy4JYbGQJatE3WyiehJ1xbyLxqiBh9luWIzWQYOAiEArTCO+P95RbVLmJMlc6H4IcEmhpNMjK1tYTbF5hwJ1wE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":43612},"main":"index.js","type":"module","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"10.4.0","description":"future npm module, based off of ide importer","directories":{},"_nodeVersion":"21.2.0","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_1.0.0_1708900927266_0.5187072185724972","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"ide_qsys","version":"1.0.1","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@1.0.1","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"ca09f435fdba864f3ca2871d78a68bcc9eaec7a5","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-1.0.1.tgz","fileCount":5,"integrity":"sha512-GkUwUM91I858crziRbXNs0ilQHujnXU1ViSBsKLDDvECrmGIHUU+drD/BZEMmdMhJtsumX3wNK494yDVCyBaZA==","signatures":[{"sig":"MEQCIGaLmfOKcDdzD6spcX2Qk0JNYp2ad2tYrSq1fHmvb1MSAiAZaoMarr0Ljg1CH9+eNbkylhUxZ9HHU00+ml/8M82T3g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":43551},"main":"index.js","type":"module","gitHead":"653072f7897280f97ff535d9b4e01f75e9c06591","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"10.4.0","description":"future npm module, based off of ide importer","directories":{},"_nodeVersion":"21.2.0","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_1.0.1_1709174741081_0.4671486558768758","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"ide_qsys","version":"1.1.0","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@1.1.0","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"4b6521e61421d293365807cceb3c89736b5e73c2","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-1.1.0.tgz","fileCount":6,"integrity":"sha512-qrxs/hJoj+cQkT07h5aDttWc1NKNxhuKynAQRZ/u2ju/nrW7d0s5QiTLI8m9ZAt+g6Ys3qfR4ANdLMytEN2Qrw==","signatures":[{"sig":"MEYCIQDOrf2JEvSTclTAhaNbChsSLRTG3gWkwLOd9PUB5Uif1wIhAKcBL2kyCY+q9jsdHkRkBp2TlltVayhA1/4ihFHW1hNv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":47653},"main":"index.js","type":"module","gitHead":"46ea0a805bd03c7ca7b289774e2c4204c1671c06","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"9.8.1","description":"programatically get and set data from a Q-Sys core","directories":{},"_nodeVersion":"19.2.0","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_1.1.0_1712113254139_0.3121038854059315","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"ide_qsys","version":"1.2.0","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@1.2.0","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"a6e154b3f994be5f3acf1932befb0f4a4e9ee42a","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-1.2.0.tgz","fileCount":6,"integrity":"sha512-hN/uBfwtBNsjzSCDqIZe3azMOgbSHjONgN/gGpURpapG/qlilKd0AN3btivIjnoNzs2spZkDBdSuKXH7AyhHqQ==","signatures":[{"sig":"MEUCIQCfE23fr0t2jfKpS2a+vGPKqZoEI8vJZcunKqx+2UJUhQIgHqwHd4W+F2kPy8iKBUM61V79Hge2UOOHOoUgI7OVq+g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":49145},"main":"index.js","type":"module","gitHead":"4bf2afa564a1aeeb09bfc5a2ef20621d1b9edd29","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"9.8.1","description":"programatically get and set data from a Q-Sys core","directories":{},"_nodeVersion":"19.2.0","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_1.2.0_1712169597131_0.7155462138755999","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"ide_qsys","version":"1.3.0","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@1.3.0","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"3a03f0a2a722c5d1866e15bb1d0a59aed7d8a25d","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-1.3.0.tgz","fileCount":7,"integrity":"sha512-XZfNz3UHSfaIAlVHUbIiOg5r3R5ys5z5yajb0AX5j40oy21MC+PoojDwsC7mEFEA0gcx0d/X5xMXCwiyBhpdzw==","signatures":[{"sig":"MEQCIGhmI8ec0m4h46RYtE8w3drbTY5u3Y+dqDEXY2JWeD8WAiBWEFNGSSnjA4sEHFdk1Jl6OQoHuXGdENNBmlrdLvTapw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":49913},"main":"index.js","type":"module","gitHead":"b5bf07897364c9cfaefe2250595feed45de2ed9a","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"9.8.1","description":"programatically get and set data from a Q-Sys core","directories":{},"_nodeVersion":"19.2.0","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_1.3.0_1712188904253_0.22249662660347158","host":"s3://npm-registry-packages"}},"1.3.1":{"name":"ide_qsys","version":"1.3.1","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@1.3.1","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"d2d5a6d1de877d648acb87d45c72936925145a01","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-1.3.1.tgz","fileCount":6,"integrity":"sha512-cFgEu8BGmYwL8+lJ1yb4+WfuvttmHIV9ggeEQCi7R9ox5n8lX3LrAuDQmhe32GF58jbXE5W5cK4iqgK+7uD+8A==","signatures":[{"sig":"MEUCIQD1DdknEP1c3QD+I7hZewnaQwpj1bqy2/3qDlFzqdeMtQIgH59NCZ9vHCRu2tmQ2u9LX6827snDHppzdLM5p48iAe4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50040},"main":"index.js","type":"module","gitHead":"66a28477387d4bfdd9a7db381ef0371581d249bb","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"9.8.1","description":"programatically get and set data from a Q-Sys core","directories":{},"_nodeVersion":"19.2.0","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_1.3.1_1712197256552_0.47941234076176187","host":"s3://npm-registry-packages"}},"1.4.1":{"name":"ide_qsys","version":"1.4.1","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@1.4.1","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"fd028cb3b6906f1a684b5f01db3f4bae57161b18","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-1.4.1.tgz","fileCount":6,"integrity":"sha512-UCYbgtuFjQYE3CUNR4J/lqqBQaq49o6tiMw4aAOytRzUU9ufymDmeJkJ7m8/JFssrmn79kDNI5vlvoQsGjCuhg==","signatures":[{"sig":"MEQCIGkZIHj1DMXIXibWQGjDC21S7iRYQEyppfAw6DQ9P4XMAiAt2p4x2HFckNPqG3zMPpc4+8Iz6qfvG7Q9AAQsfdpRag==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":49476},"main":"index.js","type":"module","gitHead":"7509c096cbdd1da692e6e8a46a1e19f160a2dae6","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"9.8.1","description":"programatically get and set data from a Q-Sys core","directories":{},"_nodeVersion":"19.2.0","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_1.4.1_1712259889312_0.3727950321325968","host":"s3://npm-registry-packages"}},"1.4.2":{"name":"ide_qsys","version":"1.4.2","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@1.4.2","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"17ebba003691836244bddd65bb6a31e824e48faf","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-1.4.2.tgz","fileCount":7,"integrity":"sha512-u3lMMdTLwH1PfsslHn8npTzfpWPu+xWIGE7LjgDt8UOMa2aRTKTTGZdEQ0tE7KqIt94YIsA+KOIO3sJJEVlwYQ==","signatures":[{"sig":"MEYCIQD6NkkBTphggnCYNdL5SUKwbghGCoMGlLqHbaZ/EudR/AIhANgSS/Vi7GxojKJBObVMefQmginEOmtwQpoq75kAx3j0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":52016},"main":"index.js","type":"module","gitHead":"e9d2d8438f52d8df96c5d37414097e272455fb16","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"10.4.0","description":"programatically get and set data from a Q-Sys core","directories":{},"_nodeVersion":"21.2.0","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_1.4.2_1712297495218_0.03323690031927562","host":"s3://npm-registry-packages"}},"1.4.3":{"name":"ide_qsys","version":"1.4.3","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@1.4.3","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"bdaf899eda73cda24753c93aed1dcdb7874c18ba","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-1.4.3.tgz","fileCount":8,"integrity":"sha512-3BosfgOCSDIHhSLZZ/K1lxUCUHTMTxV++ZGaoR2DgLpUdlHiOOmVtWIMTveJNoD4Mc7eEX9/K69THgtqprWHBA==","signatures":[{"sig":"MEUCIGS3VEMvXJrNOoHOs/GWHiqio3+lEuqlJOeag1dKLYpvAiEA6uIirNEE916kwG53ejAwEk7NPLzTsxWvZI3scNy4k8A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":52237},"main":"index.js","type":"module","gitHead":"fde3198760005dfb601398ce78e7fae82aae8d81","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"10.4.0","description":"programatically get and set data from a Q-Sys core","directories":{},"_nodeVersion":"21.2.0","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_1.4.3_1713237272920_0.7649689742934453","host":"s3://npm-registry-packages"}},"1.4.4":{"name":"ide_qsys","version":"1.4.4","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@1.4.4","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"f95d42eb9ea150a18d1804891b365cb6f76048ce","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-1.4.4.tgz","fileCount":5,"integrity":"sha512-WN0L3CKLyHcoKM0ZfwFRJBqUliRE3vWuMWWCwTjvbKAyQ1tBSBWcBXbn7hCtLafMn7iuP8rHEhafM2h1lIDCWA==","signatures":[{"sig":"MEUCIQCtTuHejOYyTzMBVnTA0wjaHnppaL1GL9P6TPxNnQZg+gIgHS254tWAti3Hyq6OzGGV7V1snZHCtNcdjvbzc1fnzNQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":49918},"main":"index.js","type":"module","gitHead":"2101be9674bbe6b7e7e713554d6529a14025a1d6","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"10.4.0","description":"programatically get and set data from a Q-Sys core","directories":{},"_nodeVersion":"21.2.0","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_1.4.4_1713657229119_0.2578656817627638","host":"s3://npm-registry-packages"}},"1.5.1":{"name":"ide_qsys","version":"1.5.1","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@1.5.1","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"e66b69ff159f233f4501122b393fd3297c30e2e9","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-1.5.1.tgz","fileCount":5,"integrity":"sha512-eefgxczoXBWbLZRazg81BzsXKYyzyIiOGbiZcbLwXvFe+EmGmSRLepHzbne62w9+ii64+DXHtCNpWqY59XvT3Q==","signatures":[{"sig":"MEYCIQDuP7Y/tscFBUhXd6P9fUTFtcjVUYgjY95xw0c1h1gA2gIhAKYpaSzub4n7h2TxeRE5icmWosvyi/6tKqQgp3rwZCG/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":49995},"main":"index.js","type":"module","gitHead":"6e7bc1f8c164d3c1b5c0cd0be2fbe0db6e453750","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"9.8.1","description":"programatically get and set data from a Q-Sys core","directories":{},"_nodeVersion":"19.2.0","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_1.5.1_1713932915115_0.21078689919213867","host":"s3://npm-registry-packages"}},"1.5.2":{"name":"ide_qsys","version":"1.5.2","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@1.5.2","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"fcdf1b9011de9145935fc1f61966bc81827786fa","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-1.5.2.tgz","fileCount":5,"integrity":"sha512-n6WuVk/TDsQ1Aa2TBPpcW73ufU2oIY3b8Vs3JzcIArwhDh2jW+sTQ/1/UPLTIlVS0sZ61CKT//PdeWUvVjuavA==","signatures":[{"sig":"MEUCIQC1gr68qDbWQF/epHCbRzHxCpQo99XyTKG+9HJ/xwKDwwIgPDt/JnWU2m4Khz/1M0ZNwwPSpENJhp8QfZwJVPfLAe0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50182},"main":"index.js","type":"module","gitHead":"dabce35a1561e90f707ee156ea5b87541457d214","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"9.8.1","description":"programatically get and set data from a Q-Sys core","directories":{},"_nodeVersion":"19.2.0","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_1.5.2_1713980331436_0.4558386627306694","host":"s3://npm-registry-packages"}},"1.5.3":{"name":"ide_qsys","version":"1.5.3","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@1.5.3","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"8ae1267f153eb1255eeb7fa6b000baeb63340635","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-1.5.3.tgz","fileCount":5,"integrity":"sha512-JDOR6pMF7Gvw8d3pzZwo8klLV9X5sLX6MrbpGOPN747Zegqf1jFhIvSnr/OSIt/K3ixAxO8MhITAvA2+u61MzA==","signatures":[{"sig":"MEQCICLog0Lr5GDSXpCGVv8OISvTnqSAl4QLjKtou+nbdz6IAiBMF6qmzF/N6APEjA/KhFWFylnPvkymuXZQRF35C5Ojgw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":49617},"main":"index.js","type":"module","gitHead":"9931d9332b8c3c965f21c3ebc8539fb00fb5d8f3","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"9.8.1","description":"programatically get and set data from a Q-Sys core","directories":{},"_nodeVersion":"19.2.0","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_1.5.3_1714069869317_0.6259979394514812","host":"s3://npm-registry-packages"}},"1.5.4":{"name":"ide_qsys","version":"1.5.4","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@1.5.4","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"77f7790fddeac1d87c8ee3cd90e64098ba162b35","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-1.5.4.tgz","fileCount":5,"integrity":"sha512-ERvU7Ui/DXestV0WSNna9wpQ5RpgpDuLohK+ZUbhx7VrggOZ1KFeyuGSM48MZC7DEfQPhNsLVJ681opKbiY5Qg==","signatures":[{"sig":"MEYCIQCYW32aUuQ8kq7eYWWwRMrJ7CO/JUr//bIMB9Z+98WTsQIhAOF0r3lUB4vgjv6RZWJ3+meIk91dVGh2hveB8kZ+0msM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":49738},"main":"index.js","type":"module","gitHead":"67c1c39a32fe2dee94cb6b40a087c974418d6da2","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"9.8.1","description":"programatically get and set data from a Q-Sys core","directories":{},"_nodeVersion":"19.2.0","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_1.5.4_1714080813148_0.6550451279607328","host":"s3://npm-registry-packages"}},"1.5.5":{"name":"ide_qsys","version":"1.5.5","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@1.5.5","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"96eb57980ddf93f35697723f095208b581eeb413","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-1.5.5.tgz","fileCount":5,"integrity":"sha512-Q5TzJpsdibg0rtSwaC+UZoXykVmCwPOLp8mRluaYW0VtL8qXz+/N0iUeTbw7zgQG/fnYob5Gc6dvKrP5IKrS5A==","signatures":[{"sig":"MEUCIQDAoghJTC2Q7wnOb33FKywTDLs+Brx3HmRq0EDri6x8BgIgSehTrMMld01WR1c0ZxAUEwVw6+WvFFcKWmXFiB84HKQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":49686},"main":"index.js","type":"module","gitHead":"1d70fd8819bfb50d3106152ae3f239771cb8e5d8","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"9.8.1","description":"programatically get and set data from a Q-Sys core","directories":{},"_nodeVersion":"19.2.0","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_1.5.5_1714081854016_0.911226957139047","host":"s3://npm-registry-packages"}},"1.5.6":{"name":"ide_qsys","version":"1.5.6","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@1.5.6","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"374a9b96c95a29afc7afcef511f9754c9f432e6a","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-1.5.6.tgz","fileCount":5,"integrity":"sha512-KShNqtRr8fCHQy1pyJchrizyLMopkAeTA2KZWrn1uzsco8jkOLaN200mhT+oC96WcouWddfq/lA/n8CMmNhBOw==","signatures":[{"sig":"MEQCIEykbTfw7TM6uS6DZRK7/KWo+4gf2kHt83t+vb0JbqaHAiA3cwZJ/5GedYAg00GaWipCTRwUJJ7tv18qpFHEWsBa7g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":49686},"main":"index.js","type":"module","gitHead":"da9e8cf52181942f52bb7f59e22be072dc09a14b","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"9.8.1","description":"programatically get and set data from a Q-Sys core","directories":{},"_nodeVersion":"19.2.0","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_1.5.6_1714082074100_0.29831626341567685","host":"s3://npm-registry-packages"}},"1.5.7":{"name":"ide_qsys","version":"1.5.7","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@1.5.7","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"73f48fa867a78b245efc09045d80614c165b811b","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-1.5.7.tgz","fileCount":5,"integrity":"sha512-cwvh1TYeloXz2vO+8IOu2kADB3nuMCaEQr0HyBj73S5t07lDA2gkpn4U5fwRe5pf5yC3a3TJw0aCLWUf3pdETA==","signatures":[{"sig":"MEUCIQDX1NHWtDqWV4cCYk0j377Tr4srwK9Yd1PM6KBAKnFBOwIgV0L5iJryViywdkAU/3eCVTAJnDPf9ys4sHyyOrdZLPQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":49694},"main":"index.js","type":"module","gitHead":"1d44649834efe1af5562acfb010376227d9b671b","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"10.8.1","description":"programatically get and set data from a Q-Sys core","directories":{},"_nodeVersion":"22.2.0","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_1.5.7_1720653563116_0.5006145586827033","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"ide_qsys","version":"2.0.0","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc","component-management","script-monitoring","core-diagnostics","av-control","audio-visual"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@2.0.0","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"1ad5497229288fb4e62e2a470a15862c647562ea","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-2.0.0.tgz","fileCount":6,"integrity":"sha512-+qq9K6NNz4OmXgyxIhlqRPElUQUVGlZBnznjwCGU5Oxr7iZnTcXVIQ2bu2/n/nvE3nL/oS9mO8gHbVXrwq+DHw==","signatures":[{"sig":"MEUCIG2JGG7a8UgzM/CB8NYzxxhW9lks8K3GaKk5UehJSnkhAiEAmo79U5qxIqK2/i9o8DcbpDJQSwu2xIe3yXQxg7HFqr0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78136},"main":"index.js","type":"module","gitHead":"78beeb63ddbc45183b54337cf7ce2ae0598912c2","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"11.4.2","description":"Enhanced Q-Sys core interaction library with component management, script monitoring, and advanced diagnostics","directories":{},"_nodeVersion":"24.4.1","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_2.0.0_1757459484754_0.0018073478708033885","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"ide_qsys","version":"2.0.1","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc","component-management","script-monitoring","core-diagnostics","av-control","audio-visual"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@2.0.1","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"d914a39b95e34f263153cd425e3f2be20bd33813","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-2.0.1.tgz","fileCount":6,"integrity":"sha512-EmEUBGjbjca7LZKdZ+zRiDewHOn3m51l7zAltJkjo3oES5HOjlZVWz6nIUo/tVcqGSQubi0p5NXLSZFsqJ9gaw==","signatures":[{"sig":"MEQCIC8AqDYO0ZAX0miiKkGhT1/M5RppgmZwJwJ6iLSmG6CiAiB0i95ZF302lt911WvDuM3ig2mXisYpzEdRVpZ7nrRpQw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83865},"main":"index.js","type":"module","gitHead":"fcbbc6c1e343a74268ae836f1f72076720a452b5","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"11.4.2","description":"Enhanced Q-Sys core interaction library with component management, script monitoring, and advanced diagnostics","directories":{},"_nodeVersion":"24.4.1","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_2.0.1_1757523729450_0.47939190579419844","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"ide_qsys","version":"2.0.2","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc","component-management","script-monitoring","core-diagnostics","av-control","audio-visual"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@2.0.2","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"fc33c62590365d2a2e6207c5a34e86a2bfc4ca9d","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-2.0.2.tgz","fileCount":6,"integrity":"sha512-ntukjneTMv7IVG7vGfqjOCELuPZJXoBr1AYSfz7F4jLDMO9cjPMMClusDNVXn3E45yKvzsbNvlqqEQ0a0EIdsQ==","signatures":[{"sig":"MEQCIDG8Au4eAaoFJsXUc7xZ2X+r8QlFRHJzTrKXZYfbX3BxAiBY2VMhna65VJuJhe4VQaa47go9/lqJbMg44sPnNQxBNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83866},"main":"index.js","type":"module","gitHead":"746e50c7feea9f53511d1f53d53bb9c4dd51d027","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"10.9.2","description":"Enhanced Q-Sys core interaction library with component management, script monitoring, and advanced diagnostics","directories":{},"_nodeVersion":"23.7.0","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_2.0.2_1761884523317_0.2648036801354323","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"ide_qsys","version":"3.0.0","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc","component-management","script-monitoring","core-diagnostics","av-control","audio-visual"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@3.0.0","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"48b5bfae4f2da0243d14de7e7af64f264e3decfa","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-3.0.0.tgz","fileCount":5,"integrity":"sha512-RNFRCg/AZpFZjnyxN56ErNSMCXldusA2Gb2Z5S03q+zyJieqhQLgCoP2KvATyUg8YZ3z9ydQguc5sbAalZegeQ==","signatures":[{"sig":"MEUCIH1vPvIvll6Qg5oZGNmr4Lltj89Q1tgo4PwbdsanehTEAiEA0VCBROS4SX6BFoG7EXIrXeKKURKhSfkSwHpyG7PzAxo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69669},"main":"index.js","type":"module","gitHead":"ad2db1ec9fda05868d37dd882de9a46ab7427acd","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"11.6.0","description":"Enhanced Q-Sys core interaction library with component management, script monitoring, and advanced diagnostics","directories":{},"_nodeVersion":"24.4.1","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_3.0.0_1762209658908_0.5169683480794112","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"ide_qsys","version":"3.0.1","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc","component-management","script-monitoring","core-diagnostics","av-control","audio-visual"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@3.0.1","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"4a15b5654f3b106087b7a8a9cb08028262e29e22","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-3.0.1.tgz","fileCount":5,"integrity":"sha512-hGS5N0QIPB4GiD/UxbMd+uGdf3FV8VOjdsuvcr8QqkMIiUHYSrLZSQYBDzg0ADre1vnFQfnV3QSoOUwpBAj2+Q==","signatures":[{"sig":"MEUCIG8COA5Uy1+3iY4KWntz3iqxjJNl/PbyKllIvFTePHH+AiEA2zStgoI2Z6YmQ9UhH8HzO8fsrbFIHgjwPcQQ3Cv6jg4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87629},"main":"index.js","type":"module","gitHead":"ad2db1ec9fda05868d37dd882de9a46ab7427acd","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"11.6.0","description":"Enhanced Q-Sys core interaction library with component management, script monitoring, and advanced diagnostics","directories":{},"_nodeVersion":"24.4.1","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_3.0.1_1762213544149_0.9977916553842607","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"ide_qsys","version":"3.0.2","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc","component-management","script-monitoring","core-diagnostics","av-control","audio-visual"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@3.0.2","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"79cb496186abad1aa9f540cecffd79799f344fca","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-3.0.2.tgz","fileCount":5,"integrity":"sha512-t0jNgBIe1D5CV8Lv8sqvWKFMrKzX8SRsVAviR8YO7/+fZTrvtwMM693Oe4PpZkSwUOLgCpsb05mkt+i4P8P+0A==","signatures":[{"sig":"MEQCICl/+FEtt8vWxaD/Fn+DqrVKCf0WUWmCi0zVB8vTceiDAiAo2lwV2dhjyBlLMAmfn/0LFwBs6R1Y096XfOvxmQm43Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87682},"main":"index.js","type":"module","gitHead":"e7da4adf6083ca7214174f7d1f764fb67bb69315","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"11.6.0","description":"Enhanced Q-Sys core interaction library with component management, script monitoring, and advanced diagnostics","directories":{},"_nodeVersion":"24.4.1","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_3.0.2_1762213962825_0.5993034533121524","host":"s3://npm-registry-packages-npm-production"}},"3.0.3":{"name":"ide_qsys","version":"3.0.3","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc","component-management","script-monitoring","core-diagnostics","av-control","audio-visual"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@3.0.3","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"95d3c625499a5378959815cc675c7f94b3319eb3","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-3.0.3.tgz","fileCount":6,"integrity":"sha512-Xxi86o542HDB7p6/+vzn++mcyKRL7w7LDimVXmPe8bHrrmD1kRKdnr2N1icYZQInT9khKP+PwnUGj7zSGKOMEA==","signatures":[{"sig":"MEYCIQCPtkQAJbrlD1C2x3FcmrtoueVDmOqDGFUg263TdmrD5gIhAKjkgPuVi3qdE2ferrVhMhgVX9PXWvM5i/CwLpJPrK+L","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131372},"main":"index.js","type":"module","gitHead":"e7da4adf6083ca7214174f7d1f764fb67bb69315","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"11.6.0","description":"Enhanced Q-Sys core interaction library with component management, script monitoring, and advanced diagnostics","directories":{},"_nodeVersion":"24.4.1","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_3.0.3_1762214939858_0.5207038521748286","host":"s3://npm-registry-packages-npm-production"}},"3.0.4":{"name":"ide_qsys","version":"3.0.4","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc","component-management","script-monitoring","core-diagnostics","av-control","audio-visual"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@3.0.4","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"7be7a8f1e3dedb5e0ad903767b16e2af6fb88603","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-3.0.4.tgz","fileCount":7,"integrity":"sha512-IvIh6BgCIZnwTYfr1FtZuskpXvrnAWAGI5OlALCxLeyOyEc91Qfe1xpGfry1S3Aq4HxxEPGc0/4e+hOPNh7D4Q==","signatures":[{"sig":"MEUCIQDWxMVS0SHriYP1pW0RVksN+vZq4WVrt47IqyROGVmqhQIgPG3r6+BDhkHXIrLUOjOfWlv98yGDbC0HoovE6fXYr2M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182383},"main":"index.js","type":"module","gitHead":"bf959daeaebc7b33aa837b4b4d1806688d5cda81","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"11.6.0","description":"Enhanced Q-Sys core interaction library with component management, script monitoring, and advanced diagnostics","directories":{},"_nodeVersion":"24.4.1","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_3.0.4_1762220735912_0.5021420381095452","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"ide_qsys","version":"3.1.0","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc","component-management","script-monitoring","core-diagnostics","av-control","audio-visual"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@3.1.0","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"682a64b60af1eb621dcd30b3187ab8c001808afc","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-3.1.0.tgz","fileCount":7,"integrity":"sha512-/W7qoJwjmJ2hB94nYCzwQMsM2jJM53qd6SFKAueYvzJ3S9tVhZbnNmPcsdfLLGLicXE1JJp7BQtGo4b0LacDmg==","signatures":[{"sig":"MEUCIE1zoO4M4zN3le8+QBl0nFQ1eFiDVdwWiLeyvAzX8cM0AiEAkSX+f8s+sjW74+vdzx5f8Zd7SMW7PggqCBFf1uaSxzE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":193936},"main":"index.js","type":"module","gitHead":"8fe38ee7c2608344c683e67cafa9152fffb9c0a3","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"11.6.0","description":"Enhanced Q-Sys core interaction library with component management, script monitoring, and advanced diagnostics","directories":{},"_nodeVersion":"24.4.1","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_3.1.0_1762367282026_0.17200569589539727","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"name":"ide_qsys","version":"3.1.1","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc","component-management","script-monitoring","core-diagnostics","av-control","audio-visual"],"author":{"name":"PG"},"license":"ISC","_id":"ide_qsys@3.1.1","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"dist":{"shasum":"657ceb62cab89db86708b83061dd8c950abae7dc","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-3.1.1.tgz","fileCount":7,"integrity":"sha512-Db8r3R/Cgoq3NOUEH3Jt1+HeLAD3dL8X3wdgixumhf9CbR2KGSeUqtaZV3ORkMozXfPxpCuQIl+UmTrfHvlv3w==","signatures":[{"sig":"MEQCIGWEem6ppxXzhPrqSGq1vhjuuGT8EQFfVbixhRE6nLuIAiB8JgEHM94xbhn0pBAZKfjN9ekgqokggDsDyUD0v5CMPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":194230},"main":"index.js","type":"module","gitHead":"848085360c383b2955d7d6391fb14c9d8e0a853f","scripts":{"mon":"nodemon index.js","test":"node index.js"},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"repository":{"url":"git+https://github.com/patrickgilsf/ide_qsys.git","type":"git"},"_npmVersion":"11.6.0","description":"Enhanced Q-Sys core interaction library with component management, script monitoring, and advanced diagnostics","directories":{},"_nodeVersion":"24.4.1","dependencies":{"net":"^1.0.2","nodemon":"^3.0.3","jsonrpc-lite":"^2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ide_qsys_3.1.1_1762454552891_0.5002274319863333","host":"s3://npm-registry-packages-npm-production"}},"3.1.2":{"name":"ide_qsys","version":"3.1.2","description":"Enhanced Q-Sys core interaction library with component management, script monitoring, and advanced diagnostics","main":"index.js","type":"module","scripts":{"test":"node index.js","mon":"nodemon index.js"},"author":{"name":"PG"},"license":"ISC","dependencies":{"jsonrpc-lite":"^2.2.0","net":"^1.0.2","nodemon":"^3.0.3"},"repository":{"type":"git","url":"git+https://github.com/patrickgilsf/ide_qsys.git"},"keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc","component-management","script-monitoring","core-diagnostics","av-control","audio-visual"],"bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"homepage":"https://github.com/patrickgilsf/ide_qsys#readme","_id":"ide_qsys@3.1.2","gitHead":"439ebbc1af2d7b32c8778e8424fbf22e53009470","_nodeVersion":"24.4.1","_npmVersion":"11.6.0","dist":{"integrity":"sha512-sKwo5ZABybOpCrRpW/BaB7cZGSvRuu9ZEgebjLAKJg/5VWxehsxSV3zvoDwkwVbbPtuR5iGpAEfOqGl0WfqxNA==","shasum":"c4ffd46bca6b8c734281dc20e8e170d460d008e6","tarball":"https://registry.npmjs.org/ide_qsys/-/ide_qsys-3.1.2.tgz","fileCount":7,"unpackedSize":194236,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC/ugAHic+99BD5bqwASNwO6+DQbEBofByjxOVk3ee9GAIhAOZGua6FGGf5yyK6B3o4Ekg89MM361LdDpdWXJl+E6Km"}]},"_npmUser":{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"},"directories":{},"maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ide_qsys_3.1.2_1762454847574_0.2642560881494789"},"_hasShrinkwrap":false}},"time":{"created":"2024-02-25T22:42:07.265Z","modified":"2025-11-06T18:47:28.110Z","1.0.0":"2024-02-25T22:42:07.423Z","1.0.1":"2024-02-29T02:45:41.219Z","1.1.0":"2024-04-03T03:00:54.353Z","1.2.0":"2024-04-03T18:39:57.321Z","1.3.0":"2024-04-04T00:01:44.425Z","1.3.1":"2024-04-04T02:20:56.721Z","1.4.1":"2024-04-04T19:44:49.518Z","1.4.2":"2024-04-05T06:11:35.419Z","1.4.3":"2024-04-16T03:14:33.154Z","1.4.4":"2024-04-20T23:53:49.310Z","1.5.1":"2024-04-24T04:28:35.323Z","1.5.2":"2024-04-24T17:38:51.656Z","1.5.3":"2024-04-25T18:31:09.561Z","1.5.4":"2024-04-25T21:33:33.299Z","1.5.5":"2024-04-25T21:50:54.200Z","1.5.6":"2024-04-25T21:54:34.286Z","1.5.7":"2024-07-10T23:19:23.324Z","2.0.0":"2025-09-09T23:11:25.014Z","2.0.1":"2025-09-10T17:02:09.648Z","2.0.2":"2025-10-31T04:22:03.522Z","3.0.0":"2025-11-03T22:40:59.113Z","3.0.1":"2025-11-03T23:45:44.348Z","3.0.2":"2025-11-03T23:52:43.031Z","3.0.3":"2025-11-04T00:09:00.085Z","3.0.4":"2025-11-04T01:45:36.113Z","3.1.0":"2025-11-05T18:28:02.260Z","3.1.1":"2025-11-06T18:42:33.123Z","3.1.2":"2025-11-06T18:47:27.854Z"},"bugs":{"url":"https://github.com/patrickgilsf/ide_qsys/issues"},"author":{"name":"PG"},"license":"ISC","homepage":"https://github.com/patrickgilsf/ide_qsys#readme","keywords":["q-sys","npm","ide","javascript","js","lua","qsys","qsc","component-management","script-monitoring","core-diagnostics","av-control","audio-visual"],"repository":{"type":"git","url":"git+https://github.com/patrickgilsf/ide_qsys.git"},"description":"Enhanced Q-Sys core interaction library with component management, script monitoring, and advanced diagnostics","maintainers":[{"name":"patrickgilsf","email":"johnpatrickgilligan@gmail.com"}],"readme":"# ide_qsys\n\nA Node.js library for programmatically managing Q-SYS cores and Lua scripts. Deploy code to multiple systems, monitor script health, sync with files, and automate your Q-SYS infrastructure.\n\n## Installation\n\n```bash\nnpm install ide_qsys\n```\n\n## Quick Start\n\n### Basic Connection\n\n```javascript\nimport Core from 'ide_qsys';\n\nconst { username, pin } = process.env;\n\nconst core = new Core({\n  ip: '192.168.1.100',\n  username,\n  pin,\n  verbose: false  // Enable verbose logging (default: false)\n});\n\nawait core.connect();\nconst components = await core.getComponents();\nconsole.log(`Found ${components.length} components`);\nawait core.disconnect();\n```\n\n## Q-SYS Component Configuration\n\nBefore you can access script components via QRC, they must be configured for script access in Q-SYS Designer.\n\n### Enabling Script Access\n\nIn Q-SYS Designer, for each script component you want to access:\n\n1. Select the script component\n2. In the Properties panel, set **\"Script Access\"** dropdown to anything other than **\"None\"** (which is the default)\n3. The **\"Code Name\"** field shows the component name you'll use in your code\n\n![Q-SYS Component Configuration](media/Q-Sys_Component_Access.png)\n\n**Important Notes:**\n- **Script Access = \"None\"**: Component cannot be accessed via QRC\n- **Script Access = \"All\"** or other options: Component can be accessed via QRC\n- The **\"Code Name\"** field value is what you use as the `componentName` parameter in your API calls\n\n```javascript\n// If your component's \"Code Name\" is \"Main\"\nconst components = await core.getComponents();\nconst code = await core.getCode('Main');  // Use the Code Name here\n```\n\n## Authentication\n\n### Setting Up Q-SYS Administrator Credentials\n\nThe username and PIN are configured in Q-SYS Administrator. You need to create a user with External Control Protocol permissions:\n\n![Q-SYS Administrator Example](media/Q-Sys_Administrator_Example.png)\n\nIn Q-SYS Administrator:\n1. Go to the user management section\n2. Create or edit a user (e.g., \"admin\")\n3. Set a PIN (e.g., \"1234\")\n4. Enable \"External Control Protocol\" permissions\n5. Enable \"File Management Protocol\" if you need file operations\n\n### Constructor Options\n\n```javascript\nconst { username, pin } = process.env;\n\nconst core = new Core({\n  ip: '192.168.1.100',           // Required: Q-SYS Core IP address\n  username,                      // Required: Username from Q-SYS Administrator\n  pin,                          // Required: PIN (also accepts 'password' or 'pw')\n  comp: 'Main',                 // Optional: Default component name\n  verbose: false                // Optional: Enable debug logging\n});\n```\n\n### Authentication Error Examples\n\n**Wrong credentials:**\n```javascript\n// This will throw an error\nconst { username } = process.env;\nconst core = new Core({\n  ip: '192.168.1.100',\n  username,\n  pin: 'wrong_pin'  // Intentionally wrong PIN for demonstration\n});\n\ntry {\n  await core.connect();\n} catch (error) {\n  console.error(error.message); // \"QRC authentication failed for 192.168.1.100: Logon required\"\n}\n```\n\n**Missing credentials:**\n```javascript\n// This will throw an error\nconst core = new Core({\n  ip: '192.168.1.100'\n  // Missing username and pin\n});\n\ntry {\n  await core.connect();\n} catch (error) {\n  console.error(error.message); // \"QRC authentication failed for 192.168.1.100: Logon required\"\n}\n```\n\n## Connection Management\n\n### Session-Based (Recommended for Multiple Operations)\n\n```javascript\nconst { username, pin } = process.env;\nconst core = new Core({ ip: '192.168.1.100', username, pin });\n\nawait core.connect();\n// Perform multiple operations efficiently\nconst components = await core.getComponents();\nconst logs = await core.collectLogs('Main');\nconst code = await core.getCode('Main');\nawait core.disconnect();\n```\n\n### Single-Shot Operations (Auto Connect/Disconnect)\n\n```javascript\nconst { username, pin } = process.env;\nconst core = new Core({ ip: '192.168.1.100', username, pin });\n\n// These methods handle connection automatically\nconst components = await core.getComponentsSync();\nconst errors = await core.getScriptErrorsSync();\n```\n\n## API Reference\n\n### Connection Methods\n\n#### `connect()`\nEstablishes a persistent connection to the Q-SYS core.\n\n```javascript\nawait core.connect();\n```\n\n#### `disconnect()`\nCloses the connection to the Q-SYS core.\n\n```javascript\nconst disconnected = await core.disconnect();\nconsole.log(`Successfully disconnected: ${disconnected}`); // true if successful\n\n// Check connection status anytime\nconsole.log(`Currently connected: ${core.connected}`); // boolean property\n```\n\n**Returns:** `boolean` - `true` if successfully disconnected, `false` otherwise\n\n### Component Methods\n\n#### `getComponents()` / `getComponentsSync()`\nReturns an array of all components in the Q-SYS design.\n\n```javascript\n// Session-based\nawait core.connect();\nconst components = await core.getComponents();\nawait core.disconnect();\n\n// Single-shot\nconst components = await core.getComponentsSync();\n```\n\n**Returns:** Array of component objects with `Name` and `Type` properties.\n\n#### `getControls(componentName, callback)` / `getControlsSync(componentName)`\nGets all controls for a specific component.\n\n```javascript\n// Session-based with callback\nawait core.connect();\nawait core.getControls('Main', (error, controls) => {\n  if (error) console.error(error);\n  else console.log(controls);\n});\nawait core.disconnect();\n\n// Single-shot\nconst controls = await core.getControlsSync('Main');\n```\n\n**Parameters:**\n- `componentName` (string): Name of the component\n- `callback` (function, optional): Callback function for session-based method\n\n**Returns:** Array of control objects.\n\n#### `getComponent(componentName, controlName, callback)` / `getComponentSync(componentName, controlName)`\nGets the value of a specific control.\n\n```javascript\n// Session-based\nawait core.connect();\nconst value = await core.getComponent('Main', 'Status');\nawait core.disconnect();\n\n// Single-shot\nconst value = await core.getComponentSync('Main', 'Status');\n```\n\n**Parameters:**\n- `componentName` (string): Name of the component\n- `controlName` (string): Name of the control\n- `callback` (function, optional): Callback function for session-based method\n\n**Returns:** Control value object.\n\n#### `setComponent(componentName, controlName, value, callback)` / `setComponentSync(componentName, controlName, value)`\nSets the value of a specific control.\n\n```javascript\n// Session-based\nawait core.connect();\nawait core.setComponent('Main', 'reload', 1);\nawait core.disconnect();\n\n// Single-shot\nawait core.setComponentSync('Main', 'reload', 1);\n```\n\n**Parameters:**\n- `componentName` (string): Name of the component\n- `controlName` (string): Name of the control\n- `value` (any): Value to set\n- `callback` (function, optional): Callback function for session-based method\n\n### Script Management Methods\n\n#### `getScriptErrors(options, callback)` / `getScriptErrorsSync(options)`\nGets script errors for components with enhanced feedback.\n\n```javascript\n// Session-based - specific component\nawait core.connect();\nconst errors = await core.getScriptErrors({ scriptName: 'Main' });\nconsole.log(errors.Found);    // true/false - component exists\nconsole.log(errors.Message);  // descriptive message\nconsole.log(errors.Value);    // error count (0 if no errors)\n\n// Session-based - all components\nconst allErrors = await core.getScriptErrors();\nconsole.log(allErrors.summary.totalScriptComponents);  // total script components found\nconsole.log(allErrors.summary.componentsWithErrors);   // how many have errors\nconsole.log(allErrors.errors);                         // array of components with errors\n\nawait core.disconnect();\n\n// Single-shot\nconst errors = await core.getScriptErrorsSync({ scriptName: 'Main' });\n```\n\n**Parameters:**\n- `options` (object, optional):\n  - `scriptName` (string): Specific script name to check\n- `callback` (function, optional): Callback function for session-based method\n\n**Returns:** \n- With `scriptName`: Object with `Found`, `Message`, `Value`, `Details`, `Component` properties\n- Without `scriptName`: Object with `errors` array and `summary` object\n\n#### `restartScript(componentName, callback)` / `restartScriptSync(componentName)`\nRestarts a script component.\n\n```javascript\n// Session-based\nawait core.connect();\nawait core.restartScript('Main');\nawait core.disconnect();\n\n// Single-shot\nawait core.restartScriptSync('Main');\n```\n\n**Parameters:**\n- `componentName` (string): Name of the script component\n- `callback` (function, optional): Callback function for session-based method\n\n#### `collectLogs(componentName, callback)` / `collectLogsSync(componentName)`\nCollects console logs from a script component.\n\n```javascript\n// Session-based\nawait core.connect();\nconst logs = await core.collectLogs('Main');\nawait core.disconnect();\n\n// Single-shot\nconst logs = await core.collectLogsSync('Main');\n```\n\n**Parameters:**\n- `componentName` (string): Name of the script component\n- `callback` (function, optional): Callback function for session-based method\n\n**Returns:** Array of log strings with timestamps removed.\n\n### Code Management Methods\n\n#### `getCode(componentName, callback)` / `getCodeSync(componentName)`\nGets the Lua code from a script component.\n\n```javascript\n// Session-based\nawait core.connect();\nconst code = await core.getCode('Main');\nawait core.disconnect();\n\n// Single-shot\nconst code = await core.getCodeSync('Main');\n```\n\n**Parameters:**\n- `componentName` (string): Name of the script component\n- `callback` (function, optional): Callback function for session-based method\n\n**Returns:** String containing the Lua code.\n\n#### `updateCode(componentName, code, callback)`\nUpdates the Lua code in a script component and returns deployment information.\n\n```javascript\nawait core.connect();\nconst result = await core.updateCode('Main', luaCode);\nconsole.log(`Errors: ${result.deployment.errorCount}`);\nconsole.log(`Logs: ${result.deployment.logs.join(', ')}`);\nawait core.disconnect();\n```\n\n**Parameters:**\n- `componentName` (string): Name of the script component\n- `code` (string): Lua code to deploy\n- `callback` (function, optional): Callback function\n\n**Returns:** Object with deployment information including:\n- `deployment.componentName` (string): Component name\n- `deployment.codeLength` (number): Length of deployed code\n- `deployment.errorCount` (number): Number of errors after deployment\n- `deployment.errorDetails` (object): Error details if any\n- `deployment.logs` (array): Console logs after deployment\n- `deployment.timestamp` (string): Deployment timestamp\n\n## Production Methods\n\n### Multi-Core Deployment\n\n#### `Core.deployToMultipleCores(coreConfigs, componentName, code, options)`\nStatic method to deploy one script to multiple Q-SYS cores.\n\n```javascript\nconst { username, pin } = process.env;\n\nconst coreConfigs = [\n  { ip: '192.168.1.100', username, pin, systemName: 'Core1' },\n  { ip: '192.168.1.101', username, pin, systemName: 'Core2' },\n  { ip: '192.168.1.102', username, pin, systemName: 'Core3' }\n];\n\nconst result = await Core.deployToMultipleCores(\n  coreConfigs,\n  'Main',\n  fs.readFileSync('./scripts/main.lua', 'utf8'),\n  { validateFirst: true, rollbackOnError: true }\n);\n```\n\n**Parameters:**\n- `coreConfigs` (array): Array of core configuration objects\n- `componentName` (string): Name of the script component\n- `code` (string): Lua code to deploy\n- `options` (object, optional):\n  - `validateFirst` (boolean): Validate code before deployment\n  - `rollbackOnError` (boolean): Rollback on deployment errors\n\n**Returns:** Object with deployment results for each core.\n\n### File Operations\n\n#### `loadScriptFromFile(filePath, componentName, options)`\nLoads Lua code from a file and deploys it to a component.\n\n```javascript\nawait core.connect();\nconst result = await core.loadScriptFromFile('./scripts/main.lua', 'Main');\nconsole.log(`Deployed: ${result.codeLength} characters, ${result.errorCount} errors`);\nawait core.disconnect();\n```\n\n**Parameters:**\n- `filePath` (string): Path to the Lua file\n- `componentName` (string): Name of the script component\n- `options` (object, optional): Additional options\n\n**Returns:** Object with deployment information.\n\n#### `saveScriptToFile(componentName, filePath, options)`\nSaves Lua code from a component to a file.\n\n```javascript\nawait core.connect();\nawait core.saveScriptToFile('Main', './backup/main.lua', {\n  createDir: true,\n  backup: true\n});\nawait core.disconnect();\n```\n\n**Parameters:**\n- `componentName` (string): Name of the script component\n- `filePath` (string): Path where to save the file\n- `options` (object, optional):\n  - `createDir` (boolean): Create directory if it doesn't exist\n  - `backup` (boolean): Create backup if file exists\n\n#### `syncScriptWithFile(componentName, filePath, direction, options)`\nSynchronizes a script component with a file.\n\n```javascript\nawait core.connect();\n\n// Check sync status without making changes\nconst status = await core.syncScriptWithFile('Main', './scripts/main.lua', 'check');\nconsole.log(status.message); // \"File (3252 chars) and component (3232 chars) differ\"\n\n// Force file to component\nawait core.syncScriptWithFile('Main', './scripts/main.lua', 'push', {\n  createBackup: true  // Create backup before overwriting (default: true)\n});\n\n// Force component to file\nawait core.syncScriptWithFile('Main', './scripts/main.lua', 'pull', {\n  createBackup: true  // Create backup before overwriting (default: true)\n});\n\nawait core.disconnect();\n```\n\n**Parameters:**\n- `componentName` (string): Name of the script component\n- `filePath` (string): Path to the file\n- `direction` (string): 'check', 'push', or 'pull'\n- `options` (object, optional):\n  - `createBackup` (boolean): Create backup files before overwriting (default: true)\n\n**Directions:**\n- `'check'`: Compare file and component, return status information\n- `'push'`: Update component with file content (file → component)\n- `'pull'`: Update file with component content (component → file)\n\n**Returns:** Object with sync information:\n- `success` (boolean): Operation success status\n- `action` (string): 'check', 'push', or 'pull'\n- `direction` (string): Sync direction used (for push/pull)\n- `message` (string): Descriptive status message\n- `inSync` (boolean): Whether file and component are identical (check only)\n- `status` (string): Sync status - 'in-sync', 'out-of-sync', 'file-missing', 'component-missing', 'both-missing' (check only)\n- `fileSample` (string): First 100 characters of file (check only, when different)\n- `componentSample` (string): First 100 characters of component (check only, when different)\n- `codeLength` (number): Length of synced code (push/pull only)\n- `backupPath` (string): Path to backup file if created (pull only)\n\n#### `backupAllScripts(backupDir, options)`\nBackup all control scripts from the system to a designated folder.\n\n```javascript\nconst { username, pin } = process.env;\nconst core = new Core({ ip: '192.168.1.100', username, pin });\n\nawait core.connect();\n\n// Auto-generated backup directory (default - no timestamp, will overwrite)\nconst result = await core.backupAllScripts();\n// Creates: ./backup_192-168-1-100/\n\n// Auto-generated with timestamp (prevents overwrites)\nconst result = await core.backupAllScripts(null, { timestamp: true });\n// Creates: ./backup_192-168-1-100_2025-11-05T17-33-26-480Z/\n\n// Specific backup directory\nconst result = await core.backupAllScripts('./backups/core1');\n\n// Advanced backup with options\nconst result = await core.backupAllScripts('./backups/core1', {\n  createDir: true,        // Create directory if it doesn't exist (default: true)\n  includeEmpty: false,    // Include scripts with empty code (default: false)\n  systemName: 'Core1',    // Custom system name for manifest (default: IP)\n  timestamp: false        // Include timestamp in auto-generated directory names (default: false)\n});\n\nconsole.log(`Backed up ${result.scriptCount} scripts to ${result.backupDir}`);\nconsole.log(`Scripts: ${result.scripts.join(', ')}`);\n\nawait core.disconnect();\n```\n\n**Parameters:**\n- `backupDir` (string, optional): Directory path where scripts will be saved (default: auto-generated folder)\n- `options` (object, optional):\n  - `createDir` (boolean): Create backup directory if it doesn't exist (default: true)\n  - `includeEmpty` (boolean): Include scripts with empty/blank code (default: false)\n  - `systemName` (string): Custom system name for manifest (default: uses systemName or IP)\n  - `timestamp` (boolean): Include timestamp in auto-generated directory names (default: false)\n\n**Returns:** Object with backup information:\n- `success` (boolean): Backup operation success status\n- `backupDir` (string): Path to backup directory\n- `scriptCount` (number): Number of scripts backed up\n- `totalComponents` (number): Total components found in system\n- `manifest` (string): Path to backup manifest file\n- `scripts` (array): Array of script names that were backed up\n\n**Files Created:**\n- `{ComponentName}.lua` - Individual script files\n- `backup_manifest.json` - Backup metadata and script inventory\n\n### Health Monitoring\n\n#### `Core.monitorScriptHealth(coreConfigs, scriptNames, options)`\nStatic method to monitor script health across multiple cores.\n\n```javascript\nconst { username, pin } = process.env;\n\nconst coreConfigs = [\n  { ip: '192.168.1.100', username, pin, systemName: 'Core1' },\n  { ip: '192.168.1.101', username, pin, systemName: 'Core2' },\n  { ip: '192.168.1.102', username, pin, systemName: 'Core3' }\n];\n\nconst healthReport = await Core.monitorScriptHealth(\n  coreConfigs,\n  ['Main', 'Module'],\n  {\n    includeErrors: true,\n    includeStatus: true,\n    includeLogs: true,\n    logLines: 5\n  }\n);\n\nconsole.log(`Overall health: ${healthReport.summary.healthPercentage}%`);\nconsole.log(`Cores with issues: ${healthReport.summary.coresWithIssues}`);\n```\n\n**Parameters:**\n- `coreConfigs` (array): Array of core configuration objects\n- `scriptNames` (array): Array of script names to monitor\n- `options` (object, optional):\n  - `includeErrors` (boolean): Include error information\n  - `includeStatus` (boolean): Include status information\n  - `includeLogs` (boolean): Include log information\n  - `logLines` (number): Number of log lines to include\n\n**Returns:** Object with health report and summary.\n\n## Best Practices\n\n1. **Always disconnect**: Ensure sessions are properly closed\n2. **Use try/finally**: Guarantee cleanup even on errors\n3. **Batch operations**: Use sessions for multiple operations\n4. **Single-shot for simple tasks**: Use sync methods for one-off operations\n\n```javascript\nconst { username, pin } = process.env;\nconst core = new Core({ ip: '192.168.1.100', username, pin });\n\ntry {\n  await core.connect();\n  \n  // Multiple operations\n  const components = await core.getComponents();\n  const errors = await core.getScriptErrors();\n  const logs = await core.collectLogs('Main');\n  \n} catch (error) {\n  console.error('Session operations failed:', error);\n} finally {\n  await core.disconnect(); // Always cleanup\n}\n```\n\n## Requirements\n\n- Node.js 14+ (ES modules support)\n- Q-SYS Core with QRC enabled\n- Network access to Q-SYS Core on port 1710\n\n## License\n\nISC\n\n## Contributing\n\nIssues and pull requests welcome at [GitHub repository](https://github.com/patrickgilsf/ide_qsys).","readmeFilename":"readme.md"}