{"_id":"tentacle-edge","_rev":"32-0014a27af93458add7935d57930c53c4","name":"tentacle-edge","dist-tags":{"latest":"0.0.38"},"versions":{"0.0.0":{"name":"tentacle-edge","version":"0.0.0","description":"Industrial automation gateway","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore ."},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"ISC","devDependencies":{"eslint":"^6.6.0","eslint-config-prettier":"^6.5.0","eslint-config-standard":"^14.1.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-node":"^10.0.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","jest":"^24.9.0","jest-watch-select-projects":"^1.0.0","jest-watch-typeahead":"^0.4.2","nodemon":"^1.19.4","prettier":"^1.19.1"},"dependencies":{"@types/jest":"^24.0.25","bcryptjs":"^2.4.3","cross-env":"^6.0.3","date-fns":"^2.8.1","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-request":"^1.8.2","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","modbus-serial":"^7.7.3","mqtt":"^3.0.0","sparkplug-client":"^3.2.1","sparkplug-client-jar":"^3.2.1","sqlite3":"^4.1.0"},"gitHead":"b296e0303bbaaa412c3578f3bbfabd7339ce7b37","_id":"tentacle-edge@0.0.0","_nodeVersion":"12.13.0","_npmVersion":"6.13.3","dist":{"integrity":"sha512-UU5uoV0QzTodanqc8/5sae8JBy877OrvX2VBbULnqktgehoITieoHOkh0j6IJvmi7vWyr7TxfyCPWJJToHqPvA==","shasum":"1391ff855aceea7d52d3655a84fec6760965035e","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.0.tgz","fileCount":47,"unpackedSize":425227,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeLh3uCRA9TVsSAnZWagAAsYQQAKRLbjT/zk4QIXsOEvuR\nIAwXKPUNhnKSe9n8JuE6fTNhMvDjY1hiK/7gRc6SS/XJYzH6Adxu1cMvlNQI\nO8wRtXg2r237/4xhzs/wG/mFwByx9ZSOtIHGUSd1Djq2mWmlk2f0dNjaE5VQ\nzZWzhPksHj3+AkqmHZOla5GcbC+Z4vPWwR1ODwZX6mILisOTqT6XTmPh38sf\nPyM8cVxxS3ntTtloS5S/IaXb9kb3gwOedFAOwF6HjshK8GgVBjlFKCUepfb8\nBYRkojs/krO3jeUWmvxPU4rizgpCLFt1N6DeNMOp++a6qmEux/fbj3MOOAW2\nV4appQQC6JAFYqu/4U6bFtzW8rKQxDvoH9qBws5hpi3bod9L5gDPq8de+P0N\nNqxFOhun+wWL2wp1Oe75AN8tr3QTyEEAqaSe7YuA6HZXFGMKtMieA22h1qjG\nHEznfC0eBQKnECu7hH9pAPlI74UPQQGu5+v0o1ZpW5iKQV8ulwO+JXeI3SD+\nJmZ/SDvLsJpc6c1Sqp5GTagvGcNDuHfGo4x6wnj3IFwQUuD11lxtS7YCaXGm\n/IrcQrolzM4TQK6jJry5auWFjWXq4LZ3LJo372UgcnNCDeegIz7cm2xfl2fx\nb/LQwCNPKIBiEFU1Op9pRH28Sfw9/vlYyaGsBRaNsUKM9QNaZulW6tzd1aOr\nXev/\r\n=O+bh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGc6hrzmsTucx9F9vpNURkkTH0F7hcu1meqGLxfFeI/yAiBPZeuTcIB+oDKIPEfDcnHJ18QTdQWB3bwC5zQI0zU2Cw=="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.0_1580080622182_0.45712006622568047"},"_hasShrinkwrap":false},"0.0.1":{"name":"tentacle-edge","version":"0.0.1","description":"Industrial automation gateway","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore ."},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"ISC","devDependencies":{"eslint":"^6.6.0","eslint-config-prettier":"^6.5.0","eslint-config-standard":"^14.1.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-node":"^10.0.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","jest":"^24.9.0","jest-watch-select-projects":"^1.0.0","jest-watch-typeahead":"^0.4.2","nodemon":"^1.19.4","prettier":"^1.19.1"},"dependencies":{"@types/jest":"^24.0.25","bcryptjs":"^2.4.3","cross-env":"^6.0.3","date-fns":"^2.8.1","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-request":"^1.8.2","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","modbus-serial":"^7.7.3","mqtt":"^3.0.0","sparkplug-client":"^3.2.1","sparkplug-client-jar":"^3.2.1","sqlite3":"^4.1.0"},"gitHead":"72d1ca534b5d824c5ab8511e2ff36145775039c5","_id":"tentacle-edge@0.0.1","_nodeVersion":"12.13.0","_npmVersion":"6.13.3","dist":{"integrity":"sha512-Lg0OZ+TxzJkF0ghOruuBM2saBlvZSs7GJvzzOJjHP5FM6JZAtTSTok0S8NZBNRWPpdcDBRbz3WK7WJ4Gfwvgew==","shasum":"2c899970a256e0cf2157ad8de6eaf7c0a1110053","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.1.tgz","fileCount":47,"unpackedSize":425248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeLie6CRA9TVsSAnZWagAAeIAP/1XKyo9/+BTPXho0joda\nSUOAmg1ZsOW6QMl/oFssy6badWawhAQw3c9ciP7hrd5InoJZI5kthYYWwgoB\nJJezjQ90qLJ+f8vRajjCqovmeRNNFSsxF6+wdPkd9YSAIWo2dTbFZBjmVyj0\ng3dzwI5Qc6tZj1SXxDf+nbcrDhSz3rcb4poEfmS/TNKmKg08ACCJZDO9Fy3t\nt7ef3cg++juoUqjsRA8O/Iy3yNUGF0bESwRyjhB6NhdMdqmKNrtAgoC9pObh\n86oFAvX/UR8gy84GNiI4jNlb+SYmsl4k8pNd4WUtJtsHGCyXQnNuafAhXeOP\nLzGMtRd8X5pMIodI195n3Q4OfYSFZCEwShDiTQiGYLIKUQ+FTsXLRL4gsCbj\nPajQlZdNsGpc3HXA/wsxXQDgRXwd2qpsy2v2qzeYWITW4UjuhyFXlVsf/sKC\nRqtimvTYnbPvUcKkvdKWpkg8viWsoZVJ/y6tG3UfEcMf6JBHO7R6flloS/oI\nKiFW1PNyKmrOkXOXrZX6RfYMuJf9DlY9OCKTl5mL8Culx8I1IWjZBMXOvYoC\nCbN872OLilTUn8j/IzGr/VUshf+4h232u0ypOs8FufLLvohpR+VjujP7ccwZ\nDaqC73qd3j6/XuL7ci9zLAxdUwDoNlqsufAl202oLHnaa8y/RNXzoyqzLH3+\nwyri\r\n=+52S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTd13KkpOdi69qDZdQusNKaWgNdGfBy6Jf99cgTHg67QIgTfrd4oXsq2APaxmty5KHUfyCYTEUqZIl2bcgjqLn7Gk="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.1_1580083130105_0.12307640946300347"},"_hasShrinkwrap":false},"0.0.2":{"name":"tentacle-edge","version":"0.0.2","description":"Industrial automation gateway","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore ."},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"ISC","devDependencies":{"eslint":"^6.6.0","eslint-config-prettier":"^6.5.0","eslint-config-standard":"^14.1.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-node":"^10.0.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","jest":"^24.9.0","jest-watch-select-projects":"^1.0.0","jest-watch-typeahead":"^0.4.2","nodemon":"^1.19.4","prettier":"^1.19.1"},"dependencies":{"@types/jest":"^24.0.25","bcryptjs":"^2.4.3","cross-env":"^6.0.3","date-fns":"^2.8.1","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-request":"^1.8.2","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","modbus-serial":"^7.7.3","mqtt":"^3.0.0","sparkplug-client":"^3.2.1","sparkplug-client-jar":"^3.2.1","sqlite3":"^4.1.0"},"gitHead":"c5adebf3433ee4dfbf7b2b376f9384f96dad3526","_id":"tentacle-edge@0.0.2","_nodeVersion":"12.13.0","_npmVersion":"6.13.3","dist":{"integrity":"sha512-QFpXL8wuNS/0UiYRs08oVe7tgpttMKcKuZfcbDcvZwSUGcruqU5AmGs4VmfXAqjHkaBQNf3pmGJ6MozGktGdJQ==","shasum":"5fec981a3f51646d1b575f20f64d761d74677d51","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.2.tgz","fileCount":41,"unpackedSize":135668,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeLlEbCRA9TVsSAnZWagAAjncP/3YXmhukEo27gREHoE9S\nk8OZsG8RMjOz89DGzrhol8BnEOzStIWo2cxb0nNP06fZehnWPR8gIOMmZ2e+\n2IrS700GciV0gW5Z72reuPNHlgDwFcHRm5GfUCCNzI78AVnpi46RbOY7Z0/4\n4TaE4OAr/MciVrHTTP/Jh1eFyjkabMwRg6npkeASLKT8ieCTJtvvHVDtJEqY\nbgqfuKm5wtNMbQhDPmWLLe3iIoAx9JhLgbRkentropHjXrWYRjWvOa0E2NuG\nivm10CmDBn8WdUaMsqVGOK6A8dVqDgk5+u2bnqSAsmOUbxB4uyzD6B7VQwyS\nZT+l5DLrJC0jtUpmGNVI+Rl058P7Nfw/sth7ivqVU/Is+o79pTIbSJmHkrQm\n7BpDXc7jODa/GZDP0ItCkkI0uJEO0xXr7b04t0xRXzoY+obBzu+R3KX4Ptx3\niAhlJ0cmBjKT7xp0AND9bD+EDAGbfA/3lBoOSPngDSMuiDlPCPUzaWG+9PMV\nOnRXN7TjrtPCmLVtW32dn88qrPl1/7PqgYrS2/m8tDG3n2crxAV+cflFAMIk\nAQp1lWjTEkc8LYFif5rkx/kd+QgCb1xoyaDIKusP9cdzanUPv1vh+85W+fk9\nvrlLzLsxffQ6wvY+G7H3DvKti96ZXo2h6K1PGm+fi6ReX3C2y5Xwj9dbXBjZ\n+TSq\r\n=Ob6V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDycqnnoEFkArMJ0R721DMNWC1owcYRGi5Dh4M7GggIUgIhANyaue4iZPT0lXsoNNFXgzDifMXUkleyUz0uE3Dcmtcq"}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.2_1580093723042_0.06508542070224421"},"_hasShrinkwrap":false},"0.0.3":{"name":"tentacle-edge","version":"0.0.3","description":"Industrial automation gateway","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore ."},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"ISC","devDependencies":{"eslint":"^6.6.0","eslint-config-prettier":"^6.5.0","eslint-config-standard":"^14.1.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-node":"^10.0.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","jest":"^24.9.0","jest-watch-select-projects":"^1.0.0","jest-watch-typeahead":"^0.4.2","nodemon":"^1.19.4","prettier":"^1.19.1"},"dependencies":{"@types/jest":"^24.0.25","bcryptjs":"^2.4.3","cross-env":"^6.0.3","date-fns":"^2.8.1","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-request":"^1.8.2","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","modbus-serial":"^7.7.3","mqtt":"^3.0.0","sparkplug-client":"^3.2.1","sparkplug-client-jar":"^3.2.1","sqlite3":"^4.1.0"},"gitHead":"16e9e9ac7076eb5228fe892fbeb201679164bff8","_id":"tentacle-edge@0.0.3","_nodeVersion":"12.13.0","_npmVersion":"6.13.3","dist":{"integrity":"sha512-cIM+RsyboXUTdcPZnt0MEF1yU1SPK8n/kT92oxkanLqnjIkQ5pjC329j0djwNudGqWa0uIy4UE6bw4drIn9BNQ==","shasum":"46b17c7d2aeaa967218317842d300b214b27102a","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.3.tgz","fileCount":46,"unpackedSize":152534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeLnR6CRA9TVsSAnZWagAAobsP/3C7Qv02GyeowCpvwrwM\n37VdxMIquLJ+rYBS2y4wq/IEP/9rfPBkcW2hNmmVzBkxkNfwCmHMehsLGKo2\neBai8IIRDV3qMCGUBumBDwdkWy4lZYHnEaJid7AnJx9jvYFl65fJTw01mcba\nHqh7DYBIQbo+fTOaTD/xK8L/RI4TNHhFsb2P9bo9Ho1lrxJE0rypw3XSWlRQ\naxNCEj6IZyr/oCib2T77Fl0KySBAKPbCmklrGSioCJoPZwpoWqy/bVzyMY5A\naiJF5hiz3E9DpqkCKVgI9D/lpYxkDnvgxcq3YjjRH3xkAlmd5Ow4wD20DRzB\nuNkaQ2ygkPsjvjsPk4hNn3KhZp8YUG8N8RBkrpKxxPKqFaj0/wFtFIUlyy9L\nCpnVy72Da0rWIpXYUiFMXv4kP7vjilJz55Jey6IHnpeAj9C9p3PHVY917zBD\nuoUQGJ+YpJ69BwCmCrnAyLgx8HKi0G3+63uuxwTnrFQk98ndevnEYY15+r+i\nz+e+Vs+U3dnN6DkYsc1q0IahDrtqaIHqzEE4gVnVqF45FItuyQmvrEHRVdhH\nrL6IayLQSdPBN8epGhh+hxgHmeWCxPWXRSuLdsob17t4wPTEAk8e4wL35Vsi\nxlRijupFZrrZ0jMTpwKS+1KM62c5XgMkksKDALpJkYLDYtIqwlz20Nvh8vRw\npBFd\r\n=nXVr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCA+2FLm8QXqRGTarcK9Hb0d0vpWvFWoeu/ssDTnLS0iwIhANrUMPCRCWZnYYoUmM9C2Ypb1Lm5W2AsuIk8mWH6DeDy"}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.3_1580102777581_0.6870510985787472"},"_hasShrinkwrap":false},"0.0.4":{"name":"tentacle-edge","version":"0.0.4","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore ."},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"ISC","devDependencies":{"eslint":"^6.6.0","eslint-config-prettier":"^6.5.0","eslint-config-standard":"^14.1.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-node":"^10.0.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","jest":"^24.9.0","jest-watch-select-projects":"^1.0.0","jest-watch-typeahead":"^0.4.2","nodemon":"^1.19.4","prettier":"^1.19.1"},"dependencies":{"@types/jest":"^24.0.25","bcryptjs":"^2.4.3","cross-env":"^6.0.3","date-fns":"^2.8.1","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-request":"^1.8.2","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","modbus-serial":"^7.7.3","mqtt":"^3.0.0","sparkplug-client":"^3.2.1","sparkplug-client-jar":"^3.2.1","sqlite3":"^4.1.0"},"gitHead":"247029c5470d0a76f10986bea770bfa7643f70ae","_id":"tentacle-edge@0.0.4","_nodeVersion":"12.13.0","_npmVersion":"6.13.3","dist":{"integrity":"sha512-MX9nK9E54/t73TBGMn4i0lOTl+wE7z+Suf1MMRBhYAwQXhk0XrLmo2tcp5KqDONmtMcnoSih9Bh6/I7WDQv2PQ==","shasum":"4db8bf163c54671441c3428c8956f358f9a7400f","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.4.tgz","fileCount":46,"unpackedSize":149543,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeNfCLCRA9TVsSAnZWagAAjUoP/ii7QzeESkr/mQvzaKfx\nud8G/SyESxe5nECT0Vqz09gesvhscjhStjxfZ8YQ9MfwkIKSa86BcDA6sgq6\ndIrmYdQjMwPX7ZGYS+ftZsRJ7rlh5Ng+WKogqaSkTHPC8jzS//deCBslVXZQ\nrn1rC0Sw/Pd+6JEganNZBpL1DUdwDAtJlHb1UKJwqKA8MZnRCG2GjGCurIOS\nW1ICy8BleGm8rxemYIhb90FlCIIuon6M4+YqyfDAenQFc749UJDVvJSsEwut\n9fLYWl7Xsbwf/X9PjZVfftYamljD1X/gA1Pww/ipRpgHP/KZ5PN1iGfdyE07\nnyP2B+8l+nRNMqXbwFQDdSq3V9urO9YvTTSlFxKxLblqMKog6QhhhV9RgN2T\nkumZW6I+DRPAA4nf9vrEUy35Qeg9y9W5ChWZSfYi6yrJW5vImbspn1Z/22nY\njE4E1Rwbr7evqL6JF1qC/iJHOvTnocHf8jM7VCx0r1XEU6FDrydrOxR50m6C\ntQTq8K9hPem69/ZfnwSjqsL6D5xAtHWLCkBltFIpf09B0G8XzKIg56neQEHP\n6iSX0pET9rfloM7IDJiH8dhz6m3u17vxwc9A9OfIG3WEyHU38glsgwDmO6Zu\nJ8MxgqlSR97AVndITkBoOMhriltvC6dzYm/EdGFLj9Rdc+NOR0SQfHIgpmNm\nnhG6\r\n=yphW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCz2ZhRxUuKKOCuvIt1edXWgQJitqpYUTmygFgYeaBndQIgbEhmXLXGHKOyd65OXZAC/rmyFSACmCcRtFo4ASFqswg="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.4_1580593291270_0.057141439422407014"},"_hasShrinkwrap":false},"0.0.5":{"name":"tentacle-edge","version":"0.0.5","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"ISC","devDependencies":{"coveralls":"^3.0.9","eslint":"^6.6.0","eslint-config-prettier":"^6.5.0","eslint-config-standard":"^14.1.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-node":"^10.0.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^24.9.0","jest-watch-select-projects":"^1.0.0","jest-watch-typeahead":"^0.4.2","nodemon":"^1.19.4","prettier":"^1.19.1"},"dependencies":{"@types/jest":"^24.9.0","bcryptjs":"^2.4.3","cross-env":"^6.0.3","date-fns":"^2.9.0","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","modbus-serial":"^7.7.4","mqtt":"^3.0.0","sparkplug-client":"^3.2.2","sqlite3":"^4.1.1"},"gitHead":"ef3fb4b8b3ca4cd9425065c1010201cb4d737194","_id":"tentacle-edge@0.0.5","_nodeVersion":"12.14.1","_npmVersion":"6.13.7","dist":{"integrity":"sha512-MeJNbn3DqXu65gBOoF1rhjxxOyPFcw1fscelwFvsWocZhAIdNVQKX4xyQdNniSxdEf5y46iOxlBJNt5SE5Scsw==","shasum":"e603b94079aa007d8426f83f12eab66027d1ee1e","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.5.tgz","fileCount":53,"unpackedSize":208688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQIGXCRA9TVsSAnZWagAAxcgP/RqG0vCfuRovFiYxIOWl\nISMKFN4cpSCucn1UHY/kdtutUeB3Zw5o25VodqCMK3XEmpELMCKoiBn3iju0\nETJbIT07JsV9Kd18YHAlF4K1gDVeruIzBr5kW1sgcPwX5cgmS1tVgfUqei0q\nH5aoMpG+X9uF5cvm2BUt3EcbMMY7PlGSXmw8BV+vBvp0FMZW+6jYsyzJL3e7\nNFTOZ0TDD4A/8PW9MF9vOg6S1qL3GXv8raTPyekT45J56iLILLBdkqW79xwK\nyYQPf18rdG9FS/s77eY2fdf+3f1po15JuFyVmewrLGci3sv6s9IzcjrG+2E4\ncH13WLB0T3JMPZZsRu3j5lcG49V/RB+U3MNSpg1mb3fZ8WBmvqHD4oD0ujQS\nrlOuZFuwj1UVy51R5obeKCo2CuRu97srHzwCNumJFC429ZAizPMWKFgDefBu\nTzHTQX8otzq/k2dJwNbzeYRYNWRKikJl3EFmuvjVF1N76FpMgWiSD9bGIR+p\nDAVPHSjpIGSJ+vhkHwv5sVu/PBdljrxNjiVvPm2ltRHe44hfMTc4KHUaCawS\nhaof3sO/WvTAOkRbvpBTl51bTyURk4BKir3c7bu9pxznOptu9xVFXHxFGVnf\nV0PLFH2G6Y9vr8LGvA9V7/mZYZpJ02lFUzpo4GjrpQ45MlqvNb14Z3mhiHMj\njqyj\r\n=eFBk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3jHBZWRnhGCi8BzSe9wULESltofM6D5lXaXKEGW9c2AIhAOb/EgMMQa2gXbZtyK4zwG5Sd/muFXbKubMEnQ7TI7z3"}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.5_1581285782704_0.9321993742039008"},"_hasShrinkwrap":false},"0.0.6":{"name":"tentacle-edge","version":"0.0.6","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"cross-env node ./src/index.js"},"main":"src/index.js","author":"","license":"ISC","devDependencies":{"coveralls":"^3.0.9","eslint":"^6.6.0","eslint-config-prettier":"^6.5.0","eslint-config-standard":"^14.1.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-node":"^10.0.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^24.9.0","jest-watch-select-projects":"^1.0.0","jest-watch-typeahead":"^0.4.2","nodemon":"^1.19.4","prettier":"^1.19.1"},"dependencies":{"@types/jest":"^24.9.0","bcryptjs":"^2.4.3","cross-env":"^6.0.3","date-fns":"^2.9.0","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","modbus-serial":"^7.7.4","mqtt":"^3.0.0","sparkplug-client":"^3.2.2","sqlite3":"^4.1.1"},"gitHead":"4f3d017f7d5dfc52e847f84ccf0bd7dc07881b22","_id":"tentacle-edge@0.0.6","_nodeVersion":"12.14.1","_npmVersion":"6.13.7","dist":{"integrity":"sha512-BHlB68LmHGBxCaYQOL8H1C1jKy0urmQ5WLYHlccRFCZO0c5rNGLrTTDk3pQu6U49AloV8Fkaw8GPndpY6BFo5w==","shasum":"f7bf8b88beb7dab21d45d768332f317fdb74b980","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.6.tgz","fileCount":53,"unpackedSize":208744,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQIW4CRA9TVsSAnZWagAAS1sP/1nNewACozIWzqlV5Eu+\nZe0Hks0KTuWz6+OZ+qVGV/2Se4VrF8gMhtKmVIGz9TofHN63ob3NH3bihnnY\n/I9WBOh7gzMqUlbwA0YM38GtVYKSYP5AtHKC8PTHN9nRZrwcejlcDoP4FQI5\ngkpewuEmkcIEbnDsgpAM4gXsg8ew5CVUGbtrNUI4s9vrCl7eV0eNA1M897VE\nKbm68CUPgA+i/rpR0sYJEVyL2yNRb8zOmZfaWYPNKLq9+OydZ4xXsRS3lNXD\njd6aBr2veiqd3O+JrKKqZlorWRKjYq9qW5gMABDKNZgntfytz3uosJYCna5N\n7F/IJ9cyhS/DNnmb6U1WKd32hQDf0QeONpft39ylWtGJJSWmKDyy7OAIFFAO\nudrWHO4gkifDX9LVxUJzD8sRRmUZ8OH8Vlc5OiUMKLFhkZd0hGeSiqLIRzCY\nlpjPWAluMKc/8K5mnOQnIfiVYiUKObvhVn5Uyx7fwXuSiP22IF2liMSyAafF\n0zY1t+q5BmmDQE+7vf9Av6nQg/osgcBQR2WbQDNvrMSYJYo8gz11batkqxfj\nsIunIoFjmp0ej4uEskUWnBIKDiH2P7Qxg2AWuiKIlvJUPi24Ii4qWfPpTaRC\nzw4WdBLsJspkgd3XJjF8XrpH5tVEiEWHes/sodxkVwmHZpZzG/gZsryQ6XhH\n6qmn\r\n=Vz5Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIErmZ1pecJi2IjHwgaoc9+U1NcQS0h3i4wbbmh6yFpy7AiEAydQuJsDM9bR72GyIssYO87S57KcGZRCTh8fNv+T5H8Y="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.6_1581286840350_0.5916160981931964"},"_hasShrinkwrap":false},"0.0.7":{"name":"tentacle-edge","version":"0.0.7","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"ISC","devDependencies":{"coveralls":"^3.0.9","eslint":"^6.6.0","eslint-config-prettier":"^6.5.0","eslint-config-standard":"^14.1.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-node":"^10.0.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^24.9.0","jest-watch-select-projects":"^1.0.0","jest-watch-typeahead":"^0.4.2","nodemon":"^1.19.4","prettier":"^1.19.1"},"dependencies":{"@types/jest":"^24.9.0","bcryptjs":"^2.4.3","cross-env":"^6.0.3","date-fns":"^2.9.0","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","modbus-serial":"^7.7.4","mqtt":"^3.0.0","sparkplug-client":"^3.2.2","sqlite3":"^4.1.1"},"gitHead":"2f69026bc771f375773938434ce1edcba06c8bf3","_id":"tentacle-edge@0.0.7","_nodeVersion":"12.14.1","_npmVersion":"6.13.7","dist":{"integrity":"sha512-U4oZoGuLVw+jXdhKfUc03eHBF1WUNTvkDBrWsm1DojSNbcHcBYpRMszZrxkGPJGZyULPOzFiM3UY7db8yiEXCg==","shasum":"2d841fcbddace5c8ac1edb4c61ba2abdab4b17ac","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.7.tgz","fileCount":53,"unpackedSize":208729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQIaGCRA9TVsSAnZWagAAR3AP/AxpbVhHT/CgM3sHQSaT\nU6DvkzpR22HfCGkNl4kilD3KRcOnmme7cdW1KFC/hQs84jOOAB+6yjAvJVCu\nNQdXf55pcz/cGGh+WsmeC7ihq4/xtl6GpwFtZ/4iKc+qpf40UXx1vPNBv+Cw\n2yW4MM7FKu8gv4pQJrgdDJ5hwP5pXrSOWiEet9aC3JssJRv4JwcTIAVYeW8n\nRkc2x6q/8uTfpCySf+gjZhiDuCjAZnKv4cZ/bidsNXvCXDk00v2ayKLSc2Gt\ntqecoGKE1bTznTrYdxgyjq25nEAjDvxD01LfOKUwCveSIO/QBOyMecTV+QWk\nMJPpn7oPoH+FV5zAkgo15hVdRYmyO5uF5b14rExzuGOE2snCS7pnOsv3VY07\nc472cl5BzEiEFBxOmhz/R3+fc9ogi8Lbl5JTDhn3GizxFDHs65LeJl2rrP1m\nO9zn63vN1EpO3ryun/PAA5csKKUDcaxn2KSDKw25Ou7mJLWdLVzZIi7C913C\naALHom5QtberEROJVUN+kxeRC98B8G/o21B4nhf2X9tDuRb35+hgTyIYgsXN\nHrqguW57PbW3vl1LcuW+kBZt2YOxMSiDSnBYXwsNWU4AmPmpTQDjYhHqLX+A\nBokoZ/ZS+1di3rA7Ofg1FPSLTRbHdAwUTR+WxOaVMKGeUxg0gZBHlUMcDB5G\n4Awc\r\n=M8JF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHCZ0w9OA8ANHD/B336J/CjgqTk5wVZHzutbSIgn4R5aAiEA9SSUSgnz2AcVwqoCF+sR5SOuFgHgBO/2Gms0MqXKYeo="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.7_1581287045474_0.029813266092264756"},"_hasShrinkwrap":false},"0.0.8":{"name":"tentacle-edge","version":"0.0.8","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"ISC","devDependencies":{"coveralls":"^3.0.9","eslint":"^6.6.0","eslint-config-prettier":"^6.5.0","eslint-config-standard":"^14.1.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-node":"^10.0.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^24.9.0","jest-watch-select-projects":"^1.0.0","jest-watch-typeahead":"^0.4.2","nodemon":"^1.19.4","prettier":"^1.19.1"},"dependencies":{"@types/jest":"^24.9.0","bcryptjs":"^2.4.3","cross-env":"^6.0.3","date-fns":"^2.9.0","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","modbus-serial":"^7.7.4","mqtt":"^3.0.0","sparkplug-client":"^3.2.2","sqlite3":"^4.1.1"},"gitHead":"d8efe88ef082ac48e4c50f6f211b93926fdcc907","_id":"tentacle-edge@0.0.8","_nodeVersion":"12.14.1","_npmVersion":"6.13.7","dist":{"integrity":"sha512-y4vsCtavXmlnoQE1P8mAxCcwKhifgs2B+M8QgOtxoyjeyb3/uspwX/N4BFQdr/z+uiU+0auq2cZaO0EDbSoOSQ==","shasum":"a7e20327dc0aee101ef9b248036f0a72048d39d6","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.8.tgz","fileCount":53,"unpackedSize":208734,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQIkDCRA9TVsSAnZWagAAFlgP/jiaFum+MlRGs8aDwABg\nJawkFMGsfyjCBUgQRE+klF33Coh4GmlqOHZW+e0+dbQSmt43xrmMlN38dE9+\n/yCjRQI4AlS7tJHFYMaE2E/fejEjFs3mJgVc9GYxhBft6bN8q+k4F/tIqfQD\n+BP9WESbkEtCBNXBh1/pNjPwyG2hGvn6BWf7IAKUdKKzpG7oeJn1hmEgBnic\nkokiPcjrOg6bD6weVD56+cyZl0YdmgIwD74F1oYgKTRxZs7mgy54m/r9Cqgi\nbURjRn2FLUF2uGXq2jyYVDkJRPlvwE8vXWsaaMlpiCQOJHCGNeGwtMFGfw3Q\nijS/sNqQeOa8ZLBQ085VISBWZtuLJBcdnfoJycoSMwIrTpAtsecXvOk0lRUC\nSlfifp3e5pD+l6fKLb15ERhMwb8dNoJsHDb3n/gdqjvGEomJ6V1dpPdJXSbK\n6J5IOG/eSzLUW1KGfV2wv/5Mp1s71SSiiklSOqwWI2iZl+smoGrl2cVR9E9Q\nsK27VzbvACA2NsY2ZI+mplYhOY0R6/3LunWCKQkMOuCG6YPO5xk7h48DvkOO\nq0vI3EV57iKQRbmeLaM6ge47a6AkL66JdvAx5YqGTZPy2Z04Ka0s132pHv/Z\nUykRhKdhQ6y1+2DTX/AZg4POM0BSMDqQ22WKidYXnceeOZRf1f5FQoZOP2V/\naI6H\r\n=E86v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpJJijL9fRIW2Jdanxw397KHMMEF40FFfApan+dH/bpgIgf+n6Ll5WUe7iYg/hNUonp1FjpU0DYpUbZYHqCybjI70="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.8_1581287682835_0.377070255892761"},"_hasShrinkwrap":false},"0.0.9":{"name":"tentacle-edge","version":"0.0.9","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"ISC","devDependencies":{"coveralls":"^3.0.9","eslint":"^6.6.0","eslint-config-prettier":"^6.5.0","eslint-config-standard":"^14.1.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-node":"^10.0.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^24.9.0","jest-watch-select-projects":"^1.0.0","jest-watch-typeahead":"^0.4.2","nodemon":"^1.19.4","prettier":"^1.19.1"},"dependencies":{"@types/jest":"^24.9.0","bcryptjs":"^2.4.3","cross-env":"^6.0.3","date-fns":"^2.9.0","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","make-promises-safe":"^5.1.0","modbus-serial":"^7.7.4","mqtt":"^3.0.0","sparkplug-client":"^3.2.2","sparkplug-client-jar":"^3.2.2","sqlite3":"^4.1.1","tentacle-sparkplug-client":"0.0.2"},"gitHead":"35cd238e4ec30e55ca91390f54b645c20baf08af","_id":"tentacle-edge@0.0.9","_nodeVersion":"12.14.1","_npmVersion":"6.13.7","dist":{"integrity":"sha512-kDvG7GJSVecPZkNfSgPSB5K1xI8K3mqg+Fxj5e4XCSmsWG5Z8JJNQ/0vzTpBEVmsEiUXwClNOmoo1Q9dq55W9w==","shasum":"4dbb4b2841d90a82a88630f53fa90a89134546e1","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.9.tgz","fileCount":52,"unpackedSize":289346,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeSsPeCRA9TVsSAnZWagAAcEoQAJbl14SrAZcZhNRceTuh\nKU7TIsFCbbVoyrmnM+WKrYWG4aNwPi5IYWtXSjuKIUSgpQLEXocY5ziwPgjB\nrLQfc/nSWUNKwdTEzOF8YgBzN+Dg2FXE2LaK/EowMkTgohhQ3Pwo5CtITqg0\nFQw8nA9pN/2xK5Z7QDpAyOHRG+NZdlEQU4DFFM+yjHl6xjUE1wW9mNymqNoW\nHDNdH0Id+grDwLd8ss8HuZ+OkJHz13GfXLyvfoRjkiRqMr5h/AUlUn6HBFjn\nZ2EamCxLDkNMn9V9bMoocppM4jtAjwxB8EeKjcG3PyB+s7wkLOroT1lMeTwL\n1XWUk7qYMSqosbszzM3HA9hUD54o5BrWWgh3oFm2vqbaF1iIcMmoYjtaElSF\nMvhIT3JexbKja4GX4ZoxfRt37PwkRN4zcxFLY0OOHQ4LGiAQKggNhuCkcRi8\nDOMukqS4hWD+YqkxU6G4wwnxysnJ+0MCVRQnLof92QvrQf2QbeszGv4639R5\n+K7dcNliRfBUL7SFQyoMbJ0acrM9itCl9N3pgKDUIhlg22vjArxrjjEUs4MQ\nSbPECDYLTOqQChAc5aRAGC+K93WXvUFqY89e1PtYQa3LzDHzcNRHXFKjzgIv\nDTZYuOzcb6vaNn2ss9wGxaFC1MVucbv6Bpxl7eNRnhZd4FaFtaGp/L2FqAfK\nleFN\r\n=+GYU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEoYcYfG3TjTTwX3Kgq5HfZkBT1OBqF9smAv3uL6kJTmAiEA+FsajFXKo9i+nZuJR4vMhwvLSqJcFnwbrGnpz9mPGWY="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.9_1581958109518_0.03514183620117839"},"_hasShrinkwrap":false},"0.0.10":{"name":"tentacle-edge","version":"0.0.10","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.0.9","eslint":"^6.6.0","eslint-config-prettier":"^6.5.0","eslint-config-standard":"^14.1.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-node":"^10.0.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^24.9.0","jest-watch-select-projects":"^1.0.0","jest-watch-typeahead":"^0.4.2","nodemon":"^1.19.4","prettier":"^1.19.1"},"dependencies":{"@types/jest":"^24.9.1","bcryptjs":"^2.4.3","cross-env":"^6.0.3","date-fns":"^2.9.0","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","make-promises-safe":"^5.1.0","modbus-serial":"^7.7.4","mqtt":"^3.0.0","sparkplug-client":"^3.2.2","sparkplug-client-jar":"^3.2.2","sqlite3":"^4.1.1","tentacle-sparkplug-client":"0.0.2"},"gitHead":"a6c480da998a3dee206454b432a8109606cc5642","_id":"tentacle-edge@0.0.10","_nodeVersion":"12.14.1","_npmVersion":"6.13.7","dist":{"integrity":"sha512-e+OqXFFmeYqQLpIBVUJF0WBKJf7FPbHEjkn2ueTOrExx9SOvzSvvXSrcK1hK2MZSK+i8aER9jVJFsDpPyl1dVg==","shasum":"7477be09470424775bc0eb9a7770c6cf878761fc","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.10.tgz","fileCount":52,"unpackedSize":289379,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeUWu1CRA9TVsSAnZWagAAfdoP/jQK/lgrUDUbtoI4yWn9\nHdJTc5BSlgC0bMbYeBJ8Zuewd1A+poG2BC9iBOfYNUxPPKEx4hBAPW8szEzw\nlGO2XiZEsD5hkovckZAqyAhIwXiDYNlECqudvw4Zmq/j/Bc4/CeMbzaHZgxJ\nlpN5ZsIz4mqOIetP4EbDJDI58h/mgxsuj95zy6EQfRudISF05VLXCaHp3rTj\nJo0VWCr9qWWarhPJZVoURcxmDBeBDO4HpKK9XPWygRbB6rc9JG9+I7eTZc0R\nnYwQj0nQ4PR38Ff4G6J6btN5uJEVosrn8QFihiwwo8l9sj5teyOA8GTkXr7n\nrH9Jf8PEC+2FuaUsYWf0yJTpH8Jk2dw6zlyv7lJQmFMrsQnQlCEi70pAVEOD\n7b4qdhp7lmCCSg7EQ9N2p8bRf5nC7YotV7JFg1GRwVzUodcZ/hTF98BarbXM\nrmbzAEonHAiZ5DVnBaTzFv0azX8pPdZRD0e66cRMQlNOidvNkPztkBDYCz+j\nyMOawd3O6ajC4CBVghpIq/PKJZAYozJkyWQCn6/IR6lhZZjA4S/+cTvfSIZz\nehjGg4MxvXI+RhrlDgzkq76+sPcDwJXXuG2wjHSmRHxBwEmF4nluCDaPFWjz\n8DKMW+11FIfHrg1PQEax6/D0nEDBuj0NpUco6Kr9JPzd8wIm9u+op53uqqLc\n7kIu\r\n=3Tds\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE64DOe7UHwSKNwz76sbbEy3q1iFqusRwlzis1AWZCx2AiEAg4zVN6671XqSsAYdwUZaql9Fxb1fyxXGZ2i+kEYSZrg="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.10_1582394292994_0.43454632225497125"},"_hasShrinkwrap":false},"0.0.11":{"name":"tentacle-edge","version":"0.0.11","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.0.9","eslint":"^6.6.0","eslint-config-prettier":"^6.5.0","eslint-config-standard":"^14.1.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-node":"^10.0.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^24.9.0","jest-watch-select-projects":"^1.0.0","jest-watch-typeahead":"^0.4.2","nodemon":"^1.19.4","prettier":"^1.19.1"},"dependencies":{"@types/jest":"^24.9.1","bcryptjs":"^2.4.3","cross-env":"^6.0.3","date-fns":"^2.9.0","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","make-promises-safe":"^5.1.0","modbus-serial":"^7.7.4","mqtt":"^3.0.0","sparkplug-client":"^3.2.2","sparkplug-client-jar":"^3.2.2","sqlite3":"^4.1.1","tentacle-sparkplug-client":"0.0.2","winston":"^3.2.1"},"gitHead":"dc4112b5d1c2293677b70b496b13d9d142d0c5ff","_id":"tentacle-edge@0.0.11","_nodeVersion":"12.14.1","_npmVersion":"6.13.7","dist":{"integrity":"sha512-y8HIuokA9g02UUy/J/x9vxVjYuPHvxhHOf419sabdyuKdnxy0SPkBXtvereiOpVbiCd8eOVDrfNEK31WHmdSRw==","shasum":"98e5ec9bedb3043a66ceb24086756ecbd53a205c","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.11.tgz","fileCount":56,"unpackedSize":298323,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYz8TCRA9TVsSAnZWagAAu4EQAIjVDpmYHE5OceKGn5vr\n8WRVMMTJwbt+WECqGrbC4nxfrG1VBxm5Dq6MDQwyoAdHC+J+bg2RbDC4gl5s\nDdL++Qhpmei028lWcwqd9XRe9/kTdbkRrnqs5VDogtMDsmnAaNdGMxDs0GBd\nEkbymJSGLBVHb4sdGARBOXDPmHc3QV+4Z0jfb1zGJAVNJMyrC/4cji4f7LMu\n0TpkRYGQ+eOGeLZ/As2d8Uw/e6A25MqAu4mO1JKndhRxbeg2pM8SeDIiWv5b\nC5oSz7+f95SBUnou+6rbuCNiTD9Fc2rtU392YqWflirtJw6hVzPMf4cnJlAv\nZbRhKspoCaXlPLp9hYhPs+JLyGHPouyDJXv4YPjVi3eTjL6AOqgsWMPEb2W4\n8Sdpo6jHjHMgomyqYCj8rYqny9CEIIXlduolOsucMRDBKBfRImK+yMi39r3x\n8Z9Vw7MrMTSspM0uLEXsbCLqISKzUNELU85LoJFnqsOpiNnJByPW6Wpb64lg\nlcH6lLk3T5qXNxO6YGBOgcmg1tAIgLOz4knIJ7XE++no8sm0FtGr63Ewe6Bb\nMC6xu9H9pBMW7RLCia6K0wfEyZOrp082t1csLiFqSWKvqq1zCfbkWG7/hK8X\nuP7H7lACFm92mofJIR4nTH7H1G0UfVMA1q7pLXXbR4f0ydk6LCGoZ9tcDEPe\nPE4V\r\n=rXy6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFhxQOjQeBjaOLSfcQBvypoAJ0VltfwmaRo5Dc/VYFNjAiEAsSyG8QAanDwc9cO4u2xtQ9rytMRNIfPD6y7Ih9U1W+g="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.11_1583562514515_0.32452516508629503"},"_hasShrinkwrap":false},"0.0.12":{"name":"tentacle-edge","version":"0.0.12","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.0.9","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-config-standard":"^14.1.0","eslint-plugin-jest":"^23.8.2","eslint-plugin-node":"^11.0.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^25.1.0","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.4.2","nodemon":"^2.0.2","prettier":"^1.19.1"},"dependencies":{"@types/jest":"^25.1.4","bcryptjs":"^2.4.3","cross-env":"^7.0.2","date-fns":"^2.10.0","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","make-promises-safe":"^5.1.0","modbus-serial":"^7.8.1","mqtt":"^3.0.0","sparkplug-client":"^3.2.2","sparkplug-client-jar":"^3.2.2","sqlite3":"^4.1.1","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.2","winston":"^3.2.1"},"gitHead":"7b1959afc62bf4ac65ae510766dc187ebeb60d92","_id":"tentacle-edge@0.0.12","_nodeVersion":"12.14.1","_npmVersion":"6.14.2","dist":{"integrity":"sha512-0Ml96c7rn/+9zm1OTd5+/WDb4XnndOFP4r4I2js7Vqk7bejIZwi+TFxJ7uMgMweXzgftd0vE2M5COIt+N0fxCw==","shasum":"ae512e9a2ede63750fba7c77c46582ac0b3c49d8","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.12.tgz","fileCount":58,"unpackedSize":312573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaZqhCRA9TVsSAnZWagAAJAgP/i6wFqReX1VTRJf6Gwem\nJBB3p5srqRsqbFy8i7KiPuctsaCej/uaaClyR2yYe2n8ztY8g28PZt48F/PT\nTpm9hDWb1mbG6m2+kObo7LwTNJudcXxqsxDIb4nQMqp45euyuy7u/M8Ow0X+\nbAhIQLUKDqFLspzcQrG+KBKYaQSNoEQo+PPOY9pib8MtQ82A7kml+oRdtEwx\n2z5cHag0+EyDsxTCFF5TFc1G4+jLAd9B8a52j1Ohsa7GVc/Gemm5+uetEX9E\nfKbakoZMM4QektaVGA0i/7di0X4vALrxEnzHcbYbYzEknvW/KI0zBfV/+aGA\nEh5U2eOg8sHaIdFyeZXb2NaED27ekBcyMhSt3o0o+Mc7iL5ZOPaM9wdVNn/P\n1Cvw+7+dnd3jLV57YD0YjgdF0ROz4sDS2u7zkUfEujMwGh/LgU6KW3mJ+1AN\n67rQF/AFc5gq3I3IzHnAPrwEv1lRus8qy80+tdi/3SnaULTTnhisPdbIyyAW\nWOG3fa6zKa8wzZR7SnrFAFwCRFSIG9ucfG9KnHu/f2oasMw6nUJIfRaB/Gfu\nlugQoM5SkOLry6mxP88mjCcN42RBmrRyLdoCp6gLQ6WdY/nW6i0r00iDGob1\nEn0YUxs6AUSbInoZjqECQo0ZY4GVmXpk7Y1ZUJAGpiHAhyMx2R45c435ZYuq\n7ds7\r\n=MGyK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGw5CBwWPRZmSN/EZZTM7YBm6swFWsmhKQebj7Z4xdfrAiEAhR57ZkhIkTkymXUd9MfsW2mWNOzaKxtB21A7qeRJbbg="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.12_1583979168359_0.16856685906406121"},"_hasShrinkwrap":false},"0.0.13":{"name":"tentacle-edge","version":"0.0.13","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.0.9","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-config-standard":"^14.1.0","eslint-plugin-jest":"^23.8.2","eslint-plugin-node":"^11.0.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^25.1.0","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.4.2","nodemon":"^2.0.2","prettier":"^1.19.1"},"dependencies":{"@types/jest":"^25.1.4","bcryptjs":"^2.4.3","cross-env":"^7.0.2","date-fns":"^2.10.0","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","make-promises-safe":"^5.1.0","modbus-serial":"^7.8.1","mqtt":"^3.0.0","sparkplug-client":"^3.2.2","sparkplug-client-jar":"^3.2.2","sqlite3":"^4.1.1","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.2","winston":"^3.2.1"},"gitHead":"ca9a9940d5d1cf944240033787bf413ed30efc87","_id":"tentacle-edge@0.0.13","_nodeVersion":"12.14.1","_npmVersion":"6.14.2","dist":{"integrity":"sha512-zgre80zvCS+OqAIgIMuy/WIMkO525RgCQZSFNQjFnpJMFZ1V8ouq13yKA6BKqmG/iPTeDlbCALiq3/8otCVNug==","shasum":"971dc5842cd71333fba086f21feef957c0b22394","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.13.tgz","fileCount":59,"unpackedSize":443533,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeapo0CRA9TVsSAnZWagAA5V0P/iKQ27rGzAsi2EnP+oJI\nG9A7GMO7lXJYomcb7jYjHIPTziYWAzAfimd6bdgMiQKastU77HWWNh4r/g/r\nmvjiMwer3pG6Q4woLtpL8Fw59FRxZOkG3dBV5H5AECS8PKrFw4plp/4C4X2q\n+jE+3Z1KrHq0JeLoRiPTWams8KMhRnWJXZE/UQoyki/wdr+Awpq5ScAdYOnd\nv1KpI5AmKxu7y5stkWElGlAdshR2CqIRHqZZpPdZXjN9Zw1qXqgx9A35W8ah\ny67hzkcth5e776sGkqN/3kSmSuvN1G6qbXlYG4OOna9ymz4hKw/m2jyb0CC8\nnxDsE3vqqoVulX/lsdNDPZITGvMebI121TUyJGX6TtAHZ9ExGIFsqlqYlrJ1\n8wiie2p2kgvK/TLXNvhafheM0PFp0kPvEEJZ5Ng6jhi30Nn8PG/DU5/MAICT\nplM824SD3PDqMLumETSga217leumOmwmJE/fgjuyYrcYtcaRvuqZ6S78JeZh\nChw43a386Afq/K5PfEQDh00+VHsUoEA/ovvrFwb2fXLJNx2zIVcj2eMIsJ9B\n3DvfhL7JWc2PhpSsyx7jnp1Ad7W0XocBryVp075wVT/8UmbAmdpAK8m1OVBv\nPSmj5LHUEhFDX74JYN04SXaBJAn+L668BWkKBvmOnNZ6aVlLLiYExyPYRLdj\n+Xl4\r\n=jHET\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyw/HFO/BuP+Ipjy1J2Lw/oqIDycZckCz3YFp9seLRRAIhAJCTeAl9RdAIoSQfYuzXIxPmYLnkZHxnHamdIgazfcej"}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.13_1584044595499_0.5651866209875815"},"_hasShrinkwrap":false},"0.0.14":{"name":"tentacle-edge","version":"0.0.14","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.0.9","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-config-standard":"^14.1.0","eslint-plugin-jest":"^23.8.2","eslint-plugin-node":"^11.0.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^25.1.0","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.4.2","nodemon":"^2.0.2","prettier":"^1.19.1"},"dependencies":{"@types/jest":"^25.1.4","bcryptjs":"^2.4.3","cross-env":"^7.0.2","date-fns":"^2.10.0","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","make-promises-safe":"^5.1.0","modbus-serial":"^7.8.1","mqtt":"^3.0.0","sparkplug-client":"^3.2.2","sparkplug-client-jar":"^3.2.2","sqlite3":"^4.1.1","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.2","winston":"^3.2.1"},"gitHead":"fa5c5590e48002faf30661b3bdf616763a8383a0","_id":"tentacle-edge@0.0.14","_nodeVersion":"12.14.1","_npmVersion":"6.14.2","dist":{"integrity":"sha512-jFLhGP83RGtspb8BDAOiHlqMpieBEXORN9/boNZTbL81x73SQEKIhv1amfQwfqc7rlhI9XZImxdpmrk22QKSTA==","shasum":"239d6600518cdd73db7e1e1ca7e4a7b4fc4e2156","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.14.tgz","fileCount":57,"unpackedSize":293767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeatIKCRA9TVsSAnZWagAACiQP/jkBZwxl3o57w+HwubIp\nDaiFpeb9KhHu3p43W0AwURLWfMpuxUvUQKwtmaUAfovykZu3/ivMb38+OdrF\nAg842AKCLpZxgCfx4OXB56jEERGQsx6SbiHGVZnTGXQc2SxvEIQwBzYGB2jF\ngxiyXiZRkgIoD0Q285qjs5iwBWuM+sI/PLgmBcV+tXtdX9bNr2jcui/3hOG1\nq9kPpPgYSKMeKH5PM2ewAK96EjPFafoLGB6Myjy+ANncafN5dJ2kzzxGOcjW\n81WRS0UvL+8PktexyyMnl+bB76gsZtIl7/P2LIfP+Tf33LrFXL5K62rcWTJo\nsXkFVSmLS32y5sT9u7G8+0QUMYrkbPFBTsou4m9OhbAfEgYIIZsrzNyfqW4j\n44m3VzCfL0p0JYVrC8n7H4aoJfe4+ulFdF73lg23d/h1+5YHs6afNoX3U0bS\nCB5+tQr47GQLIOlwht26lx2j2rMiTyw3xMbWFDGStyO/bN26oWPSqZkTiu/A\nqCuUGgwTcoO1gBxaS833/7wTg+hlsdGHb4XXfPjs9xgF8ZqO0j9PT2M6DQaT\n5VyHDJmEBl1ZUlKVNVfdBmRiLtKZuBk8BhNEp/DuacnQRseXwGfboXdOuAqs\n4ra6s6k7jK0JejXBapcAj/lmfr9Qs1CPj3v237SYDa+ZuPpGVGgZSq7/Zcof\nZ/u8\r\n=+vsO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHE45Y+Vk7QQXsFWD1Lv8sVuaVHn9TlHcUmYYLeyoyujAiEAlQ95WyKHKFbXZGThRTrPkxQ4uoCVFzjMXAwsGFX41Ow="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.14_1584058889999_0.08148815002794962"},"_hasShrinkwrap":false},"0.0.17":{"name":"tentacle-edge","version":"0.0.17","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.0.9","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-config-standard":"^14.1.0","eslint-plugin-jest":"^23.8.2","eslint-plugin-node":"^11.0.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^25.1.0","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.4.2","nodemon":"^2.0.2","prettier":"^1.19.1"},"dependencies":{"@types/jest":"^25.1.4","bcryptjs":"^2.4.3","cross-env":"^7.0.2","date-fns":"^2.10.0","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","make-promises-safe":"^5.1.0","modbus-serial":"^7.8.1","mqtt":"^3.0.0","sparkplug-client":"^3.2.2","sparkplug-client-jar":"^3.2.2","sqlite3":"^4.1.1","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.2","winston":"^3.2.1"},"gitHead":"f30aebc5ea19ae9095f5b0f64f86a3a5ba8efb5f","_id":"tentacle-edge@0.0.17","_nodeVersion":"12.14.1","_npmVersion":"6.14.2","dist":{"integrity":"sha512-627z/pLVtxxcredlpU9cPh051UdR+vUtRENGrf3QHIUfg1js//jD12n/IlkbO19mlgZazdrgolCMamkE3PpuSQ==","shasum":"16341408d048b183a4fccfc9de2b788d187f6b75","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.17.tgz","fileCount":57,"unpackedSize":288322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJebUNVCRA9TVsSAnZWagAAH4IP/Rx9hWbpZwKzhvGjny42\niWLw5JRebLu+pzMGSCbVKjqzuSotYzJ/wr9Iejt85j3iY7dqeMprYpkAG7og\nJ49RucbR63A+KyHU7JM83nbZ+CS72GgMJaOsspjon4+UsnB2BMRARRzlToJ9\nnyDyHaUXApKAjKC5QSAgOBhXrqcRee1aytkE1tdWQkQhS/5nc+zBV9gmOxHP\nI8Y7HGYcRbQVkL54nWXpVEBvOPpfpz/xhbgSIWqYaDeKjYGjCedXUneFFDpz\nsRHZL/LCgPCveB/gEywE08iEkQxG/yug/udUJ3ZG2TRRpV8StiXcF5y7Fi+B\nYM9zkM2o+kYIM5cdotYpMNj2wUmFaWjQD93YApJtqiTGTJlb//R9wPWlb24K\nH92xx6J+LMbNBA/Rca+NenO/KnphmgjmT+XrSeM8JFsrSfQl4Kn5xltPjqOa\nAGO5wpzyt3nrB0ebvkMA/WdWXEn2QHSuVAPcXIM73fs0LTptHb4WdwUBbTvJ\n5f5eowQEpQZDy6NutVGiU02NRrukUnNXMn8lij204m084xUQhCz1ODUTPjzQ\n60vGm9a1JBDs0pBE9hTf3yU0VLQRmLrmySOdCXmGt08PU4fmBfjO540V3VVZ\nTRJU1plxRx2SsKnVRrvCXL4/u0AlCFLd/pNh6m8BwjBTwwM+V+BDXmbAUvQ5\noFP3\r\n=MFAr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFNjER03lLAHwfHqAnI1zqhyOIep+xNhLSJhNF9edeC5AiEA3VujXp1GsnPuGV/1IVFthDrNnoZxx19H/xOOhePTIxQ="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.17_1584218965126_0.47570523964470324"},"_hasShrinkwrap":false},"0.0.18":{"name":"tentacle-edge","version":"0.0.18","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.0.9","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-config-standard":"^14.1.0","eslint-plugin-jest":"^23.8.2","eslint-plugin-node":"^11.0.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^25.1.0","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.4.2","nodemon":"^2.0.2","prettier":"^1.19.1"},"dependencies":{"@types/jest":"^25.1.4","bcryptjs":"^2.4.3","cross-env":"^7.0.2","date-fns":"^2.10.0","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","make-promises-safe":"^5.1.0","modbus-serial":"^7.8.1","mqtt":"^3.0.0","sparkplug-client":"^3.2.2","sparkplug-client-jar":"^3.2.2","sqlite3":"^4.1.1","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.2","winston":"^3.2.1"},"gitHead":"bc91e19b6708db00a5d9a2a2830aa382fd974506","_id":"tentacle-edge@0.0.18","_nodeVersion":"12.14.1","_npmVersion":"6.14.2","dist":{"integrity":"sha512-NPVCOB9Z+15V5XNo24Qc2p2FCsLwz80AGF/38ijLoKn8HDJDEZAZtVrXL/Zv0WdoCC/h2OOu05uh2WyEOvOVPA==","shasum":"a5f7d17dcca6d2b779e14d87a7f1a852176524f5","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.18.tgz","fileCount":57,"unpackedSize":289330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJebnTRCRA9TVsSAnZWagAA8XgQAIX9pLYgMzQdIq4EE5/5\nW/ZfmuNVmDSQdn6RcaDnw01YvRzPIkOQGCs0IFkkG7mG87JDeVas9oWm1pcH\n73S6t2e24H7/PlCGUnCFL+HzKydRnaIKva11IFEc1u500Gzq8uv2HHJhfmB6\n1NGpa9sSJnror8eO/hnweVWxdMNiRDIcilF/bBa8hmdjpYUttLJNDEguPFD5\nE3I+GNgx6AY6yL+WtUxU2caB58pedfJK9GcBjBd1OkmUqIjN0pp/EJ6k7Q/a\nVv+/xdMeApmwYEpX4XyzfdEXPyXTdP2Ubqw12aZg/Xt1IU2IhLMcdEbJx4yw\ncv0HR8FfEyoWi6GxTwiZxtAqVYP0WBu2S3azMSd6SA7Um042egpqe3Prp3rd\nF1xxUxv9FfzltNfWM+FkdvY1THWZmxIJDddT84iRqmywYESPXw9TlbJ4A+ta\nvvAbA4PEqLP1vP8g6cMkzrmAHNine3Fw/TlSvcTsaeN97KpxQwtRFa+R99aa\nkkrZNjEf4zjcf+tLzRRJgGo9N6o3E/PoK07eS6ogAg6ze9lYBSjmc2DB8iY+\nJUHY5PtfQ3GhIurblE0pdpnZcU2TCj5rtAWLvHkD3WCSfAfITBXhsHIv6s7Q\nBkojN5Rp/3dX8LRrrRi6REwoYbJlOtnnTDFJAUvp/n/QzVBo8eWzJWLe6ShF\nmIM2\r\n=OJmb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDfXYt7KnrX59wLILa7INm3MmhB/P6BPPKvHraEv/kGMAiEAiCXHz+HMP7IvpdSY0B1SNdUeKWLun2hhkHK7iAqOkvs="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.18_1584297168451_0.9017802268248163"},"_hasShrinkwrap":false},"0.0.19":{"name":"tentacle-edge","version":"0.0.19","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.1.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-jest":"^23.10.0","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^26.0.1","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.6.0","nodemon":"^2.0.3","prettier":"^2.0.5"},"dependencies":{"@types/jest":"^25.2.1","bcryptjs":"^2.4.3","cross-env":"^7.0.2","date-fns":"^2.13.0","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","make-promises-safe":"^5.1.0","modbus-serial":"^7.8.1","mqtt":"^4.0.1","sparkplug-client":"^3.2.2","sparkplug-client-jar":"^3.2.2","sqlite3":"^4.2.0","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.5","winston":"^3.2.1"},"gitHead":"777e4d496cd837959f59dcaf577aae913e572e2d","_id":"tentacle-edge@0.0.19","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-7bbPMarh4aRlmcrh5FvCh7QUEylFcndlIPerIoHCh3/+j3Q66G8VhS5VyKGWnAa6WV9Jp9Ma4tSEJ8ipSTRs3A==","shasum":"67743cc265d646fc96872621074baf561f00ffe4","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.19.tgz","fileCount":59,"unpackedSize":303483,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJex0dOCRA9TVsSAnZWagAAQ1YQAJUDm3S3VWyGIgnJPIrd\n1F6OfEtYIXKa5gJ4qz3Xxthz/F/PCEQmhR8BZSZ8C5Ls39AEg5qUBc54yBER\nZPB7RA1aX/fpaBDVzQP9s6FzyzvjdbV99/r9HP+v3uKt5XGs3HwqTvn2+TpF\npKGfMqhQMYn2RhQXukAtzhdLBNeiq0GgsbZY6KQoeq55PuZGYht1Xjl5fXWu\nktNNBf7LeLb9CN/RGJ90Cq4S+dgz9glwRh5KMv0+cCT2u0cNWbkwV2vQdTd6\nWA8FiCBP980/dNBo3fld3uwyxH+lbA4JGbRYuRCKRR+d3eM0yhD8ccMmz6hs\nyvTec/lw42DP4pT22lFwc2gljaMGa5JXAKY8kgUaRK6y2IYTABQFaTa1G/T8\nx4RlfHgMv2t9otJgXXemusGX7cBvDrAw6Rdocyd3n8VKyVYJI9PJBe8IRaw9\nW/MjdiWAJ7GbIitijhCoayyNTBbEJo+zaTV41CzVZ6LPu3a6wxM/2GcN9SHn\nplvaoDYp4KEuaZy0z8E4E35zwWcoeMcQhupEMXD9iheX0NkU1AsEh0sZmWKU\n78dUm9GMZ1Y16lS7LxfDr1wzz7N9WXQiRTSAu6XW2Q1KgZYbCin9zu4ZN0lh\nhyeSaioEj+hwMlSFJslL/J0G3XhmLgoTRPtWYHbP/2C7WlTx7bxXzyk/uH07\ncXQR\r\n=s6yf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH8l0RQAKmnvZEQEsbs5jx1dIdng0dG/Z+QIK80J663jAiBTqxrv0+j0lXDFfUJWvvjOt3rzqKHi3pMAPtke6NC4Ag=="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.19_1590118222030_0.2845131289412526"},"_hasShrinkwrap":false},"0.0.22":{"name":"tentacle-edge","version":"0.0.22","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.1.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-jest":"^23.10.0","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^26.0.1","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.6.0","nodemon":"^2.0.3","prettier":"^2.0.5"},"dependencies":{"@types/jest":"^25.2.1","bcryptjs":"^2.4.3","cross-env":"^7.0.2","date-fns":"^2.13.0","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","make-promises-safe":"^5.1.0","modbus-serial":"^7.8.1","mqtt":"^4.0.1","sparkplug-client":"^3.2.2","sparkplug-client-jar":"^3.2.2","sqlite3":"^4.2.0","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.5","winston":"^3.2.1"},"gitHead":"0462d52b13e22d4ac2c1d06c2612d0b183a5b8d8","_id":"tentacle-edge@0.0.22","_nodeVersion":"12.14.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-fsf+SdafHBnyx/IN5s2qc0vgpXdbkyONLy2Gr1zXOOKLgRjrOMOAvs++3XI67JS+/8xdkOWObah/y6KHraBoqA==","shasum":"b0dafdac501df9372b12839e2e56652f1c53084c","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.22.tgz","fileCount":58,"unpackedSize":290369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4VxCCRA9TVsSAnZWagAAjn0QAIzkKovX6f+28b//dSiN\nRTImlvK9Lv2ucrk2H3G+4HCGmnThQklsSSK3kSAVpv2aLq+tcIAH08Ven0et\naNK+Bo599ig3hqekHbFESZ8pS+w1GNv2jqcTwYDzwmAgCKA1QGYQXL1bfrFo\nZTkKIvmQacah4lWsPg8Q4JMnRZndxl1fmH8uCK6yAIrih/1fZ4KsYSr3F3V4\nSDBn7Je3NIKnrUeWAnNqyweHfKyboeUmzYKgWvchEiRwhl9ELtDVKEkWQn0r\nO3uEwAIfW7Rt2m0vZyXruwBO22dlteanjqhLeX/Km5BpMn1zm9V9x6IzW5Vx\n4EA6NkxidZaT4Us9/SGunwfl0Q8d0E0RnGN+FAt097HWKdlOTw1TtehuIsdE\n+uUCaCdnx6eQGzmWXdlSACpLRr+nnOwROuuSzronT1+bC4FvLilUBUBT4w40\n3arKrjSxV3H4H0uLIz8iCR2MHS1zoTY4cuJsOE4T9WC3iGh0eWOCSsvGo5Ig\nnn2YCJ/VHL3fJvsR/sQckFSSEo8eOH/+eSUFC0hB3pMCQikXXvRo+RYciH28\nve1Af2cc8BBrWIFtXaQZ5aF/dzTpFEpwB0g/bKG/WZpmZ2MOu617pL+cP47z\n1oCyrOSj+wUyvjKW19JnX5OtQh28y2TqCAZ6Q6VGDXKxZhG87AlQjyIS9s3j\n8I4q\r\n=+n/2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWQ9V4XsMvpi2HzKNcYKDaYCj9E3ligQfqYLqnmV4UHAIhALvvF9ngDB0vSmQZ/EsJQQIB5xjqWYScUwz630E1wv3F"}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.22_1591827521854_0.2963721558084911"},"_hasShrinkwrap":false},"0.0.23":{"name":"tentacle-edge","version":"0.0.23","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.1.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-jest":"^23.10.0","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^26.0.1","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.6.0","nodemon":"^2.0.3","prettier":"^2.0.5"},"dependencies":{"@types/jest":"^25.2.1","bcryptjs":"^2.4.3","cross-env":"^7.0.2","date-fns":"^2.13.0","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","make-promises-safe":"^5.1.0","modbus-serial":"^7.8.1-no-serial-port","mqtt":"^4.0.1","sparkplug-client":"^3.2.2","sparkplug-client-jar":"^3.2.2","sqlite3":"^4.2.0","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.5","winston":"^3.2.1"},"gitHead":"9d46d3e08580abe761463556c45debdf45046d7c","_id":"tentacle-edge@0.0.23","_nodeVersion":"12.14.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-WR6gfet3eLxuNm4meX+GElCtvGGeEG9wPehHl5jRm4lJsb0YjeC5uL6AmHr2Dy5Cu8lrr4YpswfkhR1iybYXiw==","shasum":"8a3f60ef35fc2144d30e0c65088cd1b9ab66025e","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.23.tgz","fileCount":61,"unpackedSize":304155,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDyScCRA9TVsSAnZWagAAjD4P/AziPjb3AzgNzMQznxDB\nHOd+Z11oSsNfHv7gmV7QaRcBmajr7BjPLvvfw9kVhoFz5SCm7XqzT8QHUC//\nn7Eif45wNGo7+YF9SKcPGt1MoRp3fdhWPLutNXlJa5lW1NGzxVSsRQd0FQO1\n66hNYCbS5jqKjbzlWQnJUeNeA+ut+KbwbLBQDazckeLo6hoZnmNpm8ptuX4m\nOZzA1VTw0Daeh39MwTHCzzDsPMNoDONRSp8QH6gNmO9cAV+gpZfxog5TlCOw\n6c4kF+R3oRqFkFUQM4hlU0Rfg+47bKcLo0jExbZ9WQ8tPK/1utBDgTjs/0wJ\nS4AFsKsg6RF2iF6HxjwsFzzd266DcF22rEMujSf2b59CwdsY08aD7yji7O0V\nTY+SQ3GdoGhWVIVfpVBy7wAdmZrC63GsCBa8yAhgU5+q/yzWorkflytMBQsu\nn1t4SLMDjVecnY+ogG1rw727eo7qUsl8ckLuszFrGoLp0J/2yxxgHySaK8z8\n2RpSWXCMkK54QMEjbLS64/0y9aQ1EiUfXIUfB45yzhZIVdN3Tw0VT8r/u2fm\nqQvlDa+J6ESewGRxPpldAHZfmald4/DKlRDjpAX0KF+BqzLbidH3DC4RQr1b\nkxwhjlU8Ho05MBcE3AB/k4I9xgfabuBafaGeufbI+5UbyJoGJB0WCpRGtOTN\nifMV\r\n=VMtb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtLStufrtR0bkc+FW0kek2b4cVsc2ISwgbxWDg6jHD2QIgBaAG5gNlW7N4HEYwoAGOFWaBnYdxjwQS/h/L2JouceM="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.23_1594827932349_0.8803301411001891"},"_hasShrinkwrap":false},"0.0.25":{"name":"tentacle-edge","version":"0.0.25","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.1.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-jest":"^23.10.0","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^26.0.1","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.6.0","nodemon":"^2.0.3","prettier":"^2.0.5"},"dependencies":{"@types/jest":"^25.2.1","bcryptjs":"^2.4.3","cross-env":"^7.0.2","date-fns":"^2.13.0","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","make-promises-safe":"^5.1.0","modbus-serial":"^7.8.1-no-serial-port","mqtt":"^4.0.1","sparkplug-client":"^3.2.2","sparkplug-client-jar":"^3.2.2","sqlite3":"^4.2.0","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.5","winston":"^3.2.1"},"gitHead":"bc179033b37fc0b97db2aadff1ed21f8fa06a990","_id":"tentacle-edge@0.0.25","_nodeVersion":"12.14.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-VGxrYF8sMHy4HY25KAmiMwojgfwXkOwS7CXm9PhO77GnCLzItCjWkPNTBGrmlAm63R/F/ncywUwgKpanew/Zfw==","shasum":"79f3995e5c4373facedd24999002496d0009bec6","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.25.tgz","fileCount":61,"unpackedSize":306084,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaZ85CRA9TVsSAnZWagAA7cYP/1AqO2UJGTR0AwYGBfg9\nI8u74vXGdgdocGlMo/AXAjkSLWD+gjYdy7xFHTudFapFzg1lmSbVzBRVYWT+\nBirjJj87FQIso7TDWKyERqxmsFS4C4kJCn2D1wqFjUq8pm6Y2ICB0i6cMUnF\n+6YzeljLufuzio5CI7HC3OdZ+CR4UrHFHYzSLDq9H8ifUO3ASmCCB4+WaqF+\nMmxsfMN6BlYsJJuKW5yVyHvYz5oUviBCKnaonrdVPfJCwf+HBsMAQB2LomYz\nhJIg3EBSG5iZeJmEL9hKBvSlMBZCitllx4EYWBWUdC01U8Jw5Ma0/EmSBNd6\nb8sxKz7dphHKgKQ5kMpPZsQooK/zgEbsnYx6EjKhR+NxWMeFjABkNTl2jebE\nSws11BtFZQIMxlUAoTyKuLN1yDdepKju34SjSkqqcMNZxlWjbXQIuxu+mFIA\nLtPCHVkL4V7fEvoSlC/2aclMO9CaFS2nNg0l9ui9aAy15tsFZGixksjwZQHB\nkoOmIxX4AIYSypoH8Gb/cqoWMwGk3LGVXR2uMpnZiaGP9tXERRM4b98c9kqI\nurEKJtE6Dj8K5XfTs+NUslqTsr0N7yIKVmYiDylUDILj63oAS3bNSfHek+8k\n3KuToaRhWGhnk35hcE/Mja7/WYqLhFU0lhlcOqMxSxIHoxDcbir13dBYeZQd\nP4+O\r\n=pxme\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIChgj89KYLZyLjnJTFHMkeWbjYddfJthYCAuViIyipuyAiEAi19ly/FMEHQcLJzuZh6CvVI+X9sSoeWU6bGP6JQmYF0="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.25_1600757561391_0.24774894690429528"},"_hasShrinkwrap":false},"0.0.26":{"name":"tentacle-edge","version":"0.0.26","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.1.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-jest":"^23.10.0","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^26.0.1","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.6.0","nodemon":"^2.0.3","prettier":"^2.0.5"},"dependencies":{"@types/jest":"^25.2.1","bcryptjs":"^2.4.3","cross-env":"^7.0.2","date-fns":"^2.13.0","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","make-promises-safe":"^5.1.0","modbus-serial":"^7.8.1-no-serial-port","mqtt":"^4.0.1","sparkplug-client":"^3.2.2","sparkplug-client-jar":"^3.2.2","sqlite3":"^4.2.0","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.5","winston":"^3.2.1"},"gitHead":"ee67ba9b05f4809d466e1fef65c05fdc3058297f","_id":"tentacle-edge@0.0.26","_nodeVersion":"12.14.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Ft5AQg8WN6WBVCsClAYTI0M4Iway5GiINgFns3gNNU7jfFYvd2RCOjhlBZt1U8AJ2xwkbU8ci4BupZoHkC0L+g==","shasum":"2c2d469235d746398ec08d1750406139844cf1d4","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.26.tgz","fileCount":61,"unpackedSize":306084,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfah36CRA9TVsSAnZWagAA96wP/0qugWVKIF/WTQgzpw4c\nD7jVNWkb0mEkt3y9yokxggf1F9r1AwkN8kaG91aDoSeAuBLXG1fdem0ahNAn\nguEr8Vo95o9W664LAawgdC/+F/w4utX1CSneLfCJ3XE2DMwaeHewY4AAM6KQ\nz0xnO24a+KGk/CQNwS8WHvCH8u888cIdyFdkzxvgO7N1ZMBkF8TgieHYsHsH\n2nTYxUi4BRlAr8vPN4lyg9re5nn8qyPa17xsNGKvUcdZiGrAtJMnGoKcJN+h\nTRAc3aSU+Lq3m0xc330NpUDhhZFHn2KHDdZ3i25JBTs1pwmRZfiJi5gWFDOi\naJ3vnpkwdOyP9dHSiYxAUUBNVQ5LqjOjRA8d5FPnU1+dKvxgWtw8Dg5jvkFC\nyJV0Xhz6P3Z210l5cuLVk+ZWC5poyepF0VXRvG587r0/rUPE4i3vD3wkwx/Y\nRwaQwYvnrtu2K/DcE8Vq7OCcWfIjWz6Hvjta19RKPkHCgnbelfQEowc+nX2k\n5h3rzzVTTRpX66sObAyY1oCpp6TChLuLT8HvnJ92Z6yn/TQXumUMgajjt6VC\n5Z3tvX1Mzbeup6cBJ8iFA2RUmE3OcAk5y+wEuuSnNuyqDT7hTi0ohuNTsKyu\nredQgaCyH9xWuMz4Myz9ZrMyaw5BGlecfDwu4JVBFROxLWDacoMWiST+5EZv\nahRZ\r\n=Pjsl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7pWXD8Wjasu+fFnlS+TJtVwRlAXeQd0L5r860irsGiAIgfeKowJ4Lc7FtHhSTslgIWF4ZsJL9Ra8/SNdkNn+5TZk="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.26_1600790009908_0.9898042118843158"},"_hasShrinkwrap":false},"0.0.27":{"name":"tentacle-edge","version":"0.0.27","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.1.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-jest":"^23.10.0","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^26.0.1","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.6.0","nodemon":"^2.0.3","prettier":"^2.0.5"},"dependencies":{"@types/jest":"^25.2.1","bcryptjs":"^2.4.3","cross-env":"^7.0.2","date-fns":"^2.13.0","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","make-promises-safe":"^5.1.0","modbus-serial":"^7.8.1-no-serial-port","mqtt":"^4.0.1","sparkplug-client":"^3.2.2","sparkplug-client-jar":"^3.2.2","sqlite3":"^4.2.0","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.5","winston":"^3.2.1"},"gitHead":"971bd8d8a94c5af793ddcfbae7dd429ef96c4802","_id":"tentacle-edge@0.0.27","_nodeVersion":"12.14.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-xkkV/v3sSag3c5cSv3eqB7Z9x5ZT3Vebs3QKRNMkZZdJMNgnUTrKNwezeQIh5u3H55j8fENNP0lsPDH5SNZSkw==","shasum":"478bc01082e06de4ff0b6d315ec6c46fe24be2da","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.27.tgz","fileCount":61,"unpackedSize":306108,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaql8CRA9TVsSAnZWagAAzO8P+wQH63rKjte8S9cmZnUd\nP6xJDjx5aNgcMFdlqsY047kRl0CnuDdALvTrHPrjOeaN1XXKLLe2vgY3iCB8\nx7+pt3GKwN6W1v0WZsYS6698a7ywp1qug/qNLRcauyttxRB2CcORRrQvzGja\nYREOW/yFfVtjbq9/Nm25r4lhVVQj0SfZ74GsvXAKDn2mH1xVkP00I8IRxFtk\nXVsWegiaiNnM3fJbAWMyxHpsItzi7NaZhsu0k7pxXUuJOmFxhjJ3xZ5MVEhk\npInj9zPUw1D8iyh+zZVEDJ5BOapVfxtnl5G2LyHD7R8BwXrT0d6n9pYHoTZ/\nNYxF3CY3dICuDkZGMaxEIvBsmUnwukJCVDNVPO+V+YMw1Y2L9VjYwOTq9cns\nbRPkDRoSz6Qfi9PYWujL0Gt3+95d6ZkhrvKOlqmGUchTRGgZnLgNWPcIi1Xz\n09dlXLBU7nfvK9W64dNUMEEeIYtRoBNsalv3GZ4mD3ILz5lScUpfY6fgbta3\nyKNGROTgY+n6zYFxMzgBP3m2nWNH6QkXAqn9tODskc+nz+gaXW/VWaCVvSaf\nJjMJNnHbMlYsob7chEGcYOkQWs4EW0sPbSEN+gR83Ky1P71hENXi89bT9rhw\nBXzUqmHU75wwA/DWI1pKUvWTysD+hLUp+gnKQnWESrbTFVHqDC1VVJk2XxcT\nC1mD\r\n=XFx0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPqUAv3064x8bdsBGuVuqwSD15NUq/PcM+NT73fVPN3gIgIUKBxo5fNX2G6Na5KBVrToA8c8siwelepbgwfdPbyy8="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.27_1600825724188_0.6686266898922295"},"_hasShrinkwrap":false},"0.0.28":{"name":"tentacle-edge","version":"0.0.28","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.1.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-jest":"^23.10.0","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^26.0.1","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.6.0","nodemon":"^2.0.3","prettier":"^2.0.5"},"dependencies":{"@types/jest":"^25.2.1","bcryptjs":"^2.4.3","cross-env":"^7.0.2","date-fns":"^2.13.0","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","make-promises-safe":"^5.1.0","modbus-serial":"^7.8.1-no-serial-port","mqtt":"^4.0.1","sparkplug-client":"^3.2.2","sparkplug-client-jar":"^3.2.2","sqlite3":"^4.2.0","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.5","winston":"^3.2.1"},"gitHead":"c221b7b2a6d97ef49e8b259a1631dc8e0b452797","_id":"tentacle-edge@0.0.28","_nodeVersion":"12.14.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-CKU5fcsAEigHp8f12SUKrGUMgsNivWyb+/9tKwoUvWU9Ee2NHVpQwZckp6RTMNVK3UZLSUoAZEmMX2eMdzVDcA==","shasum":"ba4da06fb1650959bb83505784140f5a31c3aaba","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.28.tgz","fileCount":61,"unpackedSize":306132,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfatYUCRA9TVsSAnZWagAAqFQP/iM0/npPh2cPtumWZ7Wk\nWXasXhg6+LVrRzwf/CQeRs27gpJNzOt/Whkkp+vhCVnQEDYWa6KfMGMENW4C\n8tvd2oeXExGyX5DU+AwX9Y/Kx8+04Jn7Gad96YMjW8TsGerUtujBFmaM1Wld\nkNzIkC18lS/hNS7YHSdcFZZ5FrExuHJYFAUDpeINvYt96HcSBOV8SBX2qjI/\nn0GLqX3RCLAQMZ/bYHsMJvNBGcSfanVFw0EugIpOL/ApFBu+ZApw7m4yyokU\nN/Qj/iK+bgekF/xft5z+TiRAuq4yaBwloJxHmynbY7lVBw0lEeBcOac0/84h\nBsl0ms0pvISjQjFsDLaWhyA7kVNze6QCckakbbbyB8d9MCJ/OdUf2QXHVQV9\nAo0XddJU+GlIHi3aBFcuTK9VV8Su+vzCT+KrXNspv7a2MRnNNmcXC3mUnvJ5\n5kOGcvrdlTgTcM9XSFkgmxhDD6KEYxgUMQ8ItlnL55c0gPOA0uq7fMRln9Yn\n0+ZbMwh2dq5uxr5uZRC8+Ah0zyMxy6LMyJxdUwp3Y3E1YVEt9HnYwTUm3jiY\nObfFGgjVfQaphaBTT9ONPVBqw1tw+dRKvZCjndHfzU2XvFtY0XrYBpeIW31b\nydq5BOj748nboBI+17Y/EX4tuy4WQ7fcZAJ/HCpjqo1T06qvKelWb34ru7nY\nbdBi\r\n=MqtF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB/Wb/Bm+H0DLquTT/cwfxUTsXGF2yAkBIXWo3jgAXWLAiEA9W1B9rMnowOKZdHNn++qpC8CBirbTPEBW0uMfsjoUvQ="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.28_1600837140217_0.6228956929331322"},"_hasShrinkwrap":false},"0.0.29":{"name":"tentacle-edge","version":"0.0.29","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.1.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-jest":"^23.10.0","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^26.0.1","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.6.0","nodemon":"^2.0.3","prettier":"^2.0.5"},"dependencies":{"@types/jest":"^25.2.1","bcryptjs":"^2.4.3","cross-env":"^7.0.2","date-fns":"^2.13.0","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.15","make-promises-safe":"^5.1.0","modbus-serial":"^8.0.1","mqtt":"^4.0.1","sparkplug-client":"^3.2.2","sparkplug-client-jar":"^3.2.2","sqlite3":"^4.2.0","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.5","winston":"^3.2.1"},"gitHead":"c10d05ab2ac4b7848d21ac55a4893ae7b1aa6848","_id":"tentacle-edge@0.0.29","_nodeVersion":"12.14.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-YRsXZ9/yVQjvYP3WRtzPPUp0Tyvf6q2gF3oXVBgbfhmvsSol9kgc/p+2Q3yKCcbvP1Tz1Fysb+UiclmNt98yCw==","shasum":"a4870d840b65b11062be4141c990b70331bd735c","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.29.tgz","fileCount":61,"unpackedSize":306117,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbPswCRA9TVsSAnZWagAAQXIP/ipLKjrjNOgVm31hMt/Z\nk2yfaZI1zuAa26l+x43RHTMev0WLXAGURzBhFws5UhWrWLXF6yVHshpWgypd\nxrVu6FSbq7qg0yCi9xbAkpTq9kPvKMvILNPj0Gr0sps3Ca47M8dvnw+f1kFD\n+1PR7dYTK1wWzHH7lARQp+0Vn9V44Q7bJCfiySeI/oattTzi06pi4C/nbu37\nyWEtzvNu3GTXNxCvPfrotSgRq50apT1m7YIxdxLTez3i9NPfprmxqzVuk+bT\naRio46SG1s2vGDPFnIaKaMvPRmM+tEOAd7gZxMBxPn4U6HfnwF8RRW8q5ISV\n7s0SulQsO4K147bqJY+WmAgfhdJ5/vzIhY5LIv200E3Wr5FUY55dW1Xqf2zz\nAQxf9hZY69QQh5270pznUYH6k36U1gh7FSBEWL92CdA/Wxv6pZvM9GQxHwCs\nP9sK6/PxGTrVdFtp8IltEODWot/yeaz7NdF/badxo+vPKkU94btldTQ72lET\nmHSHEklnC8W/mjgdJfthxHJe4Y3Xiv2kqCAaGITJ5qF/mBmJQ5x3RKK7Ls47\n5JICzE517ZMSppi6VuNdQTYWEoQaSYimu2l4v/0KMseQu/sEkL3sSRT1Et7Y\nnPB+aUGYXBwMyXjvjZxKQG+nqcoBEvEIBWCFNbydv95KnHWihfxoisctQVlC\nEuHx\r\n=InlF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkxKQ2TVzAmmg3n8kAOyn2mTUAMhgm/JZ2jsuwof5yxgIgfLBei/Gr71gIXfj9U1xpNBKRBJqV3L/82Qay20FBsMw="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.29_1600977711708_0.9516414164268223"},"_hasShrinkwrap":false},"0.0.30":{"name":"tentacle-edge","version":"0.0.30","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.1.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-jest":"^23.10.0","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^1.8.2","jest":"^26.0.1","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.6.0","nodemon":"^2.0.3","prettier":"^2.0.5"},"dependencies":{"@types/jest":"^25.2.1","bcryptjs":"^2.4.3","cross-env":"^7.0.2","date-fns":"^2.16.1","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql-yoga":"^1.18.3","jsonwebtoken":"^8.5.1","lodash":"^4.17.20","make-promises-safe":"^5.1.0","modbus-serial":"^8.0.1","mqtt":"^4.2.1","sparkplug-client":"^3.2.2","sparkplug-client-jar":"^3.2.2","sqlite3":"^4.2.0","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.6","winston":"^3.2.1"},"gitHead":"4a58237c3dadebf3c83f21ebd1016290f5e893f3","_id":"tentacle-edge@0.0.30","_nodeVersion":"12.14.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Ac0dtOQPEQo+9lk25joJ3Pan6phtpn+5EFh0ZV0ZR+hPyLoQ6ckmCcCDytoXFVTkOzWFwc6ExcEj+LiCouVHzA==","shasum":"9d5ea9babc2a7aa9d8786f08a96fb045ca3191d9","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.30.tgz","fileCount":61,"unpackedSize":306234,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbTXmCRA9TVsSAnZWagAAd3MP+wcsPpec7qGQjI/VJmzh\nPeGf/l44CvORbiF6FZeuNya7Il+9xWsg4piS3gT1PUlJLe0f0lOovZlXMgI/\npLM5HI0uA7gbhYtn+/zD5SXo2nakIr4qSTaUXxq6PGslxTy+T7U/rR3bFEk0\n2B/Y7xb6WD7BUTxck31UmgSLy7orZ1wTwuk5A7Q8NcRgT2qF3j7g956hZDe5\nKkMvKHQKMLkf6tEB8oUUKni/9+x+ke/X4M0I250KkeHl9dfvYh3gNAvf333O\nj0NS8++ZnJemhaMs+fnpwgtEid2RauDB4cxCJipSIjtH5wjwoBv1a4Ay920G\nCLpzvdbGdvmw/0aNAOZo22rRQyEbHCQyZKI9rwUPTUUWkP6rCgvvYXfnr/qx\nvCGuWM2jGtGO9oWLGs5JRBQlHHiTN0eOBSFTG1wSHbg9w4MDyP8CeCBQSzGd\nG/ElRoTk7K9gmpYdp61Babn9Md4XPPTrhDE1VuBVauixnRrESKis0dR1zK3W\nOxiP/IZLhgGMjxl4T/3IP2T1jDIYcoHCtVOnnXWECMfB+OQ9PzTZINkirkF9\nZskaaoTe6QlV94Lg/nyKt/XdeyxYi29HMZDaDQ7g55NP9EfY93YFt4uGtvAA\nJBg4/UcHtXuPebhB35VnbWPBxDN4l9vlLcdQ0R9t7g9NyStLfWoyQNW1t3BD\n+EOJ\r\n=/bJa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICfb82J+ODrFXpWl6B0d16gSBQEsNNjP9/higZM8AEyhAiAHOuhpeeCa1G7uyC9SRPdhRDjkUAjHcH5AGYvv6IpIPw=="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.30_1600992741778_0.6858027304284695"},"_hasShrinkwrap":false},"0.0.31":{"name":"tentacle-edge","version":"0.0.31","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.1.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-jest":"^23.10.0","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^3.1.0","jest":"^26.0.1","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.6.0","nodemon":"^2.0.3","prettier":"^2.0.5"},"dependencies":{"@types/jest":"^26.0.14","apollo-server-express":"^2.18.1","bcryptjs":"^2.4.3","cross-env":"^7.0.2","date-fns":"^2.16.1","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","jsonwebtoken":"^8.5.1","lodash":"^4.17.20","make-promises-safe":"^5.1.0","modbus-serial":"^8.0.1","mqtt":"^4.2.1","sparkplug-client":"^3.2.2","sqlite3":"^4.2.0","subscriptions-transport-ws":"^0.9.18","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.6","uuid":"^8.3.0","winston":"^3.3.3"},"gitHead":"1f221ac069adf1ed75dc7a1f92dd686ef1746110","_id":"tentacle-edge@0.0.31","_nodeVersion":"12.14.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-d4rhRF2hhdK0jO+D5ySAJCy9b4W1K2yUkLemhEL2ZOKTMErt6kfynFe87eM58BQb0ZuHgLR1DvA6de0BLr1IOQ==","shasum":"aa0c415030b5f3b13d3db961932ee186d540c01d","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.31.tgz","fileCount":61,"unpackedSize":306940,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbnVmCRA9TVsSAnZWagAAog4P+wfQ7gBRpcWoGheO9Am+\n0JtKq6thudvF0K/DK8w5Bs3OuYiq1t5RmKJ2RJEjn7Z+l4b8ZcseJmFaW6tu\nxD5tnRRxxTt0OHv8LSN6nwTS0cwm6B51iAFj2h9AsoQIf6OL2qqbd0epXaTr\n1ltQuk/CA8HuJQAf0yFf2WXrOnkphei5tMkGFqGjgegjx2JDcwYOGvlPZe/1\nRG8af49axiB312d4m66Kl+/D5tBg84zT/240EdBRf2PwBEcYPQU6jUwrMdjG\nHytz0qjjQed4Er1hw/YsnQqo8OQE+aKsOMZ2ekBVmtz/22P+/QU11IWC3aTd\ni85ITCrv4BLtzBGyltReET6QCAACnG+L1khMEWXAc53HKzsiutuFJ6eLO7U4\nzhFTwrbZR9r7Gv9mGFdi1MCdwvLeUijUJq6Z58leijaj9npMKYKeiuBuvTWN\ntmvmYIik/D7jvzgVQOtZm3MG4Jz5VG2EIpfn+taxr2tO4Rp654QEhnnbClOX\nOiPZvcQ+eVKHzaixCbPJAI/6Wctg7ApHHo9QBNMM0ZRJpMPRPaitMyuYsl5v\nPCwWd/0oiTrR2zrPG/gf56QuQUU43lfDMJwCq6CEmlBwXN+uuQh1zka3nUdc\nTj1XXEZFkgxSKnJO+QPIAJYR7eFxq9zN0BSR3TLjJ4YufW6gF83ljInSfpSl\nkX9D\r\n=Nypo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDe628i/9C4LvK1eGibw4CHa3Tnb+Skoqc/me6/mtFlaQIgOqz59BfU1cxF0uXXDDdaB5eQyXz/8JbuVcWf8pkW8sc="}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.31_1601074534215_0.47595947783308645"},"_hasShrinkwrap":false},"0.0.32":{"name":"tentacle-edge","version":"0.0.32","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.1.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-jest":"^23.10.0","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","graphql-request":"^3.1.0","jest":"^26.0.1","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.6.0","nodemon":"^2.0.3","prettier":"^2.0.5"},"dependencies":{"@types/jest":"^26.0.14","apollo-server-express":"^2.18.1","bcryptjs":"^2.4.3","cross-env":"^7.0.2","date-fns":"^2.16.1","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","jsonwebtoken":"^8.5.1","lodash":"^4.17.20","make-promises-safe":"^5.1.0","modbus-serial":"^8.0.1","mqtt":"^4.2.1","sparkplug-client":"^3.2.2","sqlite3":"^4.2.0","subscriptions-transport-ws":"^0.9.18","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.6","uuid":"^8.3.0","winston":"^3.3.3"},"gitHead":"dec8a2c4652c7210b7e8d41577576fbd681c637c","_id":"tentacle-edge@0.0.32","_nodeVersion":"12.14.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-jUQ7d3N8RL+Bq/mP0u/K6xCHmVFHOpzxdvPygS0qgWm4T6OKHqmC2CyiAN09QgYNo0m5h9Us96NKeRO0JdkFzQ==","shasum":"979211f34bcffba78c3b754d343229b787a3102c","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.32.tgz","fileCount":61,"unpackedSize":307239,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfb6iJCRA9TVsSAnZWagAA6fsP/RXjn71u3w4rA6HjTGdV\nDA4W06pwrYxD0D0HBWH6lsnAPyJqk56TIGvkJCRl/AAwR9xOfTbUsK6ksti0\ncXuFnLw2dtUUxP2PR/a1Ch95vNA7oxgmTsNofxdsBUmmOOio8Ssw1YmtJCrq\nOiOgLn6WBobxpHnLKHZElpn0F9gqFmEJEbJqlKoXZYNN8nINZNmOyepIP9DF\n6HuFCYqMhGsdQfknoQ0pk3gg+2CUSlkzacsJUqqD/Bfv0dP9ZwQwlxtJOnA4\nJcL/qSLa8Zjc4FWHp9QuP7HNc2zriT+EMYZeCPFT8Rll4gGq0/qZhgvvLyHQ\nh+X/zh7tW4n1gy7zb8X2BeAyASERHeJKoZzhmnbYvjwOyCX9lx3/IxT8hL8b\nMoxYgxhsXsx4jznYAfjVVgW43SZeUgYeKRzeywtahvq9vRFup095qvHL2DTz\nPtX+Q7xQGn+G9cb4tD4ImJzW5goB4nww8Vt6gYr+Hn+YIPbxKUh++Q+vGTkV\nWl8H72M1gsqKfo9cx7thUr+tdf4uJuq8UGa2YeBZa64HwWjZcj6sF+n0I2s3\nupcdEcCdGN0GZI/gkRixTVskwiHMqaIorfnsAMbVwhS2WpYnqE+9agEZcR1E\n6OdLeMbuMhP4ZIzIOpibbcsSrNdhkqBRLHRawmHBv/x+1ueyvLSJnTZri8Iv\nsEZF\r\n=gpnE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDa+BE8EJhuPEa16qsLxJGFgbCmDHHhCmdLxAihpIdQJgIhAJIbawtRWhJ7BOqeYBCfUALnGid92QTFsX3zwWLpeJEd"}]},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.32_1601153160998_0.702789159654778"},"_hasShrinkwrap":false},"0.0.34":{"name":"tentacle-edge","version":"0.0.34","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","test:detect-open-handles":"jest --detectOpenHandles","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.1.0","eslint":"^7.14.0","eslint-config-prettier":"^6.15.0","eslint-config-standard":"^16.0.2","eslint-plugin-jest":"^24.1.3","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.1.0","graphql-request":"^3.3.0","jest":"^26.6.3","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.6.1","nodemon":"^2.0.6","prettier":"^2.2.1"},"dependencies":{"@types/jest":"^26.0.15","apollo-server-express":"^2.19.0","bcryptjs":"^2.4.3","cross-env":"^7.0.2","date-fns":"^2.16.1","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","jsonwebtoken":"^8.5.1","lodash":"^4.17.20","make-promises-safe":"^5.1.0","modbus-serial":"^8.0.1","mqtt":"^4.2.6","node-opcua":"^2.28.0","sparkplug-client":"^3.2.2","sqlite3":"^4.2.0","subscriptions-transport-ws":"^0.9.18","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.6","treeify":"^1.1.0","uuid":"^8.3.1","winston":"^3.3.3"},"gitHead":"241ed54be85902d58ed637f5360affb5ccc165a7","_id":"tentacle-edge@0.0.34","_nodeVersion":"12.14.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-hJQFWCAJk3nTZAL4q9Sm4VbKsP2kgJGOwVBwyL0PXpy0WSXEqBREcfg21oopAf7e22grzip11/DBaAAXTd6+1g==","shasum":"603df41e64b169dd5a0c12ce86250fd1ff7d4a3e","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.34.tgz","fileCount":66,"unpackedSize":358577,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxyoxCRA9TVsSAnZWagAATtwP/3O+me+fN9buNCk4g177\nSjLCqo4CI+ZpDVHjt/AEHonaHYGnJgS9Z30dZ+yPnwK4PwOUXOxIKcakP+l8\nqSE93P3miVC0XKRJyCp8wTlWdCcoXbv2L1b9n15EPI0zKhcUqsOTlzC9AMLN\nyZBRuxYrjMeazobkvpEm7T6gq29LLClleCsz8fMT+qd0C3D6fh8/Xjut7JcZ\nbWtaZP26KdzOZY+6h791f06Z5yTbKxVP/TlzfY3nPvdHckwDKOahR0UX/ZN+\ncFnyPUmJZKFo++gNbtphFR0TuheIxBJ+QgXp5a1i8xBpK5X+sq0ke+TZnIfv\nvth0Z9SgvFWRm22s7Igum8VkHWVW0gYQJqkVXKEqDDhmnaV29Wu6SymmzQak\nd7bePDO7jj8OS34cIiI00FpgdjUtoIU6ulrEI36nFq4kkqfiSZozrupQixHR\nHqQ3MBK6V7i7UxyxBhN93jyyfqbM9qV6CwYhfl2dv+EtzFkCmdxdlGojPmq5\n8uzM1YK41+B/sAAUFkBHIKh8OPsfSRkHWy+SuiDmbA+5jvfvVPI/d2Dm0MgW\n0MwSLxNO6PZfhgskfPVuNFbKrOPDdBAfsF9A9Y/O1Ep/JuLsQkymaEtDd4sB\n+/0Bl/0AGz/TWGCCp70HejSkzTwnnuxk3yEHhKEaXiFn9jnvYKAhDhVj7F8r\nptBw\r\n=0Mtx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE0tmzWe7B2YZq12YGqiJNPufTnZ1bqmb71Bg21Jc0tfAiEAgUuVaiIcP4CvYK00s8RthH0ZuQM3KBPobyeAWIsggGY="}]},"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.34_1606887984471_0.193258501751852"},"_hasShrinkwrap":false},"0.0.36":{"name":"tentacle-edge","version":"0.0.36","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","test:detect-open-handles":"jest --detectOpenHandles","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.1.0","eslint":"^7.24.0","eslint-config-prettier":"^8.2.0","eslint-config-standard":"^16.0.2","eslint-plugin-jest":"^24.3.5","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.4.0","eslint-plugin-promise":"^4.3.1","eslint-plugin-standard":"^4.1.0","graphql-request":"^3.4.0","jest":"^26.6.3","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.6.3","nodemon":"^2.0.7","prettier":"^2.2.1"},"dependencies":{"@types/jest":"^26.0.22","apollo-server-express":"^2.23.0","bcryptjs":"^2.4.3","cross-env":"^7.0.3","date-fns":"^2.21.1","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql":"^15.5.0","jsonwebtoken":"^8.5.1","lodash":"^4.17.21","make-promises-safe":"^5.1.0","modbus-serial":"^8.0.1","mqtt":"^4.2.6","node-opcua":"^2.40.0","sparkplug-client":"^3.2.2","sqlite3":"^5.0.2","subscriptions-transport-ws":"^0.9.18","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.6","treeify":"^1.1.0","uuid":"^8.3.2","winston":"^3.3.3"},"gitHead":"2810a52e53f6e252cee988e6c5f88385b0f660f2","_id":"tentacle-edge@0.0.36","_nodeVersion":"14.16.1","_npmVersion":"7.10.0","dist":{"integrity":"sha512-2QHuMDYYpiB8+Oo/DsW8QFNDnWKj4RFXnjnge0SqughZ6O6EmMDI6Fr5+QFQyykMfSVtRKQoRlxeR6xTWq2buQ==","shasum":"2c00c60570687809cbf83523ca340f9e58313d25","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.36.tgz","fileCount":67,"unpackedSize":358787,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgg0dNCRA9TVsSAnZWagAADmAP/1Hvn4qsRhU3av7MaEcl\nhTVV6GLpTaP+aTnTD/HMbk8IcrCNBfQ53EEMjGVhQRCC+lPODqQrW5JVSeAT\nLKopvqxCn/g9zHQWcqKmB/sIOhwsRvquBAiab6VehWT41uYUf3/UU/+HxnHM\n0SEpQo6JBAa9Xw5qgn7QA+JGUG6k3wjOiH3Hbn4JSIasWr4g3A1MfRxDz1+1\nih28+fWSqcGcnAbik5uPK8PdPPaSHPU5WysRspkFlwpP6BPYJoayJZF7SXBr\nsS0DqJpKQPjc2soRVkXU+Amb6gijPsHHD7oXheuDR6vTJ7vq2Wgp+ZpkuIjx\nvmewYkk9SmEGxyNsaWVFNkVNkThpvwmVXpSpa0R9Mb31blkf/vJTa9aIirqS\n2w+JreSWN9+Gg07gi3JBzJGbNCeTlkQWvZDW74dTl+r/tZMYoGi/5SUpb5Oc\nxxBdjofTEilVVmP55qeYFuFCvEp634cwGQKFEdAycvuCIG3JXE3qUB/R3ItQ\nKMrZCELTAF2w3k4iGSXfAES85G3XbBRKexlKHI5BqwyeijrNBF35VMiXAbfx\n4VRL/b02AfM6AlI2w5FzlcvPKNBAFbrV1jywm80xvL10HR9AXGVxhHxw4DDZ\nbKPegglcisDBJe5Ar0L9PQpzRLPpOPuHOPmvfzXh+IF6UgzbqxbJN/J79Z0W\nXePB\r\n=oE1I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5R/zcJH3nrAhj7Lkr/ZC+q8ZZkKLtuHbLu4tLrGx2QQIgNNfgkpUGrYmaCF4WKgvKRL48cglnXKlKOiNLrUJ8Klw="}]},"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.36_1619216204555_0.965416688465442"},"_hasShrinkwrap":false},"0.0.37":{"name":"tentacle-edge","version":"0.0.37","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","test:detect-open-handles":"jest --detectOpenHandles","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.1.0","eslint":"^7.24.0","eslint-config-prettier":"^8.2.0","eslint-config-standard":"^16.0.2","eslint-plugin-jest":"^24.3.5","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.4.0","eslint-plugin-promise":"^4.3.1","eslint-plugin-standard":"^4.1.0","graphql-request":"^3.4.0","jest":"^26.6.3","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.6.3","nodemon":"^2.0.7","prettier":"^2.2.1"},"dependencies":{"@types/jest":"^26.0.22","apollo-server-express":"^2.23.0","bcryptjs":"^2.4.3","cross-env":"^7.0.3","date-fns":"^2.21.1","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql":"^15.5.0","jsonwebtoken":"^8.5.1","lodash":"^4.17.21","make-promises-safe":"^5.1.0","modbus-serial":"^8.0.1","mqtt":"^4.2.6","node-opcua":"^2.40.0","sparkplug-client":"^3.2.2","sqlite3":"^5.0.2","subscriptions-transport-ws":"^0.9.18","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.6","treeify":"^1.1.0","uuid":"^8.3.2","winston":"^3.3.3"},"gitHead":"3cd7e66183988a30752dd32648746d35f1d32408","_id":"tentacle-edge@0.0.37","_nodeVersion":"14.16.1","_npmVersion":"7.11.1","dist":{"integrity":"sha512-I6XJIG4GqvsKCkq/dvvoeXQkLuF2asCGcZAeuV62dYGqaxI263XpGFDJ8gfFoSJ65hrROO54SIeyEWpucaJLjw==","shasum":"e2511951a680885ea8c17c31854f00478a806730","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.37.tgz","fileCount":67,"unpackedSize":359713,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpZ24CRA9TVsSAnZWagAA5RQP/0HLT3kPS7/YzCp9UCAI\ncKX9oDhs1J5XbglHdm2dfGCcPOChHd0qntbJfQFH9ceg3JrjllZaRA/bv1OX\nLjfuPlsvmhfNkKRc8mIptwk156nijtVgWdj4qlGfk69yNaQtClVaK7NLz/h5\n0rkSHPScRujiMNDj9s4fe5w6okcYGVR6P34oxkvs77U4Jpj6gBcRNUfM8AzD\nqmSAIsiUQlcnrhUJk97/5bEojYqhX+Se1mR4cFSMxfZwXMMyJ5P+l3DGkpEs\nk+1D+dggkPnBHDx3AHNjhh4VVHUoPDPs12lX7WkohH42jyxsph5VSP7i903H\nycjPYvGMwHE7hU5m+bwOx1H4NTOgni/6rHud17kH6Ut9GAMhs53jc3PXVGwE\nvTNJqqeWfI3IDqXiXnvBSCtBp6mBK8ngIoeZD+GVxyOMvl7Vb0iPy7h4jjxR\ng8WTQAeRwcV6grpLyKT11bIxr9csGs2lnZgl2Q9U1cFKbhCr0BBggWjwmHYb\nj9DFL8/bDDaPqnDl1sDjBW+fnHt3OzyoslOqSuEQcOtz1+T2qD0nsftwqPKm\nqNTeNiKToeEU/meg9zObLVT8JwFOcpVz2XQnEfItqHvi6sicRi4sj8JsWuMj\ng1gDZrcSW1ZTkLjnwz25Z3U0i9t2c+v/uRDku6fwm4Mrdq1/924WTt2T1eHK\nq842\r\n=hk63\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICHPIsqoLs0oaF8iOSOGTDy8koPshffBFX16SLjdJOGmAiEAvrz9jso1V3yBeHuvkBOonmf2zT0NRbDuMaFjv5iAlIw="}]},"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.37_1621466552071_0.6564212599108195"},"_hasShrinkwrap":false},"0.0.38":{"name":"tentacle-edge","version":"0.0.38","description":"A nodejs industrial automation edge gateway with a GraphQL API","scripts":{"lint":"eslint --ext .js,.vue --ignore-path .gitignore .","dev":"cross-env NODE_ENV=development nodemon ./src/index.js -e js,graphql --watch src","start":"cross-env node ./src/index.js","test":"jest --watchAll","test:ci":"jest","test:coverage":"jest --coverage","test:detect-open-handles":"jest --detectOpenHandles","fix":"eslint --ext .js,.vue --fix --ignore-path .gitignore .","coveralls":"jest --coverage --coverageReporters=text-lcov | coveralls"},"bin":{"tentacle":"src/index.js"},"main":"src/index.js","author":"","license":"GPL-3.0","devDependencies":{"coveralls":"^3.1.0","eslint":"^7.24.0","eslint-config-prettier":"^8.2.0","eslint-config-standard":"^16.0.2","eslint-plugin-jest":"^24.3.5","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.4.0","eslint-plugin-promise":"^4.3.1","eslint-plugin-standard":"^4.1.0","graphql-request":"^3.4.0","jest":"^26.6.3","jest-watch-select-projects":"^2.0.0","jest-watch-typeahead":"^0.6.3","nodemon":"^2.0.7","prettier":"^2.2.1"},"dependencies":{"@types/jest":"^26.0.22","apollo-server-express":"^2.23.0","bcryptjs":"^2.4.3","cross-env":"^7.0.3","date-fns":"^2.21.1","date-fns-timezone":"^0.1.4","esm":"^3.2.25","ethernet-ip":"^1.2.5","express":"^4.17.1","graphql":"^15.5.0","jsonwebtoken":"^8.5.1","lodash":"^4.17.21","make-promises-safe":"^5.1.0","modbus-serial":"^8.0.1","mqtt":"^4.2.6","node-opcua":"^2.40.0","sparkplug-client":"^3.2.2","sqlite3":"^5.0.2","subscriptions-transport-ws":"^0.9.18","task-easy":"^1.0.1","tentacle-sparkplug-client":"0.0.6","treeify":"^1.1.0","uuid":"^8.3.2","winston":"^3.3.3"},"gitHead":"6623fb837c1856c937e53ed80c6c84a45dd954aa","_id":"tentacle-edge@0.0.38","_nodeVersion":"14.16.1","_npmVersion":"7.11.1","dist":{"integrity":"sha512-qQE+gxzHRt9yX3QZ1AfdiE0LRdnjjB6j1VHc9bxjzyG6kUnp06hChrhudHWWju2vPAoGCScrY4omfXFnsb0I2Q==","shasum":"a3fd294b30be014b2a0e0e633db6c0c66b728ea1","tarball":"https://registry.npmjs.org/tentacle-edge/-/tentacle-edge-0.0.38.tgz","fileCount":67,"unpackedSize":359743,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpiXQCRA9TVsSAnZWagAAaqgP/158f/hM4wGb9gm6rOga\nR+PRQk2jQ79uvSZrwcvSKC0mNvzhjsjIICdP1t2DNz08Crbf5wddqqxJn0O/\nbyqk44V7UTphrTvnIsVrU66igeTDO4sHu+bPmvoj1XRliqpHW9LqreyB3Ivf\nLThD6X2v1j8uqKbKLphzdDxDbCTIN+ohrn/pRBNlO3aJuMyX/jMpJtO3+Vv9\njMEjws2utTwZWY1ubp8r97nKeWpnrHMSxuyCHQtzLrW2JTukcZUqpdZgckUO\nhl8wTIwmaVVSuXwSJQgeOZttp6Tu0brxuSUHrsH0Q2Rf4ITNqrzfKRY01LlJ\nCiWt5E/RfQkArop1dDEbsWsMCk1TmBkQw/0gMOli4UC1f5rcbN5Vu7xR4S4y\nodCB2yl89pr/6c7ne6tNlMcipss1B6dcujQhmPU/vSeMkdZQaU09HawLMfGN\njbNR9etbcaBLsI/xv0MdwSXfQjpKfEZqmCKoJFyXzrPyqb2V/z1mzoU9XnPC\nc6+detDh5hcdwTz/d3PSqFVnXtgW40sSV2IWKFSZn/+QoclY4ypjpoGDy09/\nJXHvOTZhiaWOGzVVCrA1XtzESQmG2r5RMXB3UiSwdM6LsdKHBKtBGQmCnelm\ngwiSyC65Z7591gFmVXp1mbzVAaX2cflbF7GeUgYXltNbmDI//gxqRCMbrtYx\noWIG\r\n=CkM2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGqkGybcvclighLpvuXrub6UcgpvyP04dz24fR3JU5oCAiEA10NhG97vtYerIyThD/rWCzOklvfSzEdJd8z5Bf46iO8="}]},"_npmUser":{"name":"joyja","email":"joyja@jarautomation.io"},"directories":{},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tentacle-edge_0.0.38_1621501391168_0.7355352668987463"},"_hasShrinkwrap":false}},"time":{"created":"2020-01-26T23:17:02.181Z","0.0.0":"2020-01-26T23:17:02.288Z","modified":"2022-05-19T20:53:18.411Z","0.0.1":"2020-01-26T23:58:50.357Z","0.0.2":"2020-01-27T02:55:23.187Z","0.0.3":"2020-01-27T05:26:17.703Z","0.0.4":"2020-02-01T21:41:31.408Z","0.0.5":"2020-02-09T22:03:02.856Z","0.0.6":"2020-02-09T22:20:40.562Z","0.0.7":"2020-02-09T22:24:05.753Z","0.0.8":"2020-02-09T22:34:42.977Z","0.0.9":"2020-02-17T16:48:29.779Z","0.0.10":"2020-02-22T17:58:13.110Z","0.0.11":"2020-03-07T06:28:34.648Z","0.0.12":"2020-03-12T02:12:48.522Z","0.0.13":"2020-03-12T20:23:15.618Z","0.0.14":"2020-03-13T00:21:30.132Z","0.0.17":"2020-03-14T20:49:25.335Z","0.0.18":"2020-03-15T18:32:48.568Z","0.0.19":"2020-05-22T03:30:22.312Z","0.0.22":"2020-06-10T22:18:42.006Z","0.0.23":"2020-07-15T15:45:32.446Z","0.0.25":"2020-09-22T06:52:41.522Z","0.0.26":"2020-09-22T15:53:30.078Z","0.0.27":"2020-09-23T01:48:44.346Z","0.0.28":"2020-09-23T04:59:00.392Z","0.0.29":"2020-09-24T20:01:51.882Z","0.0.30":"2020-09-25T00:12:21.919Z","0.0.31":"2020-09-25T22:55:34.357Z","0.0.32":"2020-09-26T20:46:01.148Z","0.0.34":"2020-12-02T05:46:24.615Z","0.0.36":"2021-04-23T22:16:44.828Z","0.0.37":"2021-05-19T23:22:32.230Z","0.0.38":"2021-05-20T09:03:11.339Z"},"maintainers":[{"name":"joyja","email":"joyja@jarautomation.io"}],"description":"A nodejs industrial automation edge gateway with a GraphQL API","license":"GPL-3.0","readme":"![Tentacle](https://res.cloudinary.com/jarautomation/image/upload/c_scale,w_250/v1620021619/logos/tentacle-light.png)\n\n[![GitHub](https://img.shields.io/github/license/joyja/tentacle)](https://github.com/joyja/tentacle/blob/master/LICENSE)\n![Travis (.com)](https://img.shields.io/travis/com/joyja/tentacle)\n[![Coverage Status](https://coveralls.io/repos/github/joyja/tentacle/badge.svg?branch=master&kill-cache=1)](https://coveralls.io/github/joyja/tentacle?branch=master)\n[![Known Vulnerabilities](https://snyk.io/test/github/joyja/tentacle/badge.svg?targetFile=package.json)](https://snyk.io/test/github/joyja/tentacle?targetFile=package.json)\n\nA nodejs industrial automation edge gateway with a GraphQL API.\n\n## Installation\n\nThe best way to get a full featured tentacle install (which includes tentacle-ui and exposes everything on port 80) is using LXD and applying the [tentacle-docker](https://github.com/joyja/tentacle/tree/master/lxd%20profiles) profile.\n\nTo install tentacle as a global module with all of it's dependencies:\n\n```bash\nsudo npm install -g --unsafe-perm tentacle-edge\n```\n\nOnce installed you can run them command `tentacle` to start the server. You can use `Ctrl-C` to stop the server.\n\nThe graphql api will then be available at http://localhost:4000. You can also access [Graphql Playground](https://github.com/prisma-labs/graphql-playground), a powerful GraphQL IDE, at that at that address.\n\n### Starting Tentacle on Boot\n\nThe easiest way is to use [PM2](https://github.com/Unitech/pm2).\n\n1. Install PM2\n    ```bash  \n    sudo npm install -g pm2\n    ```\n2. Determine the exact location of the `tentacle` command\n\n    if you have installed tentacle globally, then on linux/OS X the `tentacle` command will probably be either: `/usr/bin/tentacle` or `/usr/local/bin/tentacle`. The command `which tentacle` can be used to confirm the location.\n\n3. Tell pm2 to run Tentacle\n\n    The following command tells PM2 to run `tentacle`, assuming `/usr/bin/tentacle` as the location of the `tentacle` command.\n\n    The `--` argument must appear before any arguments you want to pass to tentacle.\n\n    ```bash\n    pm2 start /usr/bin/tentacle -- -v\n    ```\n\n    This will start tentacle in the background. You can view information about the process and access the log output using the commands:\n\n    ```bash\n    pm2 info tentacle\n    pm2 logs tentacle\n    ```\n    More information about managing processes under PM2 is available [here](https://github.com/Unitech/pm2#process-management).\n\n4. Tell PM2 to run on boot \n\n    ```bash\n    pm2 save\n    pm2 startup\n    ```\n    This will generate a command that you must copy/paste and run to add the pm2 process to your services.\n\n5. Reboot\n\n    Reboot and verify everything is working as expected.\n  \n## Protocols\n\n- [Ethernet/IP](https://github.com/cmseaton42/node-ethernet-ip)\n- [Modbus/TCP](https://github.com/yaacov/node-modbus-serial)\n\n## Services\n\n- [MQTT (Sparkplug B)](https://github.com/eclipse/tahu/tree/master/client_libraries/javascript/sparkplug-client)\n\n## GraphQL API\n\n- [GraphQL](https://github.com/prisma-labs/graphql-yoga)\n\n<!-- START graphql-markdown -->\n\n# Schema Types\n\n<details>\n  <summary><strong>Table of Contents</strong></summary>\n\n  * [Query](#query)\n  * [Mutation](#mutation)\n  * [Objects](#objects)\n    * [AuthPayload](#authpayload)\n    * [Device](#device)\n    * [EthernetIP](#ethernetip)\n    * [EthernetIPSource](#ethernetipsource)\n    * [Modbus](#modbus)\n    * [ModbusSource](#modbussource)\n    * [Mqtt](#mqtt)\n    * [MqttPrimaryHost](#mqttprimaryhost)\n    * [MqttSource](#mqttsource)\n    * [Opcua](#opcua)\n    * [OpcuaNode](#opcuanode)\n    * [OpcuaSource](#opcuasource)\n    * [ScanClass](#scanclass)\n    * [Service](#service)\n    * [Subscription](#subscription)\n    * [Tag](#tag)\n    * [User](#user)\n  * [Enums](#enums)\n    * [Datatype](#datatype)\n    * [ModbusRegisterType](#modbusregistertype)\n  * [Scalars](#scalars)\n    * [Boolean](#boolean)\n    * [DateTime](#datetime)\n    * [Float](#float)\n    * [ID](#id)\n    * [Int](#int)\n    * [String](#string)\n\n</details>\n\n## Query\nRead only queries\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Field</th>\n<th align=\"right\">Argument</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>user</strong></td>\n<td valign=\"top\"><a href=\"#user\">User</a></td>\n<td>\n\nGets user based on authentication header and returns relevant data\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>tags</strong></td>\n<td valign=\"top\">[<a href=\"#tag\">Tag</a>!]!</td>\n<td>\n\nRequires a valid authorization token. List of all tags configured in this gateway\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>scanClasses</strong></td>\n<td valign=\"top\">[<a href=\"#scanclass\">ScanClass</a>!]!</td>\n<td>\n\nRequires a valid authorization token. ist of all scan classes configured in this gateway\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>devices</strong></td>\n<td valign=\"top\">[<a href=\"#device\">Device</a>!]!</td>\n<td>\n\nRequires a valid authorization token. List of all devices configured in this gateway\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">type</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>services</strong></td>\n<td valign=\"top\">[<a href=\"#service\">Service</a>!]!</td>\n<td>\n\nRequires a valid authorization token. List of all services configured in this gateway\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">type</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n\n## Mutation\nRead/Write queries\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Field</th>\n<th align=\"right\">Argument</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>login</strong></td>\n<td valign=\"top\"><a href=\"#authpayload\">AuthPayload</a></td>\n<td>\n\nIf a valid username and password is provided, this will return an auth payload with a java web token to be used for future requests \nand information about the user that successfully logged in.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">username</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">password</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>changePassword</strong></td>\n<td valign=\"top\"><a href=\"#user\">User</a></td>\n<td>\n\nAllows the user to change their password\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">oldPassword</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">newPassword</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>createScanClass</strong></td>\n<td valign=\"top\"><a href=\"#scanclass\">ScanClass</a></td>\n<td>\n\nRequires a valid authorization token. Creates a new scan class\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">name</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">description</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">rate</td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>updateScanClass</strong></td>\n<td valign=\"top\"><a href=\"#scanclass\">ScanClass</a></td>\n<td>\n\nRequires a valid authorization token. Updates an existing scan class\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">id</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">name</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">description</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">rate</td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>deleteScanClass</strong></td>\n<td valign=\"top\"><a href=\"#scanclass\">ScanClass</a></td>\n<td>\n\nRequires a valid authorization token. Deletes a scan class. Will not be successfully if there are tags currently assigned to this scan class.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">id</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>createTag</strong></td>\n<td valign=\"top\"><a href=\"#tag\">Tag</a></td>\n<td>\n\nRequires a valid authorization token. Creates a new tag\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">name</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">description</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">datatype</td>\n<td valign=\"top\"><a href=\"#datatype\">Datatype</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">value</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">scanClassId</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">min</td>\n<td valign=\"top\"><a href=\"#float\">Float</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">max</td>\n<td valign=\"top\"><a href=\"#float\">Float</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">deadband</td>\n<td valign=\"top\"><a href=\"#float\">Float</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">units</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>updateTag</strong></td>\n<td valign=\"top\"><a href=\"#tag\">Tag</a></td>\n<td>\n\nRequires a valid authorization token. Updates an existing tag\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">id</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">name</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">description</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">datatype</td>\n<td valign=\"top\"><a href=\"#datatype\">Datatype</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">value</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">scanClassId</td>\n<td valign=\"top\"><a href=\"#id\">ID</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">min</td>\n<td valign=\"top\"><a href=\"#float\">Float</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">max</td>\n<td valign=\"top\"><a href=\"#float\">Float</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">deadband</td>\n<td valign=\"top\"><a href=\"#float\">Float</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">units</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>deleteTag</strong></td>\n<td valign=\"top\"><a href=\"#tag\">Tag</a></td>\n<td>\n\nRequires a valid authorization token. Deletes a tag. Will delete any source assigned to this tag, and tag will no longer be scanned.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">id</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>createOpcua</strong></td>\n<td valign=\"top\"><a href=\"#device\">Device</a></td>\n<td>\n\nRequires a valid authorization token. Creates a opcua device, and automatically starts a connection.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">name</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">description</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">host</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">port</td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">retryRate</td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>updateOpcua</strong></td>\n<td valign=\"top\"><a href=\"#device\">Device</a></td>\n<td>\n\nRequires a valid authorization token. Updates an existing opcua device and refreshes the connection.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">id</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">name</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">description</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">host</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">port</td>\n<td valign=\"top\"><a href=\"#int\">Int</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">retryRate</td>\n<td valign=\"top\"><a href=\"#int\">Int</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>deleteOpcua</strong></td>\n<td valign=\"top\"><a href=\"#device\">Device</a></td>\n<td>\n\nRequires a valid authorization token. Deletes a opcua device. All sources assigned to this device are deleted and tags using\nthis device as a source will have their sources set to null, making their values static.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">id</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>createOpcuaSource</strong></td>\n<td valign=\"top\"><a href=\"#opcuasource\">OpcuaSource</a></td>\n<td>\n\nRequires a valid authorization token. Creates a OPC UA source. The tag value will then be updated to the value at the source register per the scan class\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">deviceId</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">tagId</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">nodeId</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>updateOpcuaSource</strong></td>\n<td valign=\"top\"><a href=\"#opcuasource\">OpcuaSource</a></td>\n<td>\n\nRequires a valid authorization token. Updates a OPC UA source register. The tag value will then update per the new register at the rate of the scan class.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">tagId</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">nodeId</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>deleteOpcuaSource</strong></td>\n<td valign=\"top\"><a href=\"#opcuasource\">OpcuaSource</a></td>\n<td>\n\nRequires a valid authorization token. Deletes a OPC UA source. The tag value will then be static.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">tagId</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>createModbus</strong></td>\n<td valign=\"top\"><a href=\"#device\">Device</a></td>\n<td>\n\nRequires a valid authorization token. Creates an Modbus TCP/IP device, and automatically starts a connection.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">name</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">description</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">host</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">port</td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">reverseBits</td>\n<td valign=\"top\"><a href=\"#boolean\">Boolean</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">reverseWords</td>\n<td valign=\"top\"><a href=\"#boolean\">Boolean</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">zeroBased</td>\n<td valign=\"top\"><a href=\"#boolean\">Boolean</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">timeout</td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">retryRate</td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>updateModbus</strong></td>\n<td valign=\"top\"><a href=\"#device\">Device</a></td>\n<td>\n\nRequires a valid authorization token. Updates an existing modbus device and refreshes the connection.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">id</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">name</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">description</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">host</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">port</td>\n<td valign=\"top\"><a href=\"#int\">Int</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">reverseBits</td>\n<td valign=\"top\"><a href=\"#boolean\">Boolean</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">reverseWords</td>\n<td valign=\"top\"><a href=\"#boolean\">Boolean</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">zeroBased</td>\n<td valign=\"top\"><a href=\"#boolean\">Boolean</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">timeout</td>\n<td valign=\"top\"><a href=\"#int\">Int</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">retryRate</td>\n<td valign=\"top\"><a href=\"#int\">Int</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>deleteModbus</strong></td>\n<td valign=\"top\"><a href=\"#device\">Device</a></td>\n<td>\n\nRequires a valid authorization token. Deletes a modbus device. All sources assigned to this device are deleted and tags using\nthis device as a source will have their sources set to null, making their values static.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">id</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>createModbusSource</strong></td>\n<td valign=\"top\"><a href=\"#modbussource\">ModbusSource</a></td>\n<td>\n\nRequires a valid authorization token. Creates a modbus source. The tag value will then be updated to the value at the source register per the scan class\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">deviceId</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">tagId</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">register</td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">registerType</td>\n<td valign=\"top\"><a href=\"#modbusregistertype\">ModbusRegisterType</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>updateModbusSource</strong></td>\n<td valign=\"top\"><a href=\"#modbussource\">ModbusSource</a></td>\n<td>\n\nRequires a valid authorization token. Updates a modbus source register. The tag value will then update per the new register at the rate of the scan class.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">tagId</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">register</td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">registerType</td>\n<td valign=\"top\"><a href=\"#modbusregistertype\">ModbusRegisterType</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>deleteModbusSource</strong></td>\n<td valign=\"top\"><a href=\"#modbussource\">ModbusSource</a></td>\n<td>\n\nRequires a valid authorization token. Deletes a modbus source. The tag value will then be static.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">tagId</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>createEthernetIP</strong></td>\n<td valign=\"top\"><a href=\"#device\">Device</a></td>\n<td>\n\nRequires a valid authorization token. Creates an Ethernet/IP device, and automatically starts a connection.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">name</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">description</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">host</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">slot</td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>updateEthernetIP</strong></td>\n<td valign=\"top\"><a href=\"#device\">Device</a></td>\n<td>\n\nRequires a valid authorization token. Updates an existing Ethernet/IP device and refreshes the connection.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">id</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">name</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">description</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">host</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">slot</td>\n<td valign=\"top\"><a href=\"#int\">Int</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>deleteEthernetIP</strong></td>\n<td valign=\"top\"><a href=\"#device\">Device</a></td>\n<td>\n\nRequires a valid authorization token. Deletes an Ethernet/IP device. All sources assigned to this device are deleted and tags using\nthis device as a source will have their sources set to null, making their values static.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">id</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>createEthernetIPSource</strong></td>\n<td valign=\"top\"><a href=\"#ethernetipsource\">EthernetIPSource</a></td>\n<td>\n\nRequires a valid authorization token. Creates an Ethernet/IP source. The tag value will then be updated to the value at the source register per the scan class\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">deviceId</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">tagId</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">tagname</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>updateEthernetIPSource</strong></td>\n<td valign=\"top\"><a href=\"#ethernetipsource\">EthernetIPSource</a></td>\n<td>\n\nRequires a valid authorization token. Updates an Ethernet/IP source tagname. The tag value will then update per the new tagname at the rate of the scan class.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">tagId</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">tagname</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>deleteEthernetIPSource</strong></td>\n<td valign=\"top\"><a href=\"#ethernetipsource\">EthernetIPSource</a></td>\n<td>\n\nRequires a valid authorization token. Deletes an Ethernet/IP source. The tag value will then be static.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">tagId</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>createMqtt</strong></td>\n<td valign=\"top\"><a href=\"#service\">Service</a></td>\n<td>\n\nRequires a valid authorization token. Creates an MQTT Sparkplug B service (tied to a single MQTT broker).\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">name</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">description</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">host</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">port</td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">group</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">node</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">username</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">password</td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">devices</td>\n<td valign=\"top\">[<a href=\"#id\">ID</a>!]!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">rate</td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">encrypt</td>\n<td valign=\"top\"><a href=\"#boolean\">Boolean</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">recordLimit</td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">primaryHosts</td>\n<td valign=\"top\">[<a href=\"#string\">String</a>!]</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>updateMqtt</strong></td>\n<td valign=\"top\"><a href=\"#service\">Service</a></td>\n<td>\n\nRequires a valid authorization token. Updates an MQTT Sparkplug B service and restarts the connection.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">id</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">name</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">description</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">host</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">port</td>\n<td valign=\"top\"><a href=\"#int\">Int</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">group</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">node</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">username</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">password</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">rate</td>\n<td valign=\"top\"><a href=\"#int\">Int</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">recordLimit</td>\n<td valign=\"top\"><a href=\"#int\">Int</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">encrypt</td>\n<td valign=\"top\"><a href=\"#boolean\">Boolean</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>addMqttSource</strong></td>\n<td valign=\"top\"><a href=\"#service\">Service</a></td>\n<td>\n\nRequires a valid authorization token. Adds a device to an MQTT service. All the tags with sources from that device will be published at the rate of the MQTT service configuration.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">id</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">deviceId</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>deleteMqttSource</strong></td>\n<td valign=\"top\"><a href=\"#service\">Service</a></td>\n<td>\n\nRequires a valid authorization token. Deletes a device from an MQTT service. The tags for the removed device will no longer be published to the broker (but the device and tags will still exist).\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">id</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">deviceId</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>addMqttPrimaryHost</strong></td>\n<td valign=\"top\"><a href=\"#mqttprimaryhost\">MqttPrimaryHost</a></td>\n<td>\n\nRequires a valid authorization token. Adds a primary host id to monitor (for store & forward)\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">id</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">name</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>deleteMqttPrimaryHost</strong></td>\n<td valign=\"top\"><a href=\"#mqttprimaryhost\">MqttPrimaryHost</a></td>\n<td>\n\nRequires a valid authorization token. Deletes a primary host id to monitor (for store & forward)\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">id</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">name</td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>deleteMqtt</strong></td>\n<td valign=\"top\"><a href=\"#service\">Service</a></td>\n<td>\n\nRequires a valid authorization token. Deletes an MQTT Service. All devices assigned to this service will no longer have their tags published.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" align=\"right\" valign=\"top\">id</td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n\n## Objects\n\n### AuthPayload\n\nThe data returned after a successful login attempt.\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Field</th>\n<th align=\"right\">Argument</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>token</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td>\n\nBearer token to be added to the Authorization header for future requests.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>user</strong></td>\n<td valign=\"top\"><a href=\"#user\">User</a></td>\n<td>\n\nUser that successfully logged in.\n\n</td>\n</tr>\n</tbody>\n</table>\n\n### Device\n\nA Device is a something that can serve data to be used for updating tag values, such as a modbus TCP or Ethernet/IP server.\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Field</th>\n<th align=\"right\">Argument</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>id</strong></td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>name</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nIdentifier for the device that will be also used for external services, such as MQTT Sparkplug B.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>description</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nDescription to allow for users to give the device more context.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>config</strong></td>\n<td valign=\"top\"><a href=\"#deviceconfig\">DeviceConfig</a></td>\n<td>\n\nConfiguration is specific to the protocol used by the device, such as modbus or Ethernet/IP\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>createdBy</strong></td>\n<td valign=\"top\"><a href=\"#user\">User</a></td>\n<td>\n\nUser who created the tag.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>createdOn</strong></td>\n<td valign=\"top\"><a href=\"#datetime\">DateTime</a>!</td>\n<td>\n\nDate/time the tag was created.\n\n</td>\n</tr>\n</tbody>\n</table>\n\n### EthernetIP\n\nEthernet/IP is a device config allowing for access to data for updating tag values per the ODVA Ethernet/IP specification.\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Field</th>\n<th align=\"right\">Argument</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>id</strong></td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>device</strong></td>\n<td valign=\"top\"><a href=\"#device\">Device</a>!</td>\n<td>\n\nDevice for this Ethernet/IP configuration.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>host</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nHost or IP address of the Ethernet/IP device. Port is fixed at 44818.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>slot</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nSlot of the PLC. It is typically zero for devices that do no have slots or where the PLC is fixed.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>sources</strong></td>\n<td valign=\"top\">[<a href=\"#ethernetipsource\">EthernetIPSource</a>!]!</td>\n<td>\n\nList of sources (tag/register) pairs that are using this Ethernet/IP device.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>status</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td>\n\nStatus of the Ethernet/IP device connection. Will be connected if connection is successful or an error message if connection failed.\n\n</td>\n</tr>\n</tbody>\n</table>\n\n### EthernetIPSource\n\nAn Ethernet/IP source reads an tag from an Ethernet/IP device and updates a tag value per the tags scan class.\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Field</th>\n<th align=\"right\">Argument</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>id</strong></td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>ethernetip</strong></td>\n<td valign=\"top\"><a href=\"#ethernetip\">EthernetIP</a>!</td>\n<td>\n\nThe ethernet/IP device this source uses to get the register values.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>tag</strong></td>\n<td valign=\"top\"><a href=\"#tag\">Tag</a>!</td>\n<td>\n\nThe tag to update.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>tagname</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nThe tagname of the tag in the Ethernet/IP device (not to be confused with the name of the tag in this gateway)\n\n</td>\n</tr>\n</tbody>\n</table>\n\n### Modbus\n\nModbus is a device config allowing for access to data for updating tag values per the Modbus TCP specification.\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Field</th>\n<th align=\"right\">Argument</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>id</strong></td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>device</strong></td>\n<td valign=\"top\"><a href=\"#device\">Device</a>!</td>\n<td>\n\nDevice for this modbus configuration.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>host</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nHost or IP address of the modbus device.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>port</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nPort of the modbus device.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>reverseBits</strong></td>\n<td valign=\"top\"><a href=\"#boolean\">Boolean</a>!</td>\n<td>\n\nWhether registers are stored as Big Endian (false) or Little Endian (true).\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>reverseWords</strong></td>\n<td valign=\"top\"><a href=\"#boolean\">Boolean</a>!</td>\n<td>\n\nWhether multiregister sources should use the lowest register first (false) or the highest register first (true).\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>timeout</strong></td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td>\n\nHow long to wait to for connection with the device to complete before throwing an error.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>sources</strong></td>\n<td valign=\"top\">[<a href=\"#modbussource\">ModbusSource</a>!]!</td>\n<td>\n\nList of sources (tag/register) pairs that are using this modbus device.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>status</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td>\n\nStatus of the modbus device connection. Will be connected if connection is successful or an error message if connection failed.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>zeroBased</strong></td>\n<td valign=\"top\"><a href=\"#boolean\">Boolean</a>!</td>\n<td>\n\nWhether registers start from zero or one. Can be used to make sure device addresses and those configured in the gateway match (and are not one off from eachother)\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>retryRate</strong></td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td>\n\nMilliseconds between retries when connection is interrupted.\n\n</td>\n</tr>\n</tbody>\n</table>\n\n### ModbusSource\n\nA Mobus source reads a register from a modbus TCP device and updates a tag value per the tags scan class.\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Field</th>\n<th align=\"right\">Argument</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>id</strong></td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>modbus</strong></td>\n<td valign=\"top\"><a href=\"#modbus\">Modbus</a>!</td>\n<td>\n\nThe modbus device this source uses to get the register values.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>tag</strong></td>\n<td valign=\"top\"><a href=\"#tag\">Tag</a>!</td>\n<td>\n\nThe tag to update.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>register</strong></td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td>\n\nThe starting register to read from the modbus device.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>registerType</strong></td>\n<td valign=\"top\"><a href=\"#modbusregistertype\">ModbusRegisterType</a>!</td>\n<td>\n\nThe register type per the modbus specification. Can be `HOLDING_REGISTER`, `INPUT_REGISTER`, `DISCRETE_INPUT`, or `COIL`.\n\n</td>\n</tr>\n</tbody>\n</table>\n\n### Mqtt\n\nMQTT is a service that allows for publishing tag values to an MQTT broker using the sparkplug B specification, which will server data to other subscribing nodes. One broker per service.\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Field</th>\n<th align=\"right\">Argument</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>id</strong></td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>host</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nHostname or IP address of the MQTT broker\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>port</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nPort for the service on the MQTT broker\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>group</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nIdentifies a logical grouping of edge devices.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>node</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nIdentifies the edge device pushing data to the MQTT broker.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>username</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nMQTT Broker username.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>password</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nMQTT Broker password.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>sources</strong></td>\n<td valign=\"top\">[<a href=\"#mqttsource\">MqttSource</a>!]!</td>\n<td>\n\nList of MQTT source devices that will be publishing to this broker.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>rate</strong></td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td>\n\nPublishing rate in milliseconds\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>encrypt</strong></td>\n<td valign=\"top\"><a href=\"#boolean\">Boolean</a>!</td>\n<td>\n\nTrue if ssl:// is to be used, otherwise tcp:// will be used.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>recordLimit</strong></td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td>\n\nMaximum number of records to publish at one time while forwarding historical data.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>primaryHosts</strong></td>\n<td valign=\"top\">[<a href=\"#mqttprimaryhost\">MqttPrimaryHost</a>!]!</td>\n<td>\n\nPrimary host IDs. This is used for store and forward to detect if the consumers are online. The gateway will store data if any consumer is offline.\n\n</td>\n</tr>\n</tbody>\n</table>\n\n### MqttPrimaryHost\n\nMQTT is a service that allows for publishing tag values to an MQTT broker using the sparkplug B specification, which will server data to other subscribing nodes. One broker per service.\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Field</th>\n<th align=\"right\">Argument</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>id</strong></td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>name</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nPrimary Host ID, used to verify primary host state for store and forward\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>status</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nUKNOWN before STATE has been received from broker, ONLINE/OFFLINE otherwise, indicating status\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>recordCount</strong></td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td>\n\nNumber of historical records stored, awaiting forwarding\n\n</td>\n</tr>\n</tbody>\n</table>\n\n### MqttSource\n\nAn MQTT source publishes data from all tags with the same device source. The device name will be used as the `Device` field in sparkplug B.\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Field</th>\n<th align=\"right\">Argument</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>id</strong></td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>mqtt</strong></td>\n<td valign=\"top\"><a href=\"#mqtt\">Mqtt</a>!</td>\n<td>\n\nMQTT service (broker)\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>device</strong></td>\n<td valign=\"top\"><a href=\"#device\">Device</a>!</td>\n<td>\n\nSource device. All tags updating their values from this device will be published at the MQTT services configured scan rate.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>recordCount</strong></td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td>\n\nNumber of historical records stored, awaiting forwarding\n\n</td>\n</tr>\n</tbody>\n</table>\n\n### Opcua\n\nOpcua is a device config allowing for access to data for updating tag values per the Opcua specification.\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Field</th>\n<th align=\"right\">Argument</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>id</strong></td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>device</strong></td>\n<td valign=\"top\"><a href=\"#device\">Device</a>!</td>\n<td>\n\nDevice for this Opcua configuration.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>host</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nHost or IP address of the modbus device.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>port</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nPort of the modbus device.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>status</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td>\n\nStatus of the modbus device connection. Will be connected if connection is successful or an error message if connection failed.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>retryRate</strong></td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td>\n\nMilliseconds between retries when connection is interrupted.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>nodes</strong></td>\n<td valign=\"top\"><a href=\"#opcuanode\">OpcuaNode</a></td>\n<td>\n\nNodes\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>flatNodes</strong></td>\n<td valign=\"top\">[<a href=\"#opcuanode\">OpcuaNode</a>!]!</td>\n<td>\n\nNon-heirarchical list\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>sources</strong></td>\n<td valign=\"top\">[<a href=\"#opcuasource\">OpcuaSource</a>!]!</td>\n<td>\n\nList of sources (tag/nodeId) pairs that are using this opcua device.\n\n</td>\n</tr>\n</tbody>\n</table>\n\n### OpcuaNode\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Field</th>\n<th align=\"right\">Argument</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>name</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>id</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>datatype</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>value</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>organizes</strong></td>\n<td valign=\"top\">[<a href=\"#opcuanode\">OpcuaNode</a>!]</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>hasProperty</strong></td>\n<td valign=\"top\">[<a href=\"#opcuanode\">OpcuaNode</a>!]</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>hasComponent</strong></td>\n<td valign=\"top\">[<a href=\"#opcuanode\">OpcuaNode</a>!]</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>children</strong></td>\n<td valign=\"top\">[<a href=\"#opcuanode\">OpcuaNode</a>!]!</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n\n### OpcuaSource\n\nAn OPC UA source reads an tag from an OPC UA device and updates a tag value per the tags scan class.\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Field</th>\n<th align=\"right\">Argument</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>id</strong></td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>opcua</strong></td>\n<td valign=\"top\"><a href=\"#opcua\">Opcua</a>!</td>\n<td>\n\nThe OPC UA device this source uses to get the register values.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>tag</strong></td>\n<td valign=\"top\"><a href=\"#tag\">Tag</a>!</td>\n<td>\n\nThe tag to update.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>nodeId</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nThe node id of the tag in the OPC UA device\n\n</td>\n</tr>\n</tbody>\n</table>\n\n### ScanClass\n\nA scan class allows for groups of tags to be updated at the same pre-defined rate.\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Field</th>\n<th align=\"right\">Argument</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>id</strong></td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>name</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nIdentifier for the scan class, used as a brief descriptor\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>description</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nDescription to allow for users to give the scan class more context.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>rate</strong></td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td>\n\nRate at which to update that tags assigned to this scan class from their device source.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>tags</strong></td>\n<td valign=\"top\">[<a href=\"#tag\">Tag</a>!]!</td>\n<td>\n\nList of tags assigned to this scan class\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>scanCount</strong></td>\n<td valign=\"top\"><a href=\"#int\">Int</a>!</td>\n<td>\n\nThe number of times this scan class has been scanned since the scan class scan started. This values clears to zero when the periodic scan is stopped.\n\n</td>\n</tr>\n</tbody>\n</table>\n\n### Service\n\nA service makes data available to external services by acting as a server or publishing the data as is done with MQTT.\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Field</th>\n<th align=\"right\">Argument</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>id</strong></td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>name</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nIdentifier for the service.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>description</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nDescription to allow for users to give the service more context.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>config</strong></td>\n<td valign=\"top\"><a href=\"#mqtt\">Mqtt</a></td>\n<td>\n\nConfiguration is specific to the protocol used by the service, such as MQTT\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>createdBy</strong></td>\n<td valign=\"top\"><a href=\"#user\">User</a></td>\n<td>\n\nUser who created the service.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>createdOn</strong></td>\n<td valign=\"top\"><a href=\"#datetime\">DateTime</a>!</td>\n<td>\n\nDate/time the service was created.\n\n</td>\n</tr>\n</tbody>\n</table>\n\n### Subscription\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Field</th>\n<th align=\"right\">Argument</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>tagUpdate</strong></td>\n<td valign=\"top\"><a href=\"#tag\">Tag</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>deviceUpdate</strong></td>\n<td valign=\"top\"><a href=\"#device\">Device</a></td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>serviceUpdate</strong></td>\n<td valign=\"top\"><a href=\"#service\">Service</a></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n\n### Tag\n\nA Tag stores data point values. It's value can be updated from a device source per it's scan class, and it's value can be made available to external services like MQTT.\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Field</th>\n<th align=\"right\">Argument</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>id</strong></td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>name</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nIdentifier for the tag that will be also used for external services, such as MQTT Sparkplug B.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>description</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td>\n\nDescription to allow for users to give the tag more context.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>value</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td>\n\nTag value, which is updated at the scan class rate from the assigned source and also delivered to services that use this tag as a source.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>datatype</strong></td>\n<td valign=\"top\"><a href=\"#datatype\">Datatype</a>!</td>\n<td>\n\nFormat of that tag value, allowing clients to parse the value appropriately.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>scanClass</strong></td>\n<td valign=\"top\"><a href=\"#scanclass\">ScanClass</a>!</td>\n<td>\n\nAssigned scan class which determines the rate at which the tag is updated from it's assigned source.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>createdBy</strong></td>\n<td valign=\"top\"><a href=\"#user\">User</a></td>\n<td>\n\nUser who created the tag.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>createdOn</strong></td>\n<td valign=\"top\"><a href=\"#datetime\">DateTime</a>!</td>\n<td>\n\nDate/time the tag was created.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>source</strong></td>\n<td valign=\"top\"><a href=\"#source\">Source</a></td>\n<td>\n\nSource from which this tag value is updated.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>max</strong></td>\n<td valign=\"top\"><a href=\"#float\">Float</a></td>\n<td>\n\nMaximum tag value (meant for use if the tag is numeric). Can be used to generate out of range indication and for graphical displays\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>min</strong></td>\n<td valign=\"top\"><a href=\"#float\">Float</a></td>\n<td>\n\nMinimum tag value (meant for use if the tag is numeric). Can be used to generate out of range indication and for graphical displays\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>deadband</strong></td>\n<td valign=\"top\"><a href=\"#float\">Float</a></td>\n<td>\n\nDeadband, used to determine whether to publish a change or write to history. If the change in value is less than the deadband, the update is ignored. If this value is zero, all changes are published and write to history.\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>units</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a></td>\n<td>\n\nEngineering units of the tag. Meant to be used for user displays to give context to a numerical value.\n\n</td>\n</tr>\n</tbody>\n</table>\n\n### User\n\nCredentials used to identify who is logging into the gateway.\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Field</th>\n<th align=\"right\">Argument</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>id</strong></td>\n<td valign=\"top\"><a href=\"#id\">ID</a>!</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\"><strong>username</strong></td>\n<td valign=\"top\"><a href=\"#string\">String</a>!</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n\n## Enums\n\n### Datatype\n\nTag datatypes allowing for clients to properly parse tag values.\n\n<table>\n<thead>\n<th align=\"left\">Value</th>\n<th align=\"left\">Description</th>\n</thead>\n<tbody>\n<tr>\n<td valign=\"top\"><strong>BOOLEAN</strong></td>\n<td></td>\n</tr>\n<tr>\n<td valign=\"top\"><strong>INT16</strong></td>\n<td></td>\n</tr>\n<tr>\n<td valign=\"top\"><strong>INT32</strong></td>\n<td></td>\n</tr>\n<tr>\n<td valign=\"top\"><strong>FLOAT</strong></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n\n### ModbusRegisterType\n\nModbus register types for use with modbus sources per the modbus specification.\n\n<table>\n<thead>\n<th align=\"left\">Value</th>\n<th align=\"left\">Description</th>\n</thead>\n<tbody>\n<tr>\n<td valign=\"top\"><strong>DISCRETE_INPUT</strong></td>\n<td></td>\n</tr>\n<tr>\n<td valign=\"top\"><strong>COIL</strong></td>\n<td></td>\n</tr>\n<tr>\n<td valign=\"top\"><strong>INPUT_REGISTER</strong></td>\n<td></td>\n</tr>\n<tr>\n<td valign=\"top\"><strong>HOLDING_REGISTER</strong></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n\n## Scalars\n\n### Boolean\n\nThe `Boolean` scalar type represents `true` or `false`.\n\n### DateTime\n\nUsed to deliver timestamp values.\n\n### Float\n\nThe `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).\n\n### ID\n\nThe `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.\n\n### Int\n\nThe `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.\n\n### String\n\nThe `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.\n\n\n<!-- END graphql-markdown -->","readmeFilename":"README.md"}