{"_id":"@autocodingsystems/gateway-client","_rev":"16-668607747ed1933102c60710c795bed7","time":{"1.0.0":"2018-03-08T13:57:47.060Z","created":"2018-03-08T13:58:19.008Z","1.0.1":"2018-03-08T13:58:19.152Z","modified":"2022-04-04T16:35:50.407Z","1.0.2":"2018-03-08T14:48:45.285Z","1.2.0":"2018-03-13T10:33:12.893Z","1.2.1":"2018-03-13T11:00:08.013Z","1.2.2":"2018-03-13T11:01:53.211Z","1.3.0":"2018-03-13T12:47:31.689Z","1.3.1":"2018-03-14T10:30:57.104Z","1.3.2":"2018-03-14T14:26:51.994Z","1.3.3":"2018-03-16T14:16:54.871Z","1.4.0":"2018-03-16T17:25:27.290Z","1.5.0":"2018-03-19T13:28:33.468Z","1.5.1":"2018-03-19T15:02:30.736Z"},"name":"@autocodingsystems/gateway-client","dist-tags":{"latest":"1.5.1"},"versions":{"1.0.1":{"name":"@autocodingsystems/gateway-client","version":"1.0.1","description":"Libarary and commandline utility to control the acs gateway","main":"api/index.js","bin":{"acs-gateway-client":"./index.js"},"scripts":{},"author":{"name":"AutoCoding Systems Ltd."},"license":"ISC","dependencies":{"glob-to-regexp":"^0.4.0","minimist":"^1.2.0","rc":"^1.2.5"},"gitHead":"474a97d37b76652b538de6b286e158e0e3ab93ff","_id":"@autocodingsystems/gateway-client@1.0.1","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-qFsn9zjZe9D6T4c0ThL0Iwyx2WsFacbHLmSz//ei6EViBkecrUoWxQYVOUj8EVnFCcz0zzW53xzQqziMVS4Gyg==","shasum":"5bf0c71dcf11910b0a827b402fda4ad7c1ba1ba0","tarball":"https://registry.npmjs.org/@autocodingsystems/gateway-client/-/gateway-client-1.0.1.tgz","fileCount":10,"unpackedSize":17953,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPXQVTjw6nP7Cq20P+JpnEka7Nd2D/BFs/XqMVmR/bSAIgMzaCSydOIA24ropYVZLXhkZOZaPVjvY24KwdHAIdSZc="}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gateway-client_1.0.1_1520517499105_0.20216845601629996"},"_hasShrinkwrap":false},"1.0.2":{"name":"@autocodingsystems/gateway-client","version":"1.0.2","description":"Libarary and commandline utility to control the acs gateway","main":"api/index.js","bin":{"gateway-client":"./index.js"},"scripts":{},"author":{"name":"AutoCoding Systems Ltd."},"license":"ISC","dependencies":{"glob-to-regexp":"^0.4.0","minimist":"^1.2.0","rc":"^1.2.5"},"gitHead":"7720e953117a3633dc5a4ac975ea1c1924111f4c","_id":"@autocodingsystems/gateway-client@1.0.2","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-GqLeILy4Mrnki/CsFbPotUredrhgBbdnjyh69tQiK5GDJRNCT+ufgxJtSamb+1UHH0fqOxaoNinSE9zRE/UomQ==","shasum":"3c3b273c3ac6c15b3b65e635af97483d04a2fd4e","tarball":"https://registry.npmjs.org/@autocodingsystems/gateway-client/-/gateway-client-1.0.2.tgz","fileCount":11,"unpackedSize":20372,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnYtFbqp32BG30/i0LcgU8lfHFzM7XgTZtddtXywxTmwIhAP3StOkjWHc+GOM/u5MAQ/Vtkamyev9YF1VwyCSlU2y8"}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gateway-client_1.0.2_1520520525207_0.8322320473011395"},"_hasShrinkwrap":false},"1.2.0":{"name":"@autocodingsystems/gateway-client","version":"1.2.0","description":"Library and commandline utility to control the acs gateway","main":"api/index.js","bin":{"gateway-client":"./index.js"},"scripts":{},"author":{"name":"AutoCoding Systems Ltd."},"license":"ISC","dependencies":{"glob-to-regexp":"^0.4.0","minimist":"^1.2.0","rc":"^1.2.5","strip-json-comments":"^2.0.1"},"gitHead":"d4ae85e588b6c77355fbac5af8aed6e27f834c0a","_id":"@autocodingsystems/gateway-client@1.2.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-4EkLt0HiV7OaaXC7QpdfBn70sbk9+W+6iVCd5WFKxWU+eK6Q6xWLGnPB5N4hJ7eRNf4xvvPDyBU0tSlzWqQwxg==","shasum":"0dee066ef735ebd2d0d6fb662983f29ab82e7e64","tarball":"https://registry.npmjs.org/@autocodingsystems/gateway-client/-/gateway-client-1.2.0.tgz","fileCount":41,"unpackedSize":54062,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEtl0IXYlU2mkFQVQrXqaLzkSuMC9jqQH4VrqODFzz+LAiA5cf4mafkKKveY9GAcR4mlcISywcKnp+QdkVEexa4xxQ=="}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gateway-client_1.2.0_1520937192775_0.8021649933346071"},"_hasShrinkwrap":false},"1.2.1":{"name":"@autocodingsystems/gateway-client","version":"1.2.1","description":"Library and commandline utility to control the acs gateway","main":"api/index.js","bin":{"gateway-client":"./index.js"},"scripts":{},"author":{"name":"AutoCoding Systems Ltd."},"license":"ISC","dependencies":{"glob-to-regexp":"^0.4.0","minimist":"^1.2.0","rc":"^1.2.5","strip-json-comments":"^2.0.1"},"gitHead":"faff3da55b029594bbaa64e0c92d57aab231b5de","_id":"@autocodingsystems/gateway-client@1.2.1","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-IPFWRYXAyyBtbz9yXKNukAkPlelRLxiGsDEhzWFSpHTzfX22QawA36XqaaGLSq4l4AguXQcrX4ZMlq1WMlynKA==","shasum":"121684018250a34f87ec0b7ad4c46d1b1e71b5df","tarball":"https://registry.npmjs.org/@autocodingsystems/gateway-client/-/gateway-client-1.2.1.tgz","fileCount":42,"unpackedSize":55049,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7zDA3Go2mG3936itToTPerSs9wdFsiEK7fh6xVhlmMAIhAO5WxmLyaemVZzE8owxYiFJa15gmYQ3wS+wmoIF+Lssg"}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gateway-client_1.2.1_1520938807912_0.6202364881969971"},"_hasShrinkwrap":false},"1.2.2":{"name":"@autocodingsystems/gateway-client","version":"1.2.2","description":"Library and commandline utility to control the acs gateway","main":"api/index.js","bin":{"gateway-client":"./index.js"},"scripts":{},"author":{"name":"AutoCoding Systems Ltd."},"license":"ISC","dependencies":{"glob-to-regexp":"^0.4.0","minimist":"^1.2.0","rc":"^1.2.5","strip-json-comments":"^2.0.1"},"gitHead":"178e089a697ab7380b12d6db7679ee0e58476d4d","_id":"@autocodingsystems/gateway-client@1.2.2","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-8z9wF9eyhz7Ilwmp7XZKY2gqYW7mAUQZ8xmeOVG5n1bKrU7bpHwJNXM8j5mmmE2f2G5E717hm2yf/geuEIM9HQ==","shasum":"3aaaa81207a773ce8076e3fbfbaa8cbe46e3b4b2","tarball":"https://registry.npmjs.org/@autocodingsystems/gateway-client/-/gateway-client-1.2.2.tgz","fileCount":42,"unpackedSize":56072,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDB+Y1yuAadOCd2llXhS8/nH8X+2pKr5KWSBXMemcoJEwIhAO7HMk3pY0y6RCfxujFUeAwlOYzYR3YMAE2rlZXz/5AS"}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gateway-client_1.2.2_1520938913115_0.09189149820998543"},"_hasShrinkwrap":false},"1.3.0":{"name":"@autocodingsystems/gateway-client","version":"1.3.0","description":"Library and commandline utility to control the acs gateway","main":"api/index.js","bin":{"gateway-client":"./index.js"},"scripts":{},"author":{"name":"AutoCoding Systems Ltd."},"license":"ISC","dependencies":{"glob-to-regexp":"^0.4.0","minimist":"^1.2.0","rc":"^1.2.5","signalr-client":"0.0.17","strip-json-comments":"^2.0.1"},"gitHead":"e81cee3a983de6e159cad974240914dd4b5a8d7d","_id":"@autocodingsystems/gateway-client@1.3.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-Mr8A+NUAZlVbu1sSZ3I6DbgKE6DD0NcetWKEwxEwNsPGoaWRCuQeueSIrhH+/bP8LEGRHl0gj1yUOFmZHUQaGQ==","shasum":"60ba83a128a1361ce8a0a1bb6284083e5e4e296c","tarball":"https://registry.npmjs.org/@autocodingsystems/gateway-client/-/gateway-client-1.3.0.tgz","fileCount":48,"unpackedSize":62854,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBpQGHZCDrUNms72Gl+rdXKqRQYm9MqJ4YjSBIAAMhCvAiEAgFxtej9Kgt+QLCyDjiqTuGWMlF9maIZqoqbS0YrU414="}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gateway-client_1.3.0_1520945251548_0.035309885431458854"},"_hasShrinkwrap":false},"1.3.1":{"name":"@autocodingsystems/gateway-client","version":"1.3.1","description":"Library and commandline utility to control the acs gateway","main":"api/index.js","bin":{"gateway-client":"./index.js"},"scripts":{},"author":{"name":"AutoCoding Systems Ltd."},"license":"ISC","dependencies":{"glob-to-regexp":"^0.4.0","minimist":"^1.2.0","rc":"^1.2.5","signalr-client":"0.0.17","split":"^1.0.1","strip-json-comments":"^2.0.1"},"gitHead":"b349f44b25558e05b0899eac53e58cf3989ca76e","_id":"@autocodingsystems/gateway-client@1.3.1","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-BXnOZ1GN0cA1IW8MuSzWRFgyW4+LEuZowmuCt+ayEvlo2T3jFPfqhO9sI0dPSRzYUYTDvdcOosi9sz6L/XTpBw==","shasum":"90cdf45472994bd8c913582cc7a648870901f95f","tarball":"https://registry.npmjs.org/@autocodingsystems/gateway-client/-/gateway-client-1.3.1.tgz","fileCount":48,"unpackedSize":63206,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG4nuYkLi1SUdQ2GbIQ/vMjPGnGV/0GrnN8z2pXEgsvtAiEAn0ssQmZxbPfMvt2cR/hqRVpmtfpmyviTA5B9gmipoIo="}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gateway-client_1.3.1_1521023457005_0.7857398139600547"},"_hasShrinkwrap":false},"1.3.2":{"name":"@autocodingsystems/gateway-client","version":"1.3.2","description":"Library and commandline utility to control the acs gateway","main":"api/index.js","bin":{"gateway-client":"./index.js"},"scripts":{},"author":{"name":"AutoCoding Systems Ltd."},"license":"ISC","dependencies":{"glob-to-regexp":"^0.4.0","minimist":"^1.2.0","rc":"^1.2.5","signalr-client":"0.0.17","split":"^1.0.1","strip-json-comments":"^2.0.1"},"gitHead":"dd8354fab22436fdb4ef5fe5bd1fef86b6907c1c","_id":"@autocodingsystems/gateway-client@1.3.2","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-M1ezfeyXfQik+iLbry/DMWHin0S1hVYoU6j5tP5szWymJdpAzVdh8AnLR/YCfwL5qLfJNip2XnZSLaCv4dTK/Q==","shasum":"652101bf828c4f511a85c6717cf944208b1bfe1a","tarball":"https://registry.npmjs.org/@autocodingsystems/gateway-client/-/gateway-client-1.3.2.tgz","fileCount":48,"unpackedSize":63207,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFs9V+lEUzwDoE4R9F94Ttijzz1mOv6sUkorHZtaNH6hAiAQ/gWICTvdEgl8Veo0/dUNV60bsF1hNwAsa/xSixGQzw=="}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gateway-client_1.3.2_1521037611915_0.05037951954281472"},"_hasShrinkwrap":false},"1.3.3":{"name":"@autocodingsystems/gateway-client","version":"1.3.3","description":"Library and commandline utility to control the acs gateway - device drivers for the most common industrial production line devices","keywords":["autocoding","acs","autocodingsystems","autoLabel","acp","b&r","cognex","datalogic","datamax o'neil","domino","intermec","ishida","kba-metronic","linx","logopak","loma","markem imaje","sauven","sick","toshiba","videojet","wonderware","zebra"],"main":"api/index.js","bin":{"gateway-client":"./index.js"},"scripts":{},"author":{"name":"AutoCoding Systems Ltd."},"license":"ISC","dependencies":{"glob-to-regexp":"^0.4.0","minimist":"^1.2.0","rc":"^1.2.5","signalr-client":"0.0.17","split":"^1.0.1","strip-json-comments":"^2.0.1"},"gitHead":"d0d290478bbc8c3faea679040bc5fe4fbe32ecbb","_id":"@autocodingsystems/gateway-client@1.3.3","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-fvfaBoFIDbQMHondxL+6OWuxKjF7tnwRYC0O7y8HP0fCD9jCQ1+QURtEl1OTEte4FtH+z9d+EsIdTIU32KFVjQ==","shasum":"27a1bf563057bbc658aec5161e0804a0e50a59a7","tarball":"https://registry.npmjs.org/@autocodingsystems/gateway-client/-/gateway-client-1.3.3.tgz","fileCount":48,"unpackedSize":63656,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAWEXB5KYhMBhTrtLArJdMHgo9qQJYbkY4GDwBYPXamhAiAjRRc8aWQ++snJXYsWXm111uTRvsMkzKKF4SV1A7cmhw=="}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gateway-client_1.3.3_1521209814802_0.8838882056548334"},"_hasShrinkwrap":false},"1.4.0":{"name":"@autocodingsystems/gateway-client","version":"1.4.0","description":"Library and commandline utility to control the acs gateway - device drivers for the most common industrial production line devices","keywords":["autocoding","acs","autocodingsystems","autoLabel","acp","b&r","cognex","datalogic","datamax o'neil","domino","intermec","ishida","kba-metronic","linx","logopak","loma","markem imaje","sauven","sick","toshiba","videojet","wonderware","zebra"],"main":"lib/api/index","bin":{"gateway-client":"./index.js"},"scripts":{},"author":{"name":"AutoCoding Systems Ltd."},"license":"ISC","dependencies":{"glob-to-regexp":"^0.4.0","minimist":"^1.2.0","rc":"^1.2.5","signalr-client":"0.0.17","split":"^1.0.1","strip-json-comments":"^2.0.1"},"gitHead":"c9b544090c27790382d2e545bfdaa84af2fe6221","_id":"@autocodingsystems/gateway-client@1.4.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-N+ultHXOwuLGoM1MKIs9kBt6eykQPVJr2JQrRpefn2+zmrSmht9vlsieNKsfgYIJW/UcjhMfQD0wnqoziEfYBg==","shasum":"a0c8b102cc46fccbaeee8e974b839168d7ae9513","tarball":"https://registry.npmjs.org/@autocodingsystems/gateway-client/-/gateway-client-1.4.0.tgz","fileCount":48,"unpackedSize":78851,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA4mReqkREHURfqn7qCn+rzFLD0/sWAOX4orATD9cnbtAiEA6cOjWyb8+SXIZ+/vFHq8CxE7e8Y7BLRKOjhcek42uB0="}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gateway-client_1.4.0_1521221127213_0.3451425061765194"},"_hasShrinkwrap":false},"1.5.0":{"name":"@autocodingsystems/gateway-client","version":"1.5.0","description":"Library and commandline utility to control the acs gateway - device drivers for the most common industrial production line devices","keywords":["autocoding","acs","autocodingsystems","autoLabel","acp","b&r","cognex","datalogic","datamax o'neil","domino","intermec","ishida","kba-metronic","linx","logopak","loma","markem imaje","sauven","sick","toshiba","videojet","wonderware","zebra"],"main":"lib/api/index","bin":{"gateway-client":"./index.js"},"scripts":{},"author":{"name":"AutoCoding Systems Ltd."},"license":"ISC","dependencies":{"glob-to-regexp":"^0.4.0","minimist":"^1.2.0","rc":"^1.2.5","signalr-client":"0.0.17","split":"^1.0.1","strip-json-comments":"^2.0.1"},"gitHead":"3f64613b34034b9628d3fa51c57a76f2aa4ba8a3","_id":"@autocodingsystems/gateway-client@1.5.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-6UvrU3ITwNp4RtbYr8ocSvJxRrggSsUAO9rgEwunoYjWvr0q9jrQ3uDpTXgKlG6rQrDkRVWT0vd+ybaDqdhbhA==","shasum":"7593fefc3f3a6b3e3c6e0f5a1037a7a2eecc4712","tarball":"https://registry.npmjs.org/@autocodingsystems/gateway-client/-/gateway-client-1.5.0.tgz","fileCount":50,"unpackedSize":85734,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEU3noFKQ+kcdugMl6/SY3tcpu9d3pIK36QfuJOmUIzFAiBmRTIF1rAZ/7mBmA9D5jAdFMu8NF/c1A4tycivqk7caw=="}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gateway-client_1.5.0_1521466113359_0.6560509264282488"},"_hasShrinkwrap":false},"1.5.1":{"name":"@autocodingsystems/gateway-client","version":"1.5.1","description":"Library and commandline utility to control the acs gateway - device drivers for the most common industrial production line devices","keywords":["autocoding","acs","autocodingsystems","autoLabel","acp","b&r","cognex","datalogic","datamax o'neil","domino","intermec","ishida","kba-metronic","linx","logopak","loma","markem imaje","sauven","sick","toshiba","videojet","wonderware","zebra"],"main":"lib/api/index","bin":{"gateway-client":"./index.js"},"scripts":{},"author":{"name":"AutoCoding Systems Ltd."},"license":"ISC","dependencies":{"glob-to-regexp":"^0.4.0","minimist":"^1.2.0","rc":"^1.2.5","signalr-client":"0.0.17","split":"^1.0.1","strip-json-comments":"^2.0.1"},"gitHead":"eaaa1357a44128bf981b5ecbf36c9ca9f785ba0e","_id":"@autocodingsystems/gateway-client@1.5.1","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-9pZx3e0E2Kx8+fxZ1TvejTRjVLosaRUeg94sTxUiFPlbWU/hmUejU1MUymehE8O6qJfa6ELrylTO8MZZAAX2Lw==","shasum":"95eab543b2aa6b451604c4bcd4f92e124ecf9306","tarball":"https://registry.npmjs.org/@autocodingsystems/gateway-client/-/gateway-client-1.5.1.tgz","fileCount":50,"unpackedSize":86892,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGzfmWKf5qpTWhpbdXIbLuPK5LNFpyk3vwaYQF8fmKBhAiAt/kFCWeH4zTweJ5Vi+Rryl2KNjA11U6pKrw47kr/gGQ=="}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gateway-client_1.5.1_1521471750614_0.5107295442114324"},"_hasShrinkwrap":false}},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"description":"Library and commandline utility to control the acs gateway - device drivers for the most common industrial production line devices","author":{"name":"AutoCoding Systems Ltd."},"license":"ISC","readme":"ACS Gateway Client\r\n==================\r\n\r\nThe AutoCoding Gateway from AutoCoding Systems Ltd permits fully featured drivers for many of the leading equipment vendors in the packaging line environment.\r\n\r\n* Barcode Reading and Machine Vision\r\n    * SICK\r\n    * Datalogic\r\n    * Cognex\r\n\r\n* Industrial Printers\r\n    * Zebra\r\n    * Domino\r\n    * Videojet\r\n    * Markem-Imaje\r\n    * Linx\r\n    * Toshiba\r\n    * Datamax\r\n    * Logopak\r\n    * Intermec\r\n\r\n* Weighing and Metal Detection\r\n    * Loma\r\n    * Ishida\r\n    * KBA-Metronic\r\n\r\nFor more information on the AutoCoding Gateway, contact info@autocodingsystems.com\r\n\r\nOr take a look at the website:\r\n[https://autocodingsystems.com/solutions/iiot/](https://autocodingsystems.com/solutions/iiot/)\r\n\r\n\r\n# Client API Usage\r\n\r\n**Quickstart:** get devices from a local gateway\r\n```js\r\nconst Api = require('@autocodingsystems/gateway-client')\r\n\r\nconst local_gw = new Api('http://localhost:8002')\r\n\r\nconst run = async () => {\r\n    console.log(await local_gw.raw.getDevices());\r\n}\r\n\r\nrun();\r\n```\r\n\r\n## Description\r\n\r\n```js\r\nconst Api = require('@autocodingsystems/gateway-client')\r\n```\r\n\r\nThis provides a constructor for an `Api` object. To instantiate the `Api`, pass in the base Url of the gateway you wish to communicate with as a string:\r\n\r\n``` js\r\nconst local_gw = new Api('http://localhost:8002')\r\n```\r\n\r\nNo connections are made until you make a call on the resulting api object, so it's safe to make this object early and hold onto it, or make these api objects lazily just as you need them.\r\n\r\nThe main part of the return api object are the raw calls that can be made on the gateway under the `raw` property.\r\n\r\n```js\r\nawait local_gw.raw.getDevices()\r\n```\r\n\r\nAll api calls that contact the gateway are `async` and return a `Promise` object that resolves with the data from the gateway.\r\n\r\n## Raw\r\n\r\n### getDevices\r\n\r\n**params**\r\n```js\r\nnone\r\n```\r\n\r\n**returns**\r\nAn array of device objects\r\n\r\n```js\r\n{\r\n    Id: <integer> // Internal gateway id for this device, use for subsequent calls\r\n    Name: <string> // Display name for this device\r\n    SupportedDeviceId: <string> // Gateway id of the driver used for this device\r\n    Classes: <array of string> // Capabilities of the device\r\n    HealthStatus: <string> // Overall health of the device\r\n    Active: <bool> // True when the drivers are trying to talk to the device\r\n}\r\n```\r\n\r\n**remarks**\r\nReturns an array of the devices available on the gateway.\r\n\r\n\r\n### getDevice\r\n\r\n**params** \r\n```js\r\n    Id: <integer> // Internal gateway id for this device\r\n```\r\n**returns**\r\n\r\nA single object representing the configuration of the device\r\n\r\n```js\r\n{\r\n    Id: <integer> // Internal gateway id for this device\r\n    Name: <string> // Display name for this device\r\n    SupportedDeviceId: <string> // Gateway id of the driver used for this device\r\n    Classes: <array of string> // Capabilities of this device\r\n    HealthStatus: <string> // Overall health of the device\r\n    Active: <bool> // True when the drivers are trying to talk to the device\r\n    ActivationTime: <string> // Date when this device was activated\r\n    ApplicationNodeId: <int> // Data tag for this device\r\n    SocketClass: <string> // Determines how the driver communicates with the device\r\n    SocketConfiguration: <array of Name Value pairs> configuration for the driver communication with the device\r\n    DeviceConfiguration: <array of Name Value pairs> configuration for the driver\r\n}\r\n```\r\n\r\n**remarks**\r\n\r\nThis returns the full details of how a device driver has been configured and whether it's activated and when.\r\n\r\n\r\n### getDeviceStatus\r\n\r\n**params** \r\n```js\r\n    Id: <integer> // Internal gateway id for this device\r\n```\r\n**returns**\r\n\r\nAn array of objects representing the driver properties of the device\r\n\r\n```js\r\n{\r\n    Active: <bool> Is in use\r\n    AssignmentTime: <datetime> Timestamp for when last changed\r\n    Description: <string> Text description\r\n    Grouping: <string> Group it belongs to\r\n    HealthStatus: <string> Indication of whether it indicates a problem with the device or not\r\n    HealthStatusMeaning: <string> Describes the problem represented, if any\r\n    Name: <string> The display name\r\n    PropertyType: <Property | Counter>\r\n    Value: <string> Actual value\r\n}\r\n```\r\n\r\n**remarks**\r\n\r\nThis gives access to the published state of the driver, representing as much information as the driver has on the device at any point in time.\r\n\r\n\r\n### addDevice\r\n**params** \r\n```js\r\n    details: <object> // The device details to add to the gateway\r\n\r\n{\r\n    DeviceName: <string> // Name to display\r\n    SupportedDeviceId: <string> // Internal Id of the driver to use for this device\r\n    ApplicationNodeId: <integer> // A data tag that can be assigned to the device\r\n    SocketClass: <string> // The name of the communication method used to talk to the device. The values available depend on the value of SupportedDeviceId. Usually 'NE.Connectivity.TcpClient'\r\n    SocketConfigurationSettings: <array of Name Value pairs> // The configuration for the communications with the devic. The exact values available depends on the value of SocketClass\r\n    DriverConfigurationSettings: <array of Name Value pairs> // The configuration of the driver. The exact values available depends on the value of SupportedDeviceId\r\n}\r\n```\r\n**returns**\r\n\r\nAn objects containing the DeviceId of the driver just added\r\n\r\n```js\r\n{\r\n    DeviceId: <integer> Internal gateway id for this device\r\n}\r\n```\r\n\r\n**remarks**\r\n\r\nThis method lets you add a new device to a gateway. Determining the exact values available can be tricky, but all the information is available from the gateway's Api. The easiest way to configure a device is to use the Gateway's dashboard. However, the information can be put together using the list of available device types (`getSupportedDevices`) and the detailed information for each device type (`getSupportedDevice`). The dashboard uses this data to build its UI, so you can do the same if you wish.\r\n\r\nYou can retrieve the details for an existing device in a format suitable for passing to this call using the command line client. The `--backup` flag will return JSON that can be sent into this api endpoint to duplicate the device:\r\n\r\n```\r\nnpx @autocodingsystems/gateway-client details \"http://localhost:8002\" \"Line_2_SideCoder\" --backup\r\n```\r\n\r\n### applyDeviceJob\r\n**params** \r\n```js\r\n    id: <integer> // Internal gateway id for the device\r\n    job: <object> // The javascript object representing the device job\r\n\r\n{\r\n    Name: <string> // Display name for the job\r\n    DeviceProfile: <object> // The job profile to apply to the device\r\n    {\r\n        Name: <string> // The device profile to select for the device\r\n        Driver: <string> // The driver this job was created for\r\n        Properties: <array> // The device and job specific data\r\n    },\r\n    VariableSet: <object> // The data to substitue into the job\r\n    {\r\n        Name: <string> // The name of the VariableSet (unused)\r\n        Values: <array of Key Value pairs> // Job specific data\r\n        { \r\n            Key: <string>\r\n            Value: <string>\r\n        }\r\n    },\r\n    Files: <array of object> // Files to use in the job\r\n    {\r\n        Name: <string> // Name of the file that the job expects to use\r\n        Content: <string> // Contents of the file\r\n        IsBase64: <bool> // True if Content is a base64 string that needs decoding before use\r\n    },\r\n    Metadata: <object> // Optional Details about this job\r\n    {\r\n        DeviceTypeName: <string> // Display name of the type of device this job is for\r\n        DeviceProfileSpecificationVersion: <string> // The exact version of the device profile that this job represents\r\n    }\r\n}\r\n```\r\n**returns**\r\n\r\nIf successful, nothing is returned.\r\nYou need to query the gateway (or subscribe to events) to get the status of the job.\r\n\r\n**remarks**\r\n\r\nIt's important to note that the job passed into this call is expected to be a fully parsed Javascript object, not a string.\r\n\r\nEven more than when adding a device, a job is a very complex and specialised object.\r\nIt would not be expected to create a job from scratch every time it's used. The contents of the `DeviceProfile` section vary widely between different kinds of devices.\r\nInstead, it's expected to use the gateway to generate a job using the UI and save the Json file out for later use.\r\n\r\nThe normal way to re-use jobs is to modify the `VariableSet` portion before sending it to the device. The `VariableSet` contains the data that gets used by the rest of the device profile and is in a consistent, specific format that is easy to manipulate regardless of the device type. A `VariableSet` can contain duplicates of variables - the first instance found is the one used.\r\n\r\n### removeDeviceJob\r\n**params** \r\n```js\r\n    id: <integer> // Internal gateway id for this device\r\n```\r\n**returns**\r\n\r\nIf successful, nothing is returned.\r\nYou need to query the gateway (or subscribe to events) to get the status of the job.\r\n\r\n**remarks**\r\n\r\nThis allows you to remove a job from a device and return it to a \"quiet\" state.\r\n\r\n\r\n### getDeviceJobStatus\r\n**params** \r\n```js\r\n    id: <integer> // Internal gateway id for this device\r\n```\r\n**returns**\r\n\r\nAn object representing the status of the job on the device\r\n\r\n```js\r\n{\r\n    Status: <Unknown | Clear | Clearing | Updating | Updated | Fault>\r\n    Message: <string> // Error message, if any\r\n}\r\n```\r\n\r\n**remarks**\r\n\r\nUse this to determine whether a device has a job on it.\r\nIf a device has been activated but has not yet had a job assigned to it, or been cleared, then status will be `Unknown`.\r\n\r\n### deleteDevice\r\n**params** \r\n```js\r\n    id: <integer> // Internal gateway id for this device\r\n```\r\n**returns**\r\n\r\nNo return if successful\r\n\r\n**remarks**\r\n\r\nDelete a device from a gateway. If a driver is `active` then the driver will stay active even though it's deleted. The driver will not stop and the device will not be removed from the dashboard until the device is deactivated.\r\n\r\n### setActive\r\n**params** \r\n```js\r\n    id: <integer> // Internal gateway id for this device,\r\n    active: <bool> // True to start a driver communicating with a device, false to stop it\r\n```\r\n**returns**\r\n\r\nOn success, nothing is returned\r\n\r\n**remarks**\r\n\r\nActivating a device loads the appropriate driver, gives the driver the configuration for this device and starts the driver trying to communicate with the device.\r\n\r\nOnce a device is active, it cannot be modified or deleted. The calls to modify a device will succeed and will work, but their results will not be apparent until the device is deactivated.\r\n\r\nOnce a device is activated, the gateway will remember this and if the gateway is restarted, will reactivate all devices that were active before it was stopped.\r\n\r\n### getSupportedDevices\r\n\r\n**params** \r\n```js\r\n    none\r\n```\r\n**returns**\r\n\r\nAn array of objects representing the drivers available for the gateway\r\n\r\n```js\r\n{\r\n    Id: <string> // Internal id for the driver\r\n    Name: <string> // Name of the driver\r\n    AlternativeName: <string> // Human readable name\r\n    Classes: <array of string> // Capabilities of this driver\r\n    SupportedSockets: <array of string> // Sockets supported by the driver\r\n}\r\n```\r\n\r\n**remarks**\r\n\r\nThis represents the full list of devices available on a gateway\r\n\r\n### getSupportedDevice\r\n\r\n**params** \r\n```js\r\n    id: <string> // Internal gateway id for the driver\r\n```\r\n**returns**\r\n\r\nAn object representing the full details for this driver\r\n\r\n```js\r\n{\r\n    Id: <string> // Internal id for the driver\r\n    Name: <string> // Name of the driver\r\n    AlternativeName: <string> // Human readable name\r\n    Classes: <array of string> // Capabilities of this driver\r\n    DeviceProfiles: <object> // Complex description of the profiles available for this device\r\n    SocketSpecifications: <array of objects> // The methods used to talk to devices\r\n    {\r\n        Name: <string> // Name of the communication method\r\n        Properties: <array of properties> // The details for the socket configuration\r\n        {\r\n            Name: <string> // Property name\r\n            Description: <string> // Description for UIs\r\n            DefaultValue: <string> // The default value for use in UIs\r\n            Type: <String | Boolean | Int64> // The type of the configuration value\r\n            Options: <array of string> // The allowed values of the property\r\n            PropertyType: <SelectFromOptions | UserDefined>\r\n        }\r\n    },\r\n    DeviceProperties: <array of objects> // The configuration of the driver\r\n    {\r\n        Name: <string> // Property name\r\n        Description: <string> // Description for UIs\r\n        DefaultValue: <string> // The default value for use in UIs\r\n        Type: <String | Boolean | Int64> // The type of the configuration value\r\n        Options: <array of string> // The allowed values of the property\r\n        PropertyType: <SelectFromOptions | UserDefined>\r\n    }\r\n}\r\n```\r\n\r\n**remarks**\r\n\r\nThe full details of a driver can be used to build UIs for configuring a device\r\n\r\n\r\n## Events\r\n\r\nThe api can receive events from a given gateway:\r\n\r\n```js\r\nlocal_gw.events([{subscription: '*-*-*', tag: 'everything'}], onconnection, onevent, onerror);\r\n```\r\n\r\n**params**\r\n```js\r\nsubscriptions: <array of subscriptions> // which events to subscribe to\r\n{\r\n    subscription: <string> // Subscription definitions, eg \"*-*-*\" for everything\r\n    tag: <string> // Data included whenever an event is fired to identify which subscription it's for\r\n}\r\nonconnection: <function> // function to call when connection status changes\r\n    connected: <bool> // Whether we're connected or not\r\n    tags: <array of string> // Array of all tags affected\r\nonevent: <function> // The function to call whenever an event is received from the gateway\r\n    data: <object> // The data representing the event\r\n    {\r\n        gateway: <string> // the url of the gateway raising the event\r\n        deviceId: <integer> // the internal gateway id of the device\r\n        timestamp: <string> // timestamp of the event\r\n        eventClass: <DeviceControl | CodeReader> // The class the event comes from\r\n        event: <string> // The name of the event\r\n        subKey: <string> // The subscription key used to subscribe to this event\r\n        tag: <string> // The tag associated with the subscription\r\n        message: <object> // event specific data\r\n    }\r\nonerror: <function> // fired when there's an error\r\n    data: <object> // Data object describing the error\r\n    {\r\n        type: <string> overall type of error\r\n        error: <object> error specific data\r\n        tags: <array of string> the tags affected by the error\r\n    }\r\n```\r\n\r\n**returns**\r\n\r\nAn object representing the subscriptions\r\n\r\n```js\r\n{\r\n    stop: <function> // Function to call with no parameters to stop the events stream.\r\n}\r\n```\r\n\r\n**remarks**\r\n\r\nEvents are the main way to get information from a device.\r\nAn event subscription is made up of 3 parts separated by dashes:\r\n\r\n* the device id as an integer\r\n* the event class\r\n* the event name\r\n\r\nAny part can be replaced with a `*` character to accept any value, so all events on the gateway can be retried using the subscription string of `*-*-*`\r\n\r\nThe complete list of events available:\r\n\r\n* CodeReader\r\n    * BarcodeScanned\r\n    * NoReadsLimitBreached\r\n    * PecBlocked\r\n    * GoodReadsCounterUpdated\r\n    * BadReadsCounterUpdated\r\n    * NoReadsCounterUpdated\r\n* CheckWeigher\r\n    * BatchUpdate\r\n    * EndOfBatchReport\r\n    * ReportingStatusUpdate\r\n    * StartOfBatchInformation\r\n    * PackWeight\r\n* MetalDetector\r\n    * ReportingStatusUpdate\r\n    * StartOfBatchInformation\r\n    * BatchUpdate\r\n    * ContaminantUpdate\r\n    * EndOfBatchReport\r\n    * ProductValidationUpdate\r\n* Coder\r\n    * PrintCountUpdate\r\n* GenericDataStream\r\n    * PacketReceived\r\n* DigitalInputs\r\n    * DigitalInputStateChanged\r\n    DigitalInputCounterValueChanged\r\n* DigitalOutputs\r\n    * DigitalOutputStateChanged\r\n    * DigitalOutputOverrideStateChanged\r\n* DeviceControl\r\n    * JobStatusChanged\r\n    * PropertyChanged\r\n    * OverallHealthChanged\r\n* Reporting\r\n    * ReportingEvent\r\n\r\n## Miscellany\r\n\r\nThe api offers some extra methods to help common tasks\r\n\r\n### collisionmodes\r\n\r\nThese encapsulate the standard ways of handling name collisions on a gateway. The `collisionmodes` has the following methods, each with the same api and usage:\r\n\r\n* `duplicate`\r\n* `rename`\r\n* `skip`\r\n\r\n```js\r\nconst desiredName = local_gw.collisionmodes.rename('Desired Name', exisingobjs);\r\nconst availableName = local_gw.collisionmodes.rename('Desired Name', exisingobjs);\r\nconst desiredNameOrFalsey = local_gw.collisionmodes.skip('Desired Name', exisingobjs);\r\n```\r\n\r\n**params**\r\n```js\r\ndesiredName: <string> // The name we want for a new device on the gateway\r\nexistingDevices: <array of devices> // The existing devices on the gateway\r\n```\r\n\r\n**returns**\r\n\r\nThe name to use when adding a device to the gateway.\r\nThis may be different to the desired name and may be falsey.\r\n\r\n**remarks**\r\n\r\nThe gateway allows multiple devices to have the same name.\r\nEach device gets its own internal Id which can be used to disambiguate references to each device - names are generally considered for Display purposes by the gateway itself.\r\n\r\nThis api allows you to perform soft checking to ensure that names aren't duplicated, if you desire. However no guarantees are made as to concurrency: you may recieve a name that's unique, but another client may add that name before you do - the infrastructure needs to ensure that multiple processes aren't adding devices across all the gateways.\r\n\r\nNote that `existingDevices` is an array of objects, each with a `Name` string property. This array can come from the `getDevices()` call. The `rename` mode will modify the `existingDevices` array so that multiple calls to this mode will each receive a unique name even if name collisions would have otherwise occurred.\r\n\r\n### applyDataToJob\r\n\r\nModifies a job object with the given job data.\r\n\r\n\r\n```js\r\nlocal_gw.applyDataToJob(job, data);\r\n```\r\n\r\n**params**\r\n```js\r\njob: <object> // A full object representing a job for a device\r\ndata: <array of Key Value pairs> // The data to apply to the job\r\n```\r\n\r\n**returns**\r\n\r\nNothing, the original `job` object gets modified.\r\n\r\n**remarks**\r\n\r\nThis can be done manually without using this api, but it is provided as a convenience.\r\n\r\nThe given data will override any existing data on the job.\r\nThe given `data` is merged with the existing data - any data not overwritten will keep its previous value.\r\n\r\n`applyDataToJob` can be called multiple times with different data sets to apply data from different sources. The data in the later calls will always override the data in the previous calls.\r\n\r\nA lot of validation is done on the parameters to ensure that they are being passed correctly. The `job` is expected to have the following shape, at a minimum:\r\n\r\n```js\r\n{\r\n    VariableSet: {\r\n        Name: 'Parameters',\r\n        Values: []\r\n    }\r\n}\r\n```\r\n\r\nThe data must take the form of an array of objects with `Key` and `Value` properties, as follows:\r\n\r\n```js\r\n[\r\n    {\r\n        Key: 'VARIABLE NAME',\r\n        Value: 'The data to use'\r\n    }\r\n]\r\n```\r\n\r\nIt is valid to assign an empty array of data to a job, the result is that the job's `VariableSet` remains unchanged.\r\n\r\n### waitForJobStatusChange\r\n\r\nWait for a job to change status.\r\n\r\n```js\r\nvar result = await local_gw.waitForJobStatusChange(4, 'Updating', 60000);\r\n```\r\n\r\n**params** \r\n```js\r\n    id: <integer> // Internal gateway id for this device\r\n    status: <Unknown | Clearing | Clear | Updating | Updated | Fault> // The status we want to move away from\r\n    timeout: <integer optional> // Maximum length of time to wait in ms\r\n```\r\n**returns**\r\n\r\nAn object representing the status changed to\r\n\r\n```js\r\n{\r\n    Status: <Unknown | Clearing | Clear | Updating | Updated | Fault>\r\n    Message: <string> the fault message if any\r\n}\r\n```\r\n\r\n**remarks**\r\n\r\nUsed to wait until a job has been applied or cleared.\r\nAfter a call to apply or clear has returned, the device will be in either `Clearing` or `Updating` state as appropriate. We then need to wait for this to change before we know if the operation was successful or not.\r\n\r\nThe status may then become `Fault`, `Clear` or `Updated`, as appropriate.\r\nWe receive the resulting status and any fault message as a return value.\r\n\r\nIf the operation timed out, `Message` will be set to indicate that a timeout occurred.\r\n\r\n# Commandline Usage\r\n\r\nFrom the commandline:\r\n\r\n```\r\nnpx @autocodingsystems/gateway-client <command> [command options ...]\r\n```\r\n\r\nTo get the full list of commands available, just run without a command:\r\n\r\n```\r\nnpx @autocodingsystems/gateway-client\r\n```\r\n\r\nTo get the options available for a command, run the command without any options:\r\n\r\n```\r\nnpx @autocodingsystems/gateway-client <command>\r\n```\r\n\r\nCommandline options can sometimes be given by position, these are indicated with an `_` in the command's help.\r\n\r\nFor example, the list command takes a `--target` parameter. If you omit `--target`, then the first unnamed parameter gets used as the target.\r\n\r\nThe following commands are equivalent:\r\n\r\n```\r\nnpx @autocodingsystems/gateway-client list --target=\"http://localhost:8002\"\r\nnpx @autocodingsystems/gateway-client list --target=http://localhost:8002\r\nnpx @autocodingsystems/gateway-client list --target http://localhost:8002\r\nnpx @autocodingsystems/gateway-client list http://localhost:8002\r\n```\r\n\r\nUnnamed parameters are assigned in the order that the parameters are listed in the command's help.\r\n\r\n# Common options\r\n\r\nA gateway holds a set of named devices. The commands available operate on these devices by name. \r\n\r\n`--target`\r\n\r\nThis option is common to all commands and specifies which gateway to talk to. The url should be of the form: `http://127.0.0.1:8002`\r\n\r\n`--name`\r\n\r\nMost commands can affect multiple devices and so the `--name` parameter can be used to limit which devices are affected. The `--name` parameter can accept wildcards in any position to perform matching against multiple devices.\r\n\r\n`--raw`\r\n\r\nBy default, commands return english text describing their results. If further processing is needed on the results, they can instead be returned in JSON format ready to be parsed using this flag.\r\n\r\nThe format is one line of JSON per operation performed.\r\n\r\n","readmeFilename":"README.md","keywords":["autocoding","acs","autocodingsystems","autoLabel","acp","b&r","cognex","datalogic","datamax o'neil","domino","intermec","ishida","kba-metronic","linx","logopak","loma","markem imaje","sauven","sick","toshiba","videojet","wonderware","zebra"]}