{"_id":"@flowfuse/device-agent","_rev":"50-e292411354ed3943d815d5643f40f2b4","name":"@flowfuse/device-agent","dist-tags":{"latest":"4.2.2"},"versions":{"1.13.1":{"name":"@flowfuse/device-agent","version":"1.13.1","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@1.13.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"99ea066427bf663f4aa7a0074f23161702c2e0b9","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-1.13.1.tgz","fileCount":34,"integrity":"sha512-gU0pzopJL8dwVEfuLau8VSq3jcUTDbQ08O7ltnC0Mah0R56LdtVsYgcspLCaQ5JLqnDR7kcRzqbD0plpy6/cQw==","signatures":[{"sig":"MEUCIQDcvGGbXV4qzSU5VElf5kqotdf81lNlYuaGSuoKZq9ThgIgAnoM0lU/75TJ7oEpvRGCBHxnXh5mtZtJqzGHcRUD6Rk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246239},"main":"index.js","engines":{"node":">=14.x"},"exports":{"./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"dc8d587aac4e6207b1d1775b94c859fe496529dc","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha test/unit/**/*_spec.js","test:frontend":"mocha test/unit/frontend/**/*.spec.js"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"8.19.4","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^4.3.7","yaml":"^2.1.1","semver":"^7.3.8","command-line-args":"^5.2.1","command-line-usage":"^6.1.3","@flowforge/nr-theme":"^1.8.0"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","sinon":"^14.0.0","eslint":"^8.25.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_1.13.1_1699455093279_0.3178441833746777","host":"s3://npm-registry-packages"}},"1.13.3":{"name":"@flowfuse/device-agent","version":"1.13.3","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@1.13.3","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"41d48e06368a61d05a24e9107720422a80fce746","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-1.13.3.tgz","fileCount":34,"integrity":"sha512-9KxajoEFquVWjK3jYbz3tht1Eqh7fJwxKDzVxAMEOx9DLW/2Vs3/T+ZYYaX2rSUrcpcgEdVJDcfBGgIgyAN/Ag==","signatures":[{"sig":"MEYCIQC1oGNwC6ZfkHwgYWS2TNnM8o8J+UvTWzlb7lSSj3HUbgIhANiZUYlcBTvBSkgolKeseeaPVFNWoYgYzJjRKw85nS04","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248297},"main":"index.js","engines":{"node":">=14.x"},"exports":{"./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"d709eba9abedc3242205b9d6037921ffe909b50f","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha test/unit/**/*_spec.js","test:frontend":"mocha test/unit/frontend/**/*.spec.js"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"8.19.4","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^4.3.7","yaml":"^2.1.1","semver":"^7.3.8","command-line-args":"^5.2.1","command-line-usage":"^6.1.3","@flowforge/nr-theme":"^1.8.0"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","sinon":"^14.0.0","eslint":"^8.25.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_1.13.3_1699540381390_0.8859481070584667","host":"s3://npm-registry-packages"}},"1.14.0":{"name":"@flowfuse/device-agent","version":"1.14.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@1.14.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"b011cd291f65c713e28310969a99304da7f2b681","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-1.14.0.tgz","fileCount":34,"integrity":"sha512-/yeIHEF5cd2r1IFa4FkswaRQrpHT8Eb9fKx/9tIhYAruMdAehmqazQqgH+1hpChtKAEmfEqgIpUXjOJW2FSVuQ==","signatures":[{"sig":"MEUCIA6eo6Rew9ORfmnwNLNWJ5ADdotR7ssD9XcJmmV34wlxAiEAoXbQu0C/7q3sz9dKXvtzbrnxKl76Ml4qRoOr/yiqGTY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248512},"main":"index.js","engines":{"node":">=14.x"},"exports":{"./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"87c39706653dc9070286b9a2a098cbbb71dbb71a","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha test/unit/**/*_spec.js","test:frontend":"mocha test/unit/frontend/**/*.spec.js"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"8.19.4","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^4.3.7","yaml":"^2.1.1","semver":"^7.3.8","command-line-args":"^5.2.1","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","sinon":"^14.0.0","eslint":"^8.25.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_1.14.0_1700735073978_0.5259886778576339","host":"s3://npm-registry-packages"}},"1.15.0":{"name":"@flowfuse/device-agent","version":"1.15.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@1.15.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"b98e80b15dd357333ffa4a02cbc106056d7a62a7","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-1.15.0.tgz","fileCount":34,"integrity":"sha512-HQSWlrDaV0Hl5XRNa2g/OVG5iluCIMNrgl0hMV/R3R9HKMvaQbS5VW47Bs3V0gtSaFzZCoEadyg5Kp5sqaRYKQ==","signatures":[{"sig":"MEUCIBdW+M2CWK3pRinjlf5RyDMYE/ksgUhVpH1Z6GuNwHlaAiEA+7cY8ksFVRjobhSwom8/J34hk8EJSyJFZ+udqH5cKag=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249676},"main":"index.js","engines":{"node":">=14.x"},"exports":{"./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"be492a783f267062aa7ce25641ef34c12983506e","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha test/unit/**/*_spec.js","test:frontend":"mocha test/unit/frontend/**/*.spec.js"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"8.19.4","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^4.3.7","yaml":"^2.1.1","semver":"^7.3.8","command-line-args":"^5.2.1","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","sinon":"^14.0.0","eslint":"^8.25.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_1.15.0_1703154330397_0.9732540435908623","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@flowfuse/device-agent","version":"2.0.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@2.0.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"edda565f8f2394b10224c0d14862620d55509729","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-2.0.0.tgz","fileCount":34,"integrity":"sha512-TqCqJthDqH8DNQpRrz+3N+gDcOlE4bzR2a0iUFn75zxGSmCb/sUrtVIj40boO1OyskUugbrs18rD/p1OY1Jgww==","signatures":[{"sig":"MEQCIH1E5IYEiWNqNRx6XWFe6W43CQ61vYyNHVYZUeNWWSQHAiBkP6U11yYnoeZEqQIR0wuRxKC6tYQWuQxOuYMU6ShfyA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253104},"main":"index.js","engines":{"node":">=14.x"},"exports":{"./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"0677670eb111da6506629f8fb1dd2fb1fe2237c8","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha test/unit/**/*_spec.js","test:frontend":"mocha test/unit/frontend/**/*.spec.js"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"8.19.4","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^4.3.7","yaml":"^2.1.1","semver":"^7.3.8","command-line-args":"^5.2.1","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","sinon":"^14.0.0","eslint":"^8.25.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_2.0.0_1705574126327_0.9898284884698441","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"@flowfuse/device-agent","version":"2.1.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@2.1.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"1672f59e64b6ac04cfe0b9304f7b7ac618b1554b","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-2.1.0.tgz","fileCount":34,"integrity":"sha512-XQ/57CAEInkh/cRkrYuVbt/GzsVEJhSCBsDwlQYphrPwrQ2Fsv88aCn5vOr3XAolPYmmwgl3Jqqx42+gZpXE3A==","signatures":[{"sig":"MEQCIAzb0InM98HDLYNJdnLWXJR3wTIwhYPxHPXPkV46yKYeAiBxW2VkP1CVr8PZYRJP6L/ipve78cKX0zjKEJDbElTsvQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259784},"main":"index.js","engines":{"node":">=14.x"},"exports":{"./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"3902bfb44ce2ac7501d49f886523060f759a17bc","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha test/unit/**/*_spec.js","test:frontend":"mocha test/unit/frontend/**/*.spec.js"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"8.19.4","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^4.3.7","yaml":"^2.1.1","semver":"^7.3.8","command-line-args":"^5.2.1","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","sinon":"^14.0.0","eslint":"^8.25.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_2.1.0_1707214056423_0.06833183579791391","host":"s3://npm-registry-packages"}},"2.2.0":{"name":"@flowfuse/device-agent","version":"2.2.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@2.2.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"6adbf06c3aa154f1d8cdff2b585d5b91452d0cfb","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-2.2.0.tgz","fileCount":35,"integrity":"sha512-LaINtjBnmurW8JwLwkg7xJTvMTP/aNwtFsMNOrD8GadTdFFvOS78OOeLt+CQ8LaWoXs5nOE23ssnJarcq14TLA==","signatures":[{"sig":"MEUCIHFwc8M0Pu7rXv4b6Qi8vlG2e2H0C7g1MD/y41DykbtcAiEA8j0uMdyKyKg8ezZm1MaZYcZ8kFN/EyFsv/uQDFO0v70=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265523},"main":"index.js","engines":{"node":">=14.x"},"exports":{"./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"a7af2070b203dc8e5430de689e3af703e3cb7f0c","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha test/unit/**/*_spec.js","test:frontend":"mocha test/unit/frontend/**/*.spec.js"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"8.19.4","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^4.3.7","yaml":"^2.1.1","semver":"^7.3.8","command-line-args":"^5.2.1","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","sinon":"^14.0.0","eslint":"^8.25.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_2.2.0_1707392906899_0.40516623447916467","host":"s3://npm-registry-packages"}},"2.3.0":{"name":"@flowfuse/device-agent","version":"2.3.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@2.3.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"e3ec2db3bff76751b2244111b3c14f3ef4d31cc5","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-2.3.0.tgz","fileCount":36,"integrity":"sha512-heMHOGBjw2VsiRmPk8ERihH6kSMylx0HiySJ4nAXBRfn3B9UwZdF1aDZ82aBtPyLNzCDr+xpjyxXTNUeDvhmGQ==","signatures":[{"sig":"MEUCIQC+D398vPM5I2ECtTHfHehexxOhhaDRVsNupSI4kJD5SAIgcJdMwmCS6pkypVO4t+t6/UYpaDfvCbrlshSJMTm3EEE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":279795},"main":"index.js","engines":{"node":">=14.x"},"exports":{"./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"623c1dd85875664c57351d3428f8c1b72312d4e1","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha test/unit/**/*_spec.js","test:frontend":"mocha test/unit/frontend/**/*.spec.js"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"8.19.4","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^4.3.7","yaml":"^2.1.1","semver":"^7.3.8","command-line-args":"^5.2.1","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","sinon":"^14.0.0","eslint":"^8.25.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_2.3.0_1710416564693_0.2324277675190065","host":"s3://npm-registry-packages"}},"2.3.1":{"name":"@flowfuse/device-agent","version":"2.3.1","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@2.3.1","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"6183b97b3aafec7da33954f54026db84c3949208","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-2.3.1.tgz","fileCount":36,"integrity":"sha512-VSC8nu7WuEx/o0VrXE/aXCUAT/Zq1Py6ZjrhsOFpqEBJ6cJoUztPWlGxmKkh4YM4ODKgUwC+vPfIt+BYGHQQdA==","signatures":[{"sig":"MEUCIBsDtEZaY8Gs7Mmj+HpCeC3Gwm1ZDzV4wuaHJ3avCqbNAiEAlUIxYxHxxAFvtEqNIFKUVInzMZkE3shDPDLk1FoIWuI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":279922},"main":"index.js","engines":{"node":">=14.x"},"exports":{"./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"ab68492c0e8533ae69b5dc9130af090c5672e6bd","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha test/unit/**/*_spec.js","test:frontend":"mocha test/unit/frontend/**/*.spec.js"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"8.19.4","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^4.3.7","yaml":"^2.1.1","semver":"^7.3.8","command-line-args":"^5.2.1","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","sinon":"^14.0.0","eslint":"^8.25.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_2.3.1_1710435588087_0.17059979988552065","host":"s3://npm-registry-packages"}},"2.3.2":{"name":"@flowfuse/device-agent","version":"2.3.2","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@2.3.2","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"2028e0ba38627974a13ad64ac87c1d848b122f38","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-2.3.2.tgz","fileCount":36,"integrity":"sha512-8lc4pIdsLgqkML6GpAGvVV5+zbsRF3K9XludKBZrfIWK4VnJo+4MAgFGfEPUDkV5/2PzDqeYO7dcGm733mV/+g==","signatures":[{"sig":"MEUCIQDe9OGOEcqw+HAXa85huOE7Is4Sr4XTJmwzAMdNmmdcUQIgHC1hv3iLXoqqI/4BZUPmTSmNEBu4buUpJM/1nff39/4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281554},"main":"index.js","engines":{"node":">=14.x"},"exports":{"./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"120b5050b43af027c1b1270dcc123e282cc3d0ee","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"8.19.4","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^4.3.7","yaml":"^2.1.1","semver":"^7.3.8","command-line-args":"^5.2.1","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","sinon":"^14.0.0","eslint":"^8.25.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_2.3.2_1711622836453_0.045094887437175935","host":"s3://npm-registry-packages"}},"2.4.0":{"name":"@flowfuse/device-agent","version":"2.4.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@2.4.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"5266142f69c27b2ee33164fb2c99c816723c3ef9","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-2.4.0.tgz","fileCount":36,"integrity":"sha512-hUDYuj2ebx0kZsivSQVEFlIPtqh+23HTPcTemUdad5DUwB8yy4x6goCOx4ZjJzsUGUVdyXnPAbZQwZa4F+X/Wg==","signatures":[{"sig":"MEUCIQCDXzdyBBaLiIKkl2IDDuwAbxK5QTu1VNEzIn4ZZhTlUwIgHf7AV1WkXltMzI8wL93LRGmJsbeYYn+MLZCS28rbw6w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":282345},"main":"index.js","engines":{"node":">=14.x"},"exports":{"./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"8d98d93bf5fd47eb735ac771b96c9d163d960138","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"8.19.4","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^4.3.7","yaml":"^2.1.1","semver":"^7.3.8","command-line-args":"^5.2.1","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","sinon":"^14.0.0","eslint":"^8.25.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_2.4.0_1712825533642_0.3945254553984934","host":"s3://npm-registry-packages"}},"2.4.1":{"name":"@flowfuse/device-agent","version":"2.4.1","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@2.4.1","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"e95a1671257fdb9a763a7f73207fde1474d228cb","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-2.4.1.tgz","fileCount":36,"integrity":"sha512-S8bA1SO4fCwTr3pg+nSOt0/akRt2wZlDKuc1uHMgtIC63ienc1pSbqzEquXAK4uVyg6RnuiBvQ9Nva67/bghHg==","signatures":[{"sig":"MEQCIFNM6GDBYzPKxHvWEV3anpunNcx8se5z+x4PhJMWDnUqAiBTBa1jc5UeeZG24Am0OewJeFZ87VOBBQlXDll2irslfA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":284318},"main":"index.js","engines":{"node":">=14.x"},"exports":{"./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"648129d520e4ed9bec5c1ba8ec7143c1c1961164","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"8.19.4","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^4.3.7","yaml":"^2.1.1","semver":"^7.3.8","command-line-args":"^5.2.1","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","sinon":"^14.0.0","eslint":"^8.25.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_2.4.1_1714729981888_0.8717015971958302","host":"s3://npm-registry-packages"}},"2.5.0":{"name":"@flowfuse/device-agent","version":"2.5.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@2.5.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"73ad7d022cd94fcc307097e89d88897ef5edbf7e","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-2.5.0.tgz","fileCount":36,"integrity":"sha512-ZpB7iAT8LjxTYhEjOPiY8Fn307J1MJFz4fMc+SqgUshXy1Ju04sTn+2G8lUDcJGSCGE90OV/g+YQFqvL/RwTJA==","signatures":[{"sig":"MEUCIH1eGuT2JB6YVVlI8MsF8XxubtZpEINjbZX1vLeCkp5GAiEA57m888EdxH7p08FSfFI5NKQWFOgfPQGvMUbWBHnB57Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":294844},"main":"index.js","engines":{"node":">=14.x"},"exports":{"./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"229db3f5b6d10c566a388f98c0ec7174d6589ab6","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"8.19.4","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^4.3.7","yaml":"^2.1.1","semver":"^7.3.8","proxy-from-env":"^1.1.0","http-proxy-agent":"^7.0.2","command-line-args":"^5.2.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_2.5.0_1718376558873_0.8866552461589248","host":"s3://npm-registry-packages"}},"2.6.0":{"name":"@flowfuse/device-agent","version":"2.6.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@2.6.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"52f8eab01079b35fa4440dc13bd879eb35c1ec68","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-2.6.0.tgz","fileCount":35,"integrity":"sha512-lgTPkk0EJ7Eh4ER0HxUr/18Clmxrm5B6uyp1iJVbokpo/Sm1xa3Rv0Awq5KgortynpTQE/7mr7dXCBC6xLBG4w==","signatures":[{"sig":"MEUCIAzB6P85f/1Cep0nq6Quz9YMHtjvPCvsLTG1CZagvWhpAiEAznEF6DjcvUapsi+TUNFlo2BQLK1jz0ANkv0NiJ/Z08c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":296311},"main":"index.js","engines":{"node":">=14.x"},"exports":{"./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"63ae9e7e4ffb2fdb28fb13b0c80cab6670f131ba","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.7.0","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^4.3.7","yaml":"^2.1.1","semver":"^7.3.8","proxy-from-env":"^1.1.0","http-proxy-agent":"^7.0.2","command-line-args":"^5.2.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_2.6.0_1720788990206_0.21306580808362008","host":"s3://npm-registry-packages"}},"2.7.0":{"name":"@flowfuse/device-agent","version":"2.7.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@2.7.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"6fe92b183649ee3741b0ca4024b65ea6ad639296","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-2.7.0.tgz","fileCount":35,"integrity":"sha512-UdcGqj5VC5T379VG9/X9fdZ2Gxd7Ol+OZgT3gYmLs2MHD0t2kSTkipP/mio5gmRFtxMrKKCU4J9dSAQuuAEehg==","signatures":[{"sig":"MEYCIQD+bJHGBBQQUlSdL80dKUWp2mIKnG29h9DNazfSBVpC5gIhAJRmxYC5QZaNV1IXZF5mRbgfISlrZmDdi8SHcOiAl2H+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":297077},"main":"index.js","engines":{"node":">=14.x"},"exports":{"./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"23f986b890ff0e5d8c613d00dd78657ae58fea04","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.7.0","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^4.3.7","yaml":"^2.1.1","semver":"^7.3.8","proxy-from-env":"^1.1.0","http-proxy-agent":"^7.0.2","command-line-args":"^5.2.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_2.7.0_1722501093835_0.11713858505815189","host":"s3://npm-registry-packages"}},"2.8.0":{"name":"@flowfuse/device-agent","version":"2.8.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@2.8.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"5fce7c448bc6699238c7501003a7e34399205b89","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-2.8.0.tgz","fileCount":35,"integrity":"sha512-vGJI1yZ0Vx3N04NxXMRYU0pNYt4R+BZHeKWiZifk2NkXLMCRV1TC+lJNNZ9rKsBKxCOOeUe+H/SZULhGoaZ5jQ==","signatures":[{"sig":"MEQCIEJJwkByLOJ4A08vNl5Bo689fwC5k/qTaSgise04+bkWAiAj9+iBnY8AxryFDb41z+duTu7/cXx7MU2c9sjlFMoinA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":298538},"main":"index.js","engines":{"node":">=14.x"},"exports":{"./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"afca50e39f4841ab0f1ccc98581abcfe6475ff32","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.7.0","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^4.3.7","yaml":"^2.1.1","semver":"^7.3.8","proxy-from-env":"^1.1.0","http-proxy-agent":"^7.0.2","command-line-args":"^5.2.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_2.8.0_1724922532596_0.3297474315266895","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"@flowfuse/device-agent","version":"3.0.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.0.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"b90d2d191236bada5a087438f7f4d1ff21513a06","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.0.0.tgz","fileCount":36,"integrity":"sha512-rS4tmew6PwH2HLajF0DogIQH5gMi96GiFtLiVPOZd0fGopAPEEaGtyxbzscmHjevsI4/exHnsHuBzxWNd2X/Mg==","signatures":[{"sig":"MEYCIQDKyhwthEdgK7Csj2cF+bsb9pqxFsIBe51YMs682+zKLwIhAPjiGW5mUoA6Tz2kKFRrUsNFp90mZl9zgc4yzfjxQ0Ki","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":302636},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"d690143de64634dd2dc5e00f54c1bb94329fb953","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.7.0","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","proxy-from-env":"^1.1.0","http-proxy-agent":"^7.0.2","command-line-args":"^5.2.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.0.0_1731064021766_0.2688862157119263","host":"s3://npm-registry-packages"}},"3.0.1":{"name":"@flowfuse/device-agent","version":"3.0.1","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.0.1","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"ce12647061bd94c1b1f30f53c8027c13490028f6","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.0.1.tgz","fileCount":36,"integrity":"sha512-cjT27apzPMIVQee27ReHZgMLsV5tI3nnlBq34jrk9+vpVyu9uXmTNqzYfOn/4brL75X/UZQRgsH2ij5GyydPAA==","signatures":[{"sig":"MEUCIQDeX1I0dj3kE58Ye2Ng3qAFtdZ007OO4OFu+HD7sCselwIgOIkfvrKLJj+Q0z9ZGFYWxys3t6qW1bpTxR6e365XNJI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":302932},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"096e9733f8786c0321c2f3bc25727940f19db8d9","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.7.0","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","proxy-from-env":"^1.1.0","http-proxy-agent":"^7.0.2","command-line-args":"^5.2.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.0.1_1732183228425_0.4006646165836414","host":"s3://npm-registry-packages"}},"3.0.2":{"name":"@flowfuse/device-agent","version":"3.0.2","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.0.2","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"3185d09f8b0050687be98f843c45953e1fd1e4d7","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.0.2.tgz","fileCount":36,"integrity":"sha512-vPfJbepuw1IGBsQ4DrMzc4HwuX08QicMjxvz/oOISqZB/R/W90ZbecAQiBUrCwUHw6f3XU+dCEVu/8btk6Bsig==","signatures":[{"sig":"MEYCIQCDIIYkCaGN6hIzTSepIsUXGewoKcEVLKj+3G8Jk+FajgIhAOMftrTbmg5VUPI/dtZjHs58GuAczlFTLwBGtSO2pQEU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":304051},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"f4b987c0820f1f7ce7db0564ae69dda8e825c666","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","proxy-from-env":"^1.1.0","http-proxy-agent":"^7.0.2","command-line-args":"^5.2.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.0.2_1734600332141_0.30914627504391734","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@flowfuse/device-agent","version":"3.1.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.1.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"c148ca47197b92880b44a9e071ec11142d8111b6","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.1.0.tgz","fileCount":41,"integrity":"sha512-ZggP0BcTxVxJV+ojOod7ylzUi5r+Op3bXrYYQ7nCDdmuy2pRQQb1ayuOMAhDu8TbePpOm6E1Z90AOC1weqr3hQ==","signatures":[{"sig":"MEQCIHibv7et0s2lEOwLgv1YhLDpXBIWduH2F/VRMNiy7xZIAiBHvzUNSNGNhfDHpgCb9PxOVgeQZ9N5mU9r5XYpViqiQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318156},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"8e0df0b57b10d8c418d093c1718f403299c5fc6a","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","passport":"0.6.0","memorystore":"^1.6.7","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","http-proxy-agent":"^7.0.2","command-line-args":"^5.2.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.1.0_1739376591690_0.5196230212543671","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"name":"@flowfuse/device-agent","version":"3.1.1","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.1.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"d84b4af59b74c2d5f6303cd703cf25bc893d315b","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.1.1.tgz","fileCount":41,"integrity":"sha512-epj+Oe4Y89uwxpHnJssDSrefAAIsNdHp+lGW2Wgpkp+dyT2Qx8PXHy/WK3Svf3lLdkPuN+VtCGMJFz28Il1zzQ==","signatures":[{"sig":"MEYCIQCLxfg8Rixia9tMZRIqIDzA6ZAHC6CIB1fus0nUjUXa1QIhAIuWYmI+onGanlGl48YyacTlAEvCmOKFxmOiod9LOn7v","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318282},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"4c3054ac5a85319738b0de3515d5daed657172c9","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","passport":"0.6.0","memorystore":"^1.6.7","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","http-proxy-agent":"^7.0.2","command-line-args":"^5.2.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.1.1_1739441620362_0.8289081631603239","host":"s3://npm-registry-packages-npm-production"}},"3.1.2":{"name":"@flowfuse/device-agent","version":"3.1.2","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.1.2","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"555c31c72b4cd12efaa3c6a5512f12bec38ccf54","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.1.2.tgz","fileCount":41,"integrity":"sha512-dvsywrb/h3j43IM5dJBFfEYAl8VWee8q4x8wJydWi1hKSM8tX+72VMiQuUyKwGeo6zXv+QMyAgSaxJh6dbkTig==","signatures":[{"sig":"MEUCIDtbfbe1Cd+0jl4dzLmaNCDfnXwMyqVUSSJkKT8YQ0W6AiEAnI3ztjpP3gOHchn/5dWWbRUA/EtL9zGnx/VlgpBXvlg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":317811},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"bd02db7760214a2985e5cf91ea2b58518d88dd06","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","passport":"0.6.0","memorystore":"^1.6.7","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","http-proxy-agent":"^7.0.2","command-line-args":"^5.2.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.1.2_1739546810932_0.007556737441848149","host":"s3://npm-registry-packages-npm-production"}},"3.1.3":{"name":"@flowfuse/device-agent","version":"3.1.3","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.1.3","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"bc8b385fc00632efb68a4ef100f11ffff7d502c7","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.1.3.tgz","fileCount":41,"integrity":"sha512-2eI7Ko0tym0ycgqkV7+lDK/Zq1PlORv6vEYLhNhNvdE2hsT0OICs4qvjb16j+94AG/o3TQTr8arWeWCLLXOahg==","signatures":[{"sig":"MEYCIQD4VhyFKWycs+cNwJfuIgjB9gx8oBxRgx4z6EXgr7Z5/gIhALyTHNnxesYVgl8P0trtSmv/djZFj7TYzCHPUYhEPhvc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":317373},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"9d9542744d7fdcd852635b75035c21d57486907b","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","passport":"0.6.0","memorystore":"^1.6.7","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","http-proxy-agent":"^7.0.2","command-line-args":"^5.2.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.1.3_1741858770130_0.8410767862510138","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"@flowfuse/device-agent","version":"3.2.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.2.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"ab93ec46156b49aaff42242a307acb8f57ba7b65","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.2.0.tgz","fileCount":41,"integrity":"sha512-aNcV3ciVc9sKJmLG6uRyrJxCladUGKirs9XoEkG9vBd3FUz6wAr+jmsgUl1+i8oOntkLW+4avUf0sHJshPYmOw==","signatures":[{"sig":"MEUCIDk41o935odYGWqcvksbTWWZJkVFbhMTttfDeC7DbcBtAiEAp+bxYf3HElRmgfmGzdCaHiHqVialQmIvnZT3/Y4d+GU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":320124},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"70b3ce9bb3226bbaa698b7b03f7b41f9df491d31","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","passport":"0.6.0","memorystore":"^1.6.7","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","http-proxy-agent":"^7.0.2","command-line-args":"^5.2.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.2.0_1743171366621_0.45253109710522854","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"@flowfuse/device-agent","version":"3.3.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.3.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"0e3591861804d81782b772dcaf3ae16bfaabf53e","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.3.0.tgz","fileCount":42,"integrity":"sha512-xNrArVidSKsqKc1pR2y2o8Yf67jlr4QgjGLr13LY9C+b1lvum2YNbulpX0+yoLjsJVN9n3E5M+1lt896upQ+9Q==","signatures":[{"sig":"MEQCIB7Z4xfKQEu2t+DIE6BfpvglO7zf3AKwetYvH9/alcFwAiBAvuBhwbUC+HsJ57JKY9yXWT0zDj8s4ym0fR3ifQZL3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":341066},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"74da6f26b33aa5d29cac99237aa4eb416a6c1a57","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","passport":"0.6.0","memorystore":"^1.6.7","proxy-from-env":"^1.1.0","@inquirer/input":"^4.1.9","express-session":"^1.18.0","passport-oauth2":"^1.6.1","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^5.2.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.3.0_1746696671587_0.8041822205377849","host":"s3://npm-registry-packages-npm-production"}},"3.3.1":{"name":"@flowfuse/device-agent","version":"3.3.1","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.3.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"8ff88fb9829d4aa3aa832043e28f9332b8ca733b","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.3.1.tgz","fileCount":42,"integrity":"sha512-kdRbLmyHg19pC6q88dgL8i7N9oRPPj7zBIPAYI2IMziuJyfhFHsvQuxm7lhauQF6tQdbexH8xVeOBLv7jWudDg==","signatures":[{"sig":"MEYCIQCelEa6ECBI1NBceqUPSPmC/JjI/ghwoqdEdyKdF26nZAIhAPTTAVPIUcK+fGGaaJ/CCPm6Zwv2eZCls3aUtxG+uC1S","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":341318},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"c34d0f9332de96f00ec9fdd0ed0d0c62705b974b","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","passport":"0.6.0","memorystore":"^1.6.7","proxy-from-env":"^1.1.0","@inquirer/input":"^4.1.9","express-session":"^1.18.0","passport-oauth2":"^1.6.1","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^5.2.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.3.1_1746706548542_0.7631891353361591","host":"s3://npm-registry-packages-npm-production"}},"3.3.2":{"name":"@flowfuse/device-agent","version":"3.3.2","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.3.2","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"53d69d930cce29d5fc4f889e1769de102ab701f3","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.3.2.tgz","fileCount":42,"integrity":"sha512-2eRyVaCnqND2lWfwO8J22+Vut9dPXvj4BCDryuB2RWXmpSKxONV7cArRVc90yb3jIgwhVdcVLd7jXzwzGazYow==","signatures":[{"sig":"MEQCICx0JPhA2oLVHuhDCiCX4oDdDVoJrK+dKt4BKKse5XV4AiB45z6niA13B2U5qBE7nL3IncJvqWXdUyCMBID3kdDlsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":342830},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"a82f3082f6f9a45c348a7d93a3ab59aee40431cc","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","passport":"0.6.0","memorystore":"^1.6.7","proxy-from-env":"^1.1.0","@inquirer/input":"^4.1.9","express-session":"^1.18.0","passport-oauth2":"^1.6.1","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^5.2.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^6.1.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.3.2_1749127949260_0.49357472924628465","host":"s3://npm-registry-packages-npm-production"}},"3.4.0":{"name":"@flowfuse/device-agent","version":"3.4.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.4.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"cb68804d93d8609af20fa4350f5efb0b6803b0ad","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.4.0.tgz","fileCount":69,"integrity":"sha512-QoqPxzo2I6c/m1efeJAj69RxBlCzlC5tPF0MUrZtZFA4FP3ovYIyZpJlUmsZU4Vkvnl3ReacEpiEb4w/DEvh6w==","signatures":[{"sig":"MEUCICBJyqBfOKVPq5frN9CH8Rbefvuc3TwSx059RP5C+VQ7AiEAjlZ5otMriyeh8JnbdBUgsoThbDVp7rRSvA0wg7ry3/Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":537344},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"fb13d861c01dea3d63ad482f5a745302e93d433a","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","passport":"0.6.0","memorystore":"^1.6.7","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","yoctocolors-cjs":"^2.1.2","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^6.0.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^7.0.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.4.0_1751534715508_0.7850227648026631","host":"s3://npm-registry-packages-npm-production"}},"3.5.0":{"name":"@flowfuse/device-agent","version":"3.5.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.5.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"83488414f9eb3374f66505e969d78211f9e6315d","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.5.0.tgz","fileCount":69,"integrity":"sha512-20GAJJnUJmvIfBkAPANilzfR/Yt1ukJJ/bzlmKzpiJcFlbSsZ3Bu3bFh6Q0sVhp3zWUbB9zpGZylEU6g9EWCVA==","signatures":[{"sig":"MEUCIQDLnvd4SnnrolLgI1Fwy9AvapbfTrLquj6uoQqFW1n40AIgPjwnPN960lAsct+vDg6v8H1ENKx68f2LcF2iwIfcQLE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":539123},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"58dcb5b632660917a589358ffb9d335625b289d9","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","passport":"0.6.0","memorystore":"^1.6.7","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","yoctocolors-cjs":"^2.1.2","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^6.0.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^7.0.3"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.5.0_1753952526634_0.2177182756080771","host":"s3://npm-registry-packages-npm-production"}},"3.6.0":{"name":"@flowfuse/device-agent","version":"3.6.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.6.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"1754f21f84045d120905ce937a080e8a237a5a4b","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.6.0.tgz","fileCount":74,"integrity":"sha512-ZV3CNNJwGFDtrYtc+4JCVzV+O4d0BZNA2c8jov51akqCZUkRCYO/nPklCPO9UnFGJoquU2i6rMBfTluJGNPcGQ==","signatures":[{"sig":"MEUCIQDJ4eCC6CjxHUw8bxNqBYpeiOp6QQif9OEd/sz3bMr84wIgN4KVu3eNviDNWNvowpPcCxDw90GRGMmGVrNeV8j14pc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":551647},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"45a96ddccd7d4051f9e72c53d6859ac7b22522cc","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","passport":"0.6.0","mnemonist":"^0.40.3","memorystore":"^1.6.7","prom-client":"^15.1.3","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","yoctocolors-cjs":"^2.1.2","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^6.0.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^7.0.3","parse-prometheus-text-format":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.6.0_1755510202214_0.23374621033744147","host":"s3://npm-registry-packages-npm-production"}},"3.6.1":{"name":"@flowfuse/device-agent","version":"3.6.1","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.6.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"5d39b4785390da7444499c29f76e6967f8f6430d","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.6.1.tgz","fileCount":74,"integrity":"sha512-21qOSdpxWRs8Ce5HpgNft/zoknS0iBqI6IMwvi/fjz0p+hp+Qj9QNEN/Qdbb7YwZZVhtcFWt6d4PqBgS3dq1/g==","signatures":[{"sig":"MEQCIG00VRpHUKgJRIAYDLi9LsmvfFjfzVIYRyIyL21sL9oRAiAHfglXWrfFUWpLP9hZ/EkkuCqcsU4MLU/E4S1ZKYOq3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":564144},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"80da6607d70db800ca2f5e3a20587755a651b91d","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","passport":"0.6.0","mnemonist":"^0.40.3","memorystore":"^1.6.7","prom-client":"^15.1.3","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","yoctocolors-cjs":"^2.1.2","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^6.0.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^7.0.3","parse-prometheus-text-format":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.6.1_1756715884029_0.5519160810247474","host":"s3://npm-registry-packages-npm-production"}},"3.7.0":{"name":"@flowfuse/device-agent","version":"3.7.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.7.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"d31afc31b12695d30c0f3bbdfd137e2cc0891743","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.7.0.tgz","fileCount":77,"integrity":"sha512-mnfdrq4hmZF4hOvkwF67iSksKgFLXBV7XmAmFPtKR6Pn2UCh/uE4IhHUiIudvTV9VEg8L7q/0EI5jTZrTtPy+A==","signatures":[{"sig":"MEUCIQCqO9Dx5wFFxuCx9vqkuzd8Es7rxMxXHlfguF0QfEVEvgIgbcBjsYfoW9gqt4p/iI0e5+FQ6c4MQEAvnDWWQTHI6g4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":597202},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"55d9e231bcc67ecdd2da940d1b2c17339860c3b9","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","passport":"0.6.0","mnemonist":"^0.40.3","memorystore":"^1.6.7","prom-client":"^15.1.3","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","yoctocolors-cjs":"^2.1.2","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^6.0.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^7.0.3","parse-prometheus-text-format":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.7.0_1758788297015_0.32803428182885463","host":"s3://npm-registry-packages-npm-production"}},"3.7.1":{"name":"@flowfuse/device-agent","version":"3.7.1","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.7.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"1f3e7275a24e6c83faa2aff8c3023d2a480cc973","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.7.1.tgz","fileCount":77,"integrity":"sha512-m4BUaEocLcNUcqddKYwke3O+j4Cv9jkE1nmtMjssydwvfbynFrPwngdZeVMKT5i6SgOv8NS4GuEWAs7WLy1NSQ==","signatures":[{"sig":"MEYCIQCxFBceveM0X+fHRT1rY1ePeJZBvLlf3sV2XTHaPYJx6AIhANwDgOXGfteyl9UPvc2+II8q3mtrA5kYnoCtA4VIHaRT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":600037},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"abcc6025f6bad8223011ef89a0f6c330f9d9aa00","scripts":{"dev":"nodemon index.js","lint":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\"","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c .eslintrc \"*.js\" \"lib/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.html\" \"test/**/*.js\" --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","passport":"0.6.0","mnemonist":"^0.40.3","memorystore":"^1.6.7","prom-client":"^15.1.3","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","yoctocolors-cjs":"^2.1.2","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^6.0.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^7.0.3","parse-prometheus-text-format":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^8.25.0","rewire":"^7.0.0","should":"^13.2.3","eslint-plugin-html":"^7.1.0","eslint-plugin-node":"^11.1.0","aedes-server-factory":"^0.2.1","eslint-config-standard":"^17.0.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.7.1_1763646585287_0.9319042862328579","host":"s3://npm-registry-packages-npm-production"}},"3.7.2":{"name":"@flowfuse/device-agent","version":"3.7.2","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.7.2","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"9847fdc500c75ecb7584708a1161806f7b7beef7","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.7.2.tgz","fileCount":77,"integrity":"sha512-bV7pPtFUmZxh5VhgF83XwhsFzjGEA2V4eujunRp6jshAQkcv1uTnQltjjotyNw9Of1Zitbm+jpfFUe+c8WmfZA==","signatures":[{"sig":"MEUCIH8okWO5UFU5/c+uwyouhSmrIIacUaCVjgB1Cts09rliAiEA6MlhjvxTLblxJaRNFSC4+iSEs9Qjv1VHpZg8SKxP0uI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":604883},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"2c1b77f66d67ec0eb401d1094bf114f2155b1a6d","scripts":{"dev":"nodemon index.js","lint":"eslint -c eslint.config.mjs","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c eslint.config.mjs --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","passport":"0.6.0","mnemonist":"^0.40.3","memorystore":"^1.6.7","prom-client":"^15.1.3","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","yoctocolors-cjs":"^2.1.2","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^6.0.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^7.0.3","parse-prometheus-text-format":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^9.39.2","rewire":"^7.0.0","should":"^13.2.3","globals":"^16.5.0","@eslint/js":"^9.39.2","neostandard":"^0.12.2","aedes-server-factory":"^0.2.1","eslint-plugin-no-only-tests":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.7.2_1769530169946_0.5555183861317841","host":"s3://npm-registry-packages-npm-production"}},"3.8.0":{"name":"@flowfuse/device-agent","version":"3.8.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.8.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"726ecb1a0397a7420077119bf49c2adb0acdeeff","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.8.0.tgz","fileCount":77,"integrity":"sha512-yr0wY4ZaT/JpGnc+bOznKEQ+0iLM3nIrSGWBC62AhWwC5SDIsYmRufwVV8YXBWhCRNWVkTV7AMPzTIVukx1MRg==","signatures":[{"sig":"MEQCIF8oDJYY9Qo1aCKB/F6i4I1CGQwNupHKjI51xW+6IBMdAiAmSdSmBdVjHf0DN9DYeB8up9Us3rI+QEmqZV6vtLu9qA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":605745},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"083bbe8a250b03f63600409b947a59495e4a690d","scripts":{"dev":"nodemon index.js","lint":"eslint -c eslint.config.mjs","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c eslint.config.mjs --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","passport":"0.6.0","mnemonist":"^0.40.3","memorystore":"^1.6.7","prom-client":"^15.1.3","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","yoctocolors-cjs":"^2.1.2","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^6.0.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^7.0.3","parse-prometheus-text-format":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^9.39.2","rewire":"^7.0.0","should":"^13.2.3","globals":"^16.5.0","@eslint/js":"^9.39.2","neostandard":"^0.12.2","aedes-server-factory":"^0.2.1","eslint-plugin-no-only-tests":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.8.0_1770894198626_0.33016024552323686","host":"s3://npm-registry-packages-npm-production"}},"3.8.1":{"name":"@flowfuse/device-agent","version":"3.8.1","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.8.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"ad8afa7d573abbfbc057ae163dc131f5d88b8395","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.8.1.tgz","fileCount":77,"integrity":"sha512-7UsCq7M9dRkVypIYlZbYBQd6kzlAvyANAq3mwOX9QPAd8mDZPcSiiuJTtl0/tCtkwNzDMo3fhlHn2WtBAwx1qA==","signatures":[{"sig":"MEUCIQCXT7V8wA3XQSDQleNn0mMSay/gdAxlooFIs95lYIApFAIgawx88ahlpiDzFxEzFU58b4cdRIvM/WZ3jiu0mnit7mQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":606665},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"6caa41be2a876c8e2ec10ff4994d22e26f8a472c","scripts":{"dev":"nodemon index.js","lint":"eslint -c eslint.config.mjs","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c eslint.config.mjs --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","passport":"0.6.0","mnemonist":"^0.40.3","memorystore":"^1.6.7","prom-client":"^15.1.3","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","yoctocolors-cjs":"^2.1.2","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^6.0.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^7.0.3","parse-prometheus-text-format":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^9.39.2","rewire":"^7.0.0","should":"^13.2.3","globals":"^16.5.0","@eslint/js":"^9.39.2","neostandard":"^0.12.2","aedes-server-factory":"^0.2.1","eslint-plugin-no-only-tests":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.8.1_1770992344120_0.3600824952572108","host":"s3://npm-registry-packages-npm-production"}},"3.8.2":{"name":"@flowfuse/device-agent","version":"3.8.2","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.8.2","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"d91d57db0482a1faa04a330fea203c12281c966a","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.8.2.tgz","fileCount":77,"integrity":"sha512-P7qbTWGTVK1BWdblP2PqaX9Yw9HSJYsGur77e3wfiFVjKKl+ZajS88NWeOW85PEAZjHISb8Qa6Cins7J57sdxA==","signatures":[{"sig":"MEUCIFi7/sgIKtyt+zHWrUC394bdhCrdjA1c/Pbp2NjL58INAiEA/ReTqrhQEWKHgOxMoxOftGcr/b78uXLNkEMHrq8PPVI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":607444},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"7090ccbb922170712421667d97ed96a0ade8236f","scripts":{"dev":"nodemon index.js","lint":"eslint -c eslint.config.mjs","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c eslint.config.mjs --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","semver":"^7.3.8","passport":"0.6.0","mnemonist":"^0.40.3","memorystore":"^1.6.7","prom-client":"^15.1.3","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","yoctocolors-cjs":"^2.1.2","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^6.0.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^7.0.3","parse-prometheus-text-format":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^9.39.2","rewire":"^7.0.0","should":"^13.2.3","globals":"^16.5.0","@eslint/js":"^9.39.2","neostandard":"^0.12.2","aedes-server-factory":"^0.2.1","eslint-plugin-no-only-tests":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.8.2_1771323566090_0.14891364084295367","host":"s3://npm-registry-packages-npm-production"}},"3.8.3":{"name":"@flowfuse/device-agent","version":"3.8.3","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.8.3","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"56b4dfa9d0d20e7eae987d8e8eaf5fb70b16652c","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.8.3.tgz","fileCount":80,"integrity":"sha512-dg9S/qitMf2lFLAFjQ68Tdotn4aGFhChoIyHllFVzG81SR4QkEn+vLExVwNoEBH76cb/rUtP4b4r3TJHWd2szA==","signatures":[{"sig":"MEYCIQChZtzgOBLdg/Ft+GD8uu/SSyDXQPfbqEpJILodI6xaswIhAKOEVqS9PJ3JvKpQvOjWMNO2mbzliELBEdkXduIpDOD/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":615534},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"b07ae7fd3d7808b1a33e4b248c8e1c2626c61f97","scripts":{"dev":"nodemon index.js","lint":"eslint -c eslint.config.mjs","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c eslint.config.mjs --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","bytes":"^3.1.2","semver":"^7.3.8","passport":"0.6.0","mnemonist":"^0.40.3","memorystore":"^1.6.7","prom-client":"^15.1.3","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","yoctocolors-cjs":"^2.1.2","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^6.0.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^7.0.3","parse-prometheus-text-format":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^9.39.2","rewire":"^7.0.0","should":"^13.2.3","globals":"^16.5.0","@eslint/js":"^9.39.2","neostandard":"^0.12.2","aedes-server-factory":"^0.2.1","eslint-plugin-no-only-tests":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.8.3_1772721344234_0.298688315103923","host":"s3://npm-registry-packages-npm-production"}},"3.9.0":{"name":"@flowfuse/device-agent","version":"3.9.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@3.9.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"1ff5db289b20fd17e48d2e530bf0ef2ce42f8a5c","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-3.9.0.tgz","fileCount":80,"integrity":"sha512-nyfxXbTKd+v00jFKl4ZmRKO+KPMzTQzYsfPh5oGoAcXtSMTTStW7K6YMqvQiE6IzlCApbM3lU4OBcs1ReAdb+w==","signatures":[{"sig":"MEUCIFL9Gk06ijrfs2CUmyiur7a1xb4Gs4X4A2NQnrwhaxZIAiEAuffuP3g7yVGoqUk3R38ne7L36FQNf7UohJ7XKJ2Rc6I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":623237},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"7a1235592c169a28e5cb1c7f8fab0fa82f8f616a","scripts":{"dev":"nodemon index.js","lint":"eslint -c eslint.config.mjs","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c eslint.config.mjs --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"11.13.0","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","bytes":"^3.1.2","semver":"^7.3.8","passport":"0.6.0","mnemonist":"^0.40.3","memorystore":"^1.6.7","prom-client":"^15.1.3","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","yoctocolors-cjs":"^2.1.2","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^6.0.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.8.0","command-line-usage":"^7.0.3","parse-prometheus-text-format":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^9.39.2","rewire":"^7.0.0","should":"^13.2.3","globals":"^16.5.0","@eslint/js":"^9.39.2","neostandard":"^0.12.2","aedes-server-factory":"^0.2.1","eslint-plugin-no-only-tests":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_3.9.0_1780580371170_0.8767842101264438","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@flowfuse/device-agent","version":"4.0.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@4.0.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"aaf1ff4410a3afdd4f2016a6fbb491a1f727ccda","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-4.0.0.tgz","fileCount":81,"integrity":"sha512-pjgoL1q4OGznpwqKt6OBWcftcTDaoP1iLLUNQCuZJCUKFxzwog8F+entt+o8qHsuomxM7u7pzBEb2Sjx1Rd8yA==","signatures":[{"sig":"MEUCIQDUGLBrzbq11ZmmKnfxPZv0Nh+VlHNGK58cFruk9+2NJgIgQP6tM4HfzxSx72jojRoTNMp9gjv/EyTPMVk9qm8qqDM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":653705},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"e50eb82e0ca55eb8d96f8f578a772ca0de192dc1","scripts":{"dev":"nodemon index.js","lint":"eslint -c eslint.config.mjs","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c eslint.config.mjs --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"11.13.0","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","bytes":"^3.1.2","semver":"^7.3.8","passport":"0.6.0","mnemonist":"^0.40.3","memorystore":"^1.6.7","prom-client":"^15.1.3","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","yoctocolors-cjs":"^2.1.2","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^6.0.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.11.0","command-line-usage":"^7.0.3","parse-prometheus-text-format":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^9.39.2","rewire":"^7.0.0","should":"^13.2.3","globals":"^16.5.0","@eslint/js":"^9.39.2","neostandard":"^0.12.2","aedes-server-factory":"^0.2.1","eslint-plugin-no-only-tests":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_4.0.0_1782737336269_0.6757401849043603","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"@flowfuse/device-agent","version":"4.0.1","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@4.0.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"fe2fe2bfaeee969d21bc51aebb2bbf2fe98b54f9","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-4.0.1.tgz","fileCount":81,"integrity":"sha512-HP+OYEW7Blwd18omhpPXAMo4E4r2YoW5Otg1aTQ8OSvwU0Q7DuzQVjkZtVlfpKf6xqSA18xsFVHABawL3LN+iw==","signatures":[{"sig":"MEUCIFk/tk6RhZk3GNm5SWLgWnF+Y8sASu77eXOxHx6CBuSIAiEAoly+SuckzoU5D3q9srRdYn5s8xmKlGJQCC9InrKAKOg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":655752},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"4045f3a7d45ad1be2df0ca68550aa8ba7a9cef60","scripts":{"dev":"nodemon index.js","lint":"eslint -c eslint.config.mjs","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c eslint.config.mjs --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"11.16.0","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","bytes":"^3.1.2","semver":"^7.3.8","passport":"0.6.0","mnemonist":"^0.40.3","memorystore":"^1.6.7","prom-client":"^15.1.3","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","yoctocolors-cjs":"^2.1.2","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^6.0.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.11.0","command-line-usage":"^7.0.3","parse-prometheus-text-format":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^9.39.2","rewire":"^7.0.0","should":"^13.2.3","globals":"^16.5.0","@eslint/js":"^9.39.2","neostandard":"^0.12.2","aedes-server-factory":"^0.2.1","eslint-plugin-no-only-tests":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_4.0.1_1784123537692_0.8400812833412299","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"@flowfuse/device-agent","version":"4.1.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@4.1.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"071eee2ea005fb8674feb6f995034fe0fee8481e","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-4.1.0.tgz","fileCount":81,"integrity":"sha512-Qj6pTTqiC/RBuqzQPHj+Ro1RDTDCWkz1s16tHyaxNoXyXOKF7SaO8g7SL397Gh/AKgaWuhPFFlY5FCmbcaasfg==","signatures":[{"sig":"MEQCIA6wsLSvvLiomAJ2oagBE/HhYMTJJ18LlqcPPMbaDTNfAiBS9x/uSgdN0ft5COSm2L/IjUBSfH4LqgBqJiasFpHG3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":662666},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"d8ddd70c1fb46178612db3e8422ce5c36949a2f1","scripts":{"dev":"nodemon index.js","lint":"eslint -c eslint.config.mjs","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c eslint.config.mjs --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"11.16.0","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","bytes":"^3.1.2","semver":"^7.3.8","passport":"0.6.0","mnemonist":"^0.40.3","memorystore":"^1.6.7","prom-client":"^15.1.3","proxy-from-env":"^1.1.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","yoctocolors-cjs":"^2.1.2","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^6.0.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.11.0","command-line-usage":"^7.0.3","parse-prometheus-text-format":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^9.39.2","rewire":"^7.0.0","should":"^13.2.3","globals":"^16.5.0","@eslint/js":"^9.39.2","neostandard":"^0.12.2","aedes-server-factory":"^0.2.1","eslint-plugin-no-only-tests":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_4.1.0_1784834611529_0.044881393232092615","host":"s3://npm-registry-packages-npm-production"}},"4.2.0":{"name":"@flowfuse/device-agent","version":"4.2.0","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@4.2.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"a8f9d5ec6cc6b3ef5d07b4fbee7d450c23415b79","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-4.2.0.tgz","fileCount":81,"integrity":"sha512-lLQ5uiUHMLaxd1JH+c5e9vKaLCELlz90IYtPEDct2TPvGmCZkeZVgl2K86dlPsWCFT4SxYnKRCtlkny+GDDA0g==","signatures":[{"sig":"MEQCIFZ+85DsNnImSTqTd04YNwT8j+4GFbRnACTXBizX19kVAiBJ7b5bwljXxGunimd0YV/9Fa2rjO2j7VB+7y/w8XUO0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":683336},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"d279f5cc01c56e05d3b880bf977b0ca0e78d0138","scripts":{"dev":"nodemon index.js","lint":"eslint -c eslint.config.mjs","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c eslint.config.mjs --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"11.16.0","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","bytes":"^3.1.2","semver":"^7.3.8","passport":"0.6.0","mnemonist":"^0.40.3","memorystore":"^1.6.7","prom-client":"^15.1.3","proxy-from-env":"^1.1.0","@inquirer/input":"^4.2.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","yoctocolors-cjs":"^2.1.2","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^6.0.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.11.0","command-line-usage":"^7.0.3","parse-prometheus-text-format":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^9.39.2","rewire":"^7.0.0","should":"^13.2.3","globals":"^16.5.0","@eslint/js":"^9.39.2","neostandard":"^0.12.2","aedes-server-factory":"^0.2.1","eslint-plugin-no-only-tests":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_4.2.0_1785338402762_0.5729648033892099","host":"s3://npm-registry-packages-npm-production"}},"4.2.1":{"name":"@flowfuse/device-agent","version":"4.2.1","keywords":["flowfuse","node-red"],"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","_id":"@flowfuse/device-agent@4.2.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://github.com/FlowFuse/device-agent#readme","bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"dist":{"shasum":"8e0c9a7639ed24db2383182b1e76132c77e904dc","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-4.2.1.tgz","fileCount":83,"integrity":"sha512-yUlY/ciuKtu02m99AQkdJhZUx/Mf+vxC/LSJGIfqahXscmeYshflTQXOenqw6TFmjoT/gAkv6AYSe8u6pNVhxw==","signatures":[{"sig":"MEUCIQDQsy6C4zDB+0n/gVkGQWx9fQGUCuuWIwE5Oc0k295viAIgRmPaErqi9F5CRKeRfodIZXz6VEodHUfxx97/Gn23lI4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":689124},"main":"index.js","engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"c9fd5d1c16b42a9fd78f2bc6eeeb3733d5027fa1","scripts":{"dev":"nodemon index.js","lint":"eslint -c eslint.config.mjs","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c eslint.config.mjs --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"11.17.0","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","bytes":"^3.1.2","semver":"^7.3.8","passport":"0.6.0","mnemonist":"^0.40.3","memorystore":"^1.6.7","prom-client":"^15.1.3","proxy-from-env":"^1.1.0","@inquirer/input":"^4.2.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","yoctocolors-cjs":"^2.1.2","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^6.0.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.11.0","command-line-usage":"^7.0.3","parse-prometheus-text-format":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^0.49.0","mocha":"^10.0.0","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^9.39.2","rewire":"^7.0.0","should":"^13.2.3","globals":"^16.5.0","@eslint/js":"^9.39.2","neostandard":"^0.12.2","aedes-server-factory":"^0.2.1","eslint-plugin-no-only-tests":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/device-agent_4.2.1_1786957135908_0.942661015330007","host":"s3://npm-registry-packages-npm-production"}},"4.2.2":{"_id":"@flowfuse/device-agent@4.2.2","bin":{"flowfuse-device-agent":"index.js","flowforge-device-agent":"index.js"},"bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"dist":{"shasum":"dc8f118272e46036c2bababd896b65970e2a40a5","tarball":"https://registry.npmjs.org/@flowfuse/device-agent/-/device-agent-4.2.2.tgz","fileCount":87,"integrity":"sha512-avWNCwMlXM5SP+BVa9AzWMBgD5bgyuO8GlltTjnYv8zZGArbHJ5IFK8XSV2kc0hgBKvPycoxa1iDBAkqgtlS7w==","signatures":[{"sig":"MEQCIDaJt8W5dBg9aaX+YIXHUSJtyNaa+Zmj8KyF29Dz9Hf2AiBldWacmWeCCGY97GQPdM68i0AZDe6CYEnRPd5Je6lRcA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFA1IOswDJJJgFbnofnlashvcn6/V4KvG0HipbcWCjkHAiEAuWus8sB31f350WoLB6g/B/goJdjD4Qg0Gedb0eomEp0="}],"unpackedSize":724664},"main":"index.js","name":"@flowfuse/device-agent","author":{"name":"FlowFuse Inc."},"engines":{"node":">=18.x"},"exports":{"./adminAuth":"./lib/auth/adminAuth.js","./auditLogger":"./lib/auditLogger/index.js","./libraryPlugin":"./lib/plugins/libraryPlugin.js"},"gitHead":"0f5a510941039ed2b0aba6d5aa8860eea7d7096b","license":"Apache-2.0","scripts":{"dev":"nodemon index.js","lint":"eslint -c eslint.config.mjs","test":"npm run test:lib && npm run test:frontend","start":"node index.js","lint:fix":"eslint -c eslint.config.mjs --fix","test:lib":"mocha 'test/unit/**/*_spec.js'","test:frontend":"mocha 'test/unit/frontend/**/*.spec.js'"},"version":"4.2.2","_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"homepage":"https://github.com/FlowFuse/device-agent#readme","keywords":["flowfuse","node-red"],"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"_npmVersion":"11.19.0","description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","directories":{},"maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.13.0","got":"^11.8.6","mqtt":"^5.10.1","yaml":"^2.1.1","bytes":"^3.1.2","semver":"^7.3.8","passport":"0.6.0","mnemonist":"^0.40.3","memorystore":"^1.6.7","prom-client":"^15.1.3","proxy-from-env":"^1.1.0","@inquirer/input":"^4.2.0","express-session":"^1.18.0","passport-oauth2":"^1.6.1","yoctocolors-cjs":"^2.1.2","@inquirer/select":"^4.2.0","http-proxy-agent":"^7.0.2","@inquirer/confirm":"^5.1.9","command-line-args":"^6.0.1","https-proxy-agent":"^7.0.4","@flowfuse/nr-theme":"^1.11.0","command-line-usage":"^7.0.3","parse-prometheus-text-format":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"aedes":"^1.2.0","mocha":"^12.0.1","proxy":"^2.1.1","sinon":"^14.0.0","eslint":"^9.39.2","rewire":"^7.0.0","should":"^13.2.3","globals":"^16.5.0","@eslint/js":"^9.39.2","neostandard":"^0.12.2","aedes-server-factory":"^0.2.1","eslint-plugin-no-only-tests":"^3.3.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/device-agent_4.2.2_1790084751378_0.0094372813072654"}}},"time":{"created":"2023-11-08T14:51:33.185Z","modified":"2026-09-22T13:45:51.788Z","1.13.1":"2023-11-08T14:51:33.536Z","1.13.2":"2023-11-09T13:33:16.004Z","1.13.3":"2023-11-09T14:33:01.591Z","1.14.0":"2023-11-23T10:24:34.151Z","1.15.0":"2023-12-21T10:25:30.582Z","2.0.0":"2024-01-18T10:35:26.546Z","2.1.0":"2024-02-06T10:07:36.590Z","2.2.0":"2024-02-08T11:48:27.055Z","2.3.0":"2024-03-14T11:42:44.860Z","2.3.1":"2024-03-14T16:59:48.285Z","2.3.2":"2024-03-28T10:47:16.650Z","2.4.0":"2024-04-11T08:52:13.842Z","2.4.1":"2024-05-03T09:53:02.161Z","2.5.0":"2024-06-14T14:49:19.032Z","2.6.0":"2024-07-12T12:56:30.358Z","2.7.0":"2024-08-01T08:31:34.009Z","2.8.0":"2024-08-29T09:08:52.812Z","3.0.0":"2024-11-08T11:07:02.098Z","3.0.1":"2024-11-21T10:00:28.646Z","3.0.2":"2024-12-19T09:25:32.436Z","3.1.0":"2025-02-12T16:09:51.967Z","3.1.1":"2025-02-13T10:13:40.552Z","3.1.2":"2025-02-14T15:26:51.115Z","3.1.3":"2025-03-13T09:39:30.368Z","3.2.0":"2025-03-28T14:16:06.877Z","3.3.0":"2025-05-08T09:31:11.785Z","3.3.1":"2025-05-08T12:15:48.743Z","3.3.2":"2025-06-05T12:52:29.459Z","3.4.0":"2025-07-03T09:25:15.694Z","3.5.0":"2025-07-31T09:02:06.823Z","3.6.0":"2025-08-18T09:43:22.393Z","3.6.1":"2025-09-01T08:38:04.250Z","3.7.0":"2025-09-25T08:18:17.248Z","3.7.1":"2025-11-20T13:49:45.508Z","3.7.2":"2026-01-27T16:09:30.155Z","3.8.0":"2026-02-12T11:03:18.835Z","3.8.1":"2026-02-13T14:19:04.288Z","3.8.2":"2026-02-17T10:19:26.258Z","3.8.3":"2026-03-05T14:35:44.425Z","3.9.0":"2026-06-04T13:39:31.393Z","4.0.0":"2026-06-29T12:48:56.423Z","4.0.1":"2026-07-15T13:52:17.859Z","4.1.0":"2026-07-23T19:23:31.719Z","4.2.0":"2026-07-29T15:20:02.941Z","4.2.1":"2026-08-17T08:58:56.071Z","4.2.2":"2026-09-22T13:45:51.467Z"},"bugs":{"url":"https://github.com/FlowFuse/device-agent/issues"},"author":{"name":"FlowFuse Inc."},"license":"Apache-2.0","homepage":"https://github.com/FlowFuse/device-agent#readme","keywords":["flowfuse","node-red"],"repository":{"url":"git+https://github.com/FlowFuse/device-agent.git","type":"git"},"description":"An Edge Agent for running Node-RED instances deployed from the FlowFuse Platform","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"readme":"# FlowFuse Device Agent\r\n\r\nThis module provides an agent that runs Node-RED instances deployed from the\r\nFlowFuse platform.\r\n\r\n> [!IMPORTANT]\r\n> The v4 release of the device agent brings some potentially breaking changes:\r\n>\r\n> - The `latest` docker tag now points at a Node.js 22 based container\r\n> - The docker container runs as a non-root user. If you mount an external host directory, ensure it is accessible to the user.\r\n>\r\n> More information about these changes are available in the [docker section](#docker).\r\n\r\n## Prerequisites\r\n\r\n - Node.js v18 or later. Node.js v22 is recommended as the minimum version to use as that is what Node-RED v5 requires.\r\n - A FlowFuse platform to connect to\r\n\r\nFor users that require Node.js v14 and v16 support the v2.x stream will work.\r\n\r\n## Supported Operating Systems\r\n\r\nThe Device Agent can be installed on most Linux distributions, Windows, and MacOS.\r\n\r\n## Installing the Device Agent\r\n\r\nA one-line installer is available for the Device Agent. This will install a Node.js runtime and the device agent, and also set it up to run as a system service.\r\n\r\nMore details available in the [FlowFuse Device Agent Installer documentation](https://flowfuse.com/docs/device-agent/install/device-agent-installer/)\r\n\r\n### Installing with npm\r\n\r\nIf you already have Node.js installed, you can install the agent via npm.\r\n\r\nThe Device Agent is published to the public npm repository as [@flowfuse/device-agent](https://www.npmjs.com/package/@flowfuse/device-agent).\r\n\r\nIt can be installed as a global npm module. This will ensure the agent command is on the path.\r\n\r\nNote: previous versions of the agent were published as `@flowforge/flowforge-device-agent`.\r\n\r\n#### Linux/MacOS\r\n\r\n```bash\r\nsudo npm install -g @flowfuse/device-agent\r\n```\r\n\r\n#### Windows\r\n\r\n```bash\r\nnpm install -g @flowfuse/device-agent\r\n```\r\n\r\n### Docker\r\n\r\nWe publish a Docker container for the Device Agent as `flowfuse/device-agent` on DockerHub.\r\n\r\nContainers are built for a range of Node.js versions and tagged accordingly:  `latest-18`, `latest-20`, `latest-22` and `latest-24`.\r\nWith the Device Agent v4 release, the `latest` tag points to the `latest-22` container.\r\n\r\nWhen running with the container you will need to mount the `device.yml` obtained when [Registering the device](#register-the-device):\r\n\r\n```bash\r\ndocker run --mount type=bind,src=/path/to/device.yml,target=/opt/flowfuse-device/device.yml -p 1880:1880 flowfuse/device-agent:latest\r\n```\r\n\r\nAlternatively, you can mount the entire configuration directory:\r\n\r\n```bash\r\ndocker run --mount type=bind,src=/path/to/config/dir,target=/opt/flowfuse-device -p 1880:1880 flowfuse/device-agent:latest\r\n```\r\n\r\n> [!IMPORTANT]\r\n> **Breaking change in Device Agent v4 — the container now runs as a non-root user.**\r\n>\r\n> From `4.0.0` the image runs as the unprivileged `flowfuse` user (`UID 2000` /\r\n> `GID 2000`) instead of `root`. If you bind-mount a host directory for state\r\n> (e.g. at `/opt/flowfuse-device` to persist `device.yml`, the `project/`\r\n> directory and the module cache), that directory must be **writable by UID\r\n> 2000**, otherwise the agent will fail to start with a permissions error.\r\n>\r\n> Before upgrading, change the ownership of the mounted directory on the host:\r\n>\r\n> ```bash\r\n> sudo chown -R 2000:2000 /path/to/config/dir\r\n> ```\r\n>\r\n> Alternatively, run the container as a UID that already owns the host\r\n> directory (the agent only requires the state directory to be writable by the\r\n> runtime user):\r\n>\r\n> ```bash\r\n> docker run --user $(id -u):$(id -g) ... flowfuse/device-agent:latest\r\n> ```\r\n>\r\n> If you build the image yourself, the user and group IDs can be customised with\r\n> the `FF_UID` and `FF_GID` build arguments.\r\n\r\n## Configuration\r\n\r\nThe agent configuration is provided by a `device.yml` file within its working\r\ndirectory.\r\n\r\n\r\n### Configuration directory\r\n\r\nBy default the agent uses `/opt/flowfuse-device` or `c:\\opt\\flowfuse-device` as \r\nits working directory. This can be overridden with the `-d/--dir` option.\r\n\r\nFor backwards compatibility with previous versions, the agent will use `/opt/flowforge-device`\r\nif it is exists, unless overridden on the command-line.\r\n\r\nNOTE: The device agent will attempt to create the working directory if it is not found,\r\nhowever if an error occurs, the device agent will exit and report a startup error.\r\n\r\n#### Linux/MacOS\r\n\r\n```bash\r\nsudo mkdir /opt/flowfuse-device\r\nsudo chown -R $USER /opt/flowfuse-device\r\n```\r\n\r\n#### Windows (run elevated)\r\n\r\n```bash\r\nmkdir c:\\opt\\flowfuse-device\r\n```\r\n\r\n\r\n### `device.yml` - for a single device\r\n\r\nWhen the device is registered on the FlowFuse platform, a group of configuration\r\ndetails are provided. These can be copied from the platform, downloaded directly\r\nas a yml file or pulled from the FlowFuse server using the command issued by the\r\nplatform when you create a device. More details on this can be found\r\nin the [FlowFuse documentation](https://flowfuse.com/docs/device-agent/introduction/).\r\n\r\nThis file should exist in the working directory as `device.yml`.\r\n\r\nA different config file can be specified with the `-c/--config` option.\r\n\r\nThe file must contain the following options (these are the ones provided by \r\nFlowFuse)\r\n\r\nRequired options   | Description\r\n-------------------|---------------\r\n`deviceId`         | The id for the device on the FlowFuse platform\r\n`token`            | Access Token to connect to the FF platform\r\n`credentialSecret` | Key to decrypt the flow credentials\r\n`forgeURL`         | The base url of the FlowFuse platform\r\n\r\nTo enable MQTT connectivity, the following options are required. They are provided\r\nby the platform if MQTT comms are enabled.\r\n\r\nMQTT options     | Description\r\n-----------------|---------------\r\n`brokerURL`      | The url for the platform broker\r\n`brokerUsername` | The username to connect with - `device:<teamId>:<deviceId>`\r\n`brokerPassword` | The password to connect with\r\n\r\nThe following options can be added:\r\n\r\nExtra options   | Description\r\n----------------|---------------\r\n`interval`      | How often, in seconds, the agent checks in with the platform. Default: 60s\r\n`intervalJitter`| How much, in seconds, to vary the heartbeat +/- `intervalJitter`. Default: 10s\r\n`moduleCache`   | If the device can not access npmjs.org then use the node modules cache in `module_cache` directory. Default `false`\r\n`verbose`       | Enables verbose logging\r\n`jsonLogging`   | Enabled JSON format logs\r\n\r\n#### Node.js options\r\n\r\nUsed to pass options to the Node.js process running Node-RED\r\n\r\n`nodeOptions`    | An array of Node.js command line options. Default is single entry of `--max-old-space-size=512`\r\n\r\n```\r\nnodeOptions:\r\n  - '--max-old-space-size=256'\r\n  - '--use-openssl-ca'\r\n```\r\n\r\n#### Node-RED options\r\n\r\nThe following options are passed through to Node-RED:\r\n\r\nNode-RED options | Description\r\n-----------------|---------------\r\n`port`           | The port to listen on. Default: 1880\r\n`https`          | Enable HTTPS. See below for details\r\n`httpStatic`     | Enable serving of static content from a local path\r\n`httpNodeAuth`   | If set, any endpoints created in Node-RED flows will require this username and password to access them. Default: `false`\r\n`localAuth`      | When configured, local login is possible\r\n\r\n##### `https` configuration\r\n\r\nThe `https` configuration option can be used to enable HTTPS within Node-RED. The values\r\nare passed through to the [Node-RED `https` setting](https://nodered.org/docs/user-guide/runtime/configuration).\r\n\r\nThe `ca`, `key` and `cert` properties can be used to provide custom certificates and keys.\r\nThe values should be set to the contents of the certificate/key.\r\n\r\nAlternatively, the properties `caPath`, `keyPath` and `certPath` can be used instead\r\nto provide absolute paths to files containing the certificates/keys.\r\n\r\n```yml\r\nhttps:\r\n   keyPath: /opt/flowfuse-device/certs/key.pem\r\n   certPath: /opt/flowfuse-device/certs/cert.pem\r\n   caPath: /opt/flowfuse-device/certs/ca.pem\r\n```\r\n\r\n##### `httpStatic` configuration\r\n\r\nThis option can be used to serve content from a local directory.\r\n\r\nIf set to a path, the files in that directory will be served relative to `/`.\r\n\r\n```yml\r\nhttpStatic: /opt/flowfuse-device/static-content\r\n```\r\n\r\nIt is also possible to configure it with a list of directories and the corresponding\r\npath they should be served from.\r\n\r\n```yml\r\nhttpStatic:\r\n  - path: /opt/flowfuse-device/static-content/images\r\n    root: /images\r\n  - path: /opt/flowfuse-device/static-content/js\r\n    root: /js\r\n```\r\n\r\n##### `httpNodeAuth` configuration\r\n\r\nThis option can be used to apply basic auth to HTTP endpoints created in Node-RED.\r\nThis will also protect node-red-dashboard.\r\nFull details can be found in [HTTP Node security documentation](https://nodered.org/docs/user-guide/runtime/securing-node-red#http-node-security).\r\n\r\nExample:\r\n```yml\r\nhttpNodeAuth:\r\n   user: user\r\n   pass: $2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.\r\n```\r\n\r\n##### `localAuth` configuration\r\n\r\nThe recommended way to securely access the Node-RED editor is via FlowFuse platform.\r\nHowever, if you want to enable local login within Node-RED, you can use the `localAuth` configuration.\r\n\r\nExample:\r\n```yml\r\nlocalAuth:\r\n   user: user\r\n   pass: $2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.\r\n```\r\n\r\nNOTE: `localAuth.enabled` can be set to `false` to disable local login without the need to remove the `user` and `pass` properties.\r\n\r\nThe editor is located on the path `/device-editor` e.g. `http://localhost:1880/device-editor`\r\n\r\n\r\n### `device.yml` - for provisioning\r\n\r\nWhen a device should be auto registered on the FlowFuse platform, a group of provisioning\r\nconfiguration details are required. These are generated for you in FlowFuse\r\n**Team Settings** under the **Devices** tab when you create a provisioning token.\r\nThese can be copied from the platform, or downloaded directly as a yml file.\r\n\r\nThis file should be copied into the working directory as `device.yml`.\r\n\r\nA different config file can be specified with the `-c/--config` option.\r\n\r\nThe file must contain the following options (these are the ones provided by \r\nFlowFuse)\r\n\r\nRequired options    | Description\r\n--------------------|---------------\r\n`provisioningName`  | The name of the token\r\n`provisioningTeam`  | The team this device will be registered to\r\n`provisioningToken` | Provisioning Token to connect to the FF platform\r\n`forgeURL`          | The base url of the FlowFuse platform\r\n`deviceName`        | Device Name (optional)\r\n\r\nThe following options can be added:\r\n\r\nExtra options   | Description\r\n----------------|---------------\r\n`interval`      | How often, in seconds, the agent checks in with the platform. Default: 60s\r\n`intervalJitter`| How much, in seconds, to vary the heartbeat +/- `intervalJitter`. Default: 10s\r\n`verbose`       | Enables verbose logging\r\n`jsonLogging`   | Enabled JSON format logs\r\n\r\n## Running\r\n\r\nIf the agent was installed as a global npm module, the command \r\n`flowfuse-device-agent` will be on the path.\r\n\r\nIf the default working directory and config file are being used, then the agent\r\ncan be started with:\r\n\r\n```\r\n$ flowfuse-device-agent\r\n```\r\n\r\nFor information about the available command-line arguments, run with `-h`:\r\n\r\n```\r\nOptions\r\n\r\n  -c, --config file     Device configuration file. Default: device.yml\r\n  -d, --dir dir         Where the agent should store its state. Default: /opt/flowfuse-device\r\n  -i, --interval secs\r\n  -p, --port number\r\n  -m, --moduleCache     Use local npm module cache rather than install\r\n  --node-options        Adds Node.js command line arguments, can be specified multiple times. Must use = e.g. --node-options=\"--max-old-space-size=256\"\r\n\r\nWeb UI Options\r\n\r\n  -w, --ui            Start the Web UI Server (optional, does not run by default)\r\n  --ui-host string    Web UI server host. Default: (0.0.0.0) (listen on all interfaces)\r\n  --ui-port number    Web UI server port. Default: 1879\r\n  --ui-user string    Web UI username. Required if --ui is specified\r\n  --ui-pass string    Web UI password. Required if --ui is specified\r\n  --ui-runtime mins   Time the Web UI server is permitted to run. Default: 10\r\n\r\nSetup command\r\n\r\n  -o, --otc string    Setup device using a one time code\r\n  --otc-no-start      Do not start the agent after setup\r\n  --otc-no-import     Do not ask to import Node-RED flows during setup\r\n  -u, --ff-url url    URL of FlowFuse. Required for setup\r\n\r\nGlobal Options\r\n\r\n  -h, --help          print out helpful usage information\r\n  --version           print out version information\r\n  -v, --verbose       turn on debugging output\r\n  -j, --json-logging  print logs in JSON format\r\n```\r\n\r\n## Running with no access to npmjs.org\r\n\r\nBy default the Device Agent will try and download the correct version of Node-RED and \r\nany nodes required to run the Snapshot that is assigned to run on the device.\r\n\r\nIf the device is being run on an offline network or security policies prevent the \r\nDevice Agent from connecting to npmjs.org then it can be configured to use a pre-cached \r\nset of modules.\r\n\r\nYou can enable this mode by adding `-m` to the command line adding `moduleCache: true` \r\nto the `device.yml` file. This will cause the Device Agent to load the modules from the \r\n`module_cache` directory in the Device Agents Configuration directory as described above.\r\nBy default this will be `/opt/flowfuse-device/module_cache`.\r\n\r\n### Creating a module cache\r\n\r\nTo create a suitable module cache, the device must be assigned to an instance.  You will need to\r\ninstall the modules on a local device with access to npmjs.org, ensuring you use the same\r\nOS and Architecture as your target device, and then copy the modules on to your device.\r\n\r\n1. From the Instance Snapshot page, select the snapshot you want to deploy and select the option to download its `package.json` file.\r\n2. Place this file in an empty directory on your local device.\r\n3. Run `npm install` to install the modules. This will create a `node_modules` directory.\r\n4. On your target device, create a directory called `module_cache` inside the Device Agent Configuration directory.\r\n5. Copy the `node_modules` directory from your local device to the target device so that it is under the `module_cache` directory.\r\n\r\n## Running as a service\r\n\r\nAn example service file is provided [here](https://github.com/FlowFuse/device-agent/tree/main/service).\r\n\r\n## Running the agent with the Web UI enabled\r\n\r\nThe Device Agents Web UI is provided to enable the user to download a device\r\nconfiguration or a provisioning configuration file. This is an optional feature and\r\nis not enabled by default.\r\n\r\nTo enable the UI, use the `-w/--ui` option. This will start a web server on\r\nthe specified host and port. The default host is `0.0.0.0` and the default port is `1879`.\r\n\r\nWhen enabling the UI, a username and password must be provided with the\r\n`--ui-user` and `--ui-pass` options.\r\n\r\nThe UI will only be available for the duration specified by the `--ui-runtime`. By\r\ndefault this is 10 minutes. After this time, the web server will be disabled. The \r\napplication must be restarted to re-enable the UI. You can set this to `0` to \r\ndisable the timeout. This is not recommended.\r\n\r\n## Development\r\n\r\n### Scripts\r\n\r\nThe following scripts are available:\r\n\r\n - `npm start` - Start the agent\r\n - `npm run dev` - Build the agent and watch for changes\r\n - `npm run lint` - Run eslint\r\n - `npm run lint:fix` - Run eslint and fix any issues\r\n - `npm run test` - Run all unit tests\r\n - `npm run test:lib` - Run the unit tests for the lib\r\n - `npm run test:frontend` - Run the unit tests for the frontend\r\n\r\n## Release process\r\n\r\nIn this project, the [Release Please](https://github.com/googleapis/release-please) is used to automatically determine the next release version based on the commit messages in the codebase. \r\n\r\nBy using the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/), the project adheres to a standardized format for commit messages, which `Release Please` uses to determine whether the next release should be a major, minor, or patch release.\r\n\r\n### Components\r\n\r\n1. The `Prepare release` GitHub Action workflow:\r\n\r\n    * A Release Please action that analyzes commit messages to determine the type of release required (major, minor, patch) based on the Conventional Commits specification\r\n    * Creates a pre-release pull request with the proposed version bump and changelog\r\n    * Once merged, automatically updates the version number in `package.json` and creates a new release on GitHub with the appropriate changelog\r\n\r\n2. The `Lint Pull Request Title` GitHub Action workflow:\r\n\r\n    * A workflow that runs on pull request creation and uses the `amannn/action-semantic-pull-request` action to validate that pull request titles follow the Conventional Commits format\r\n    * Together with adjusted default merge commit message, this ensures that all commits merged into the main branch adhere to the expected format, allowing Release Please to function correctly\r\n\r\n\r\n### Pull Request Title Format\r\n\r\nThe Conventional Commits preset expects pull request titles to be in the following format:\r\n\r\n```\r\n<type>(<scope>): <subject>\r\n```\r\n\r\n* Type: Describes the category of the commit. Examples include:\r\n    * `feat`: A new feature (triggers a minor version bump).\r\n    * `fix`: A bug fix (triggers a patch version bump).\r\n    * `perf`: A code change that improves performance (triggers a patch version bump).\r\n    * `refactor`: A code change that neither fixes a bug nor adds a feature (does not trigger a release unless it's accompanied by a BREAKING CHANGE).\r\n    * `docs`: Documentation-only changes (does not trigger a release).\r\n    * `chore`: Changes to the build process or auxiliary tools and libraries (does not trigger a release).\r\n* Scope: An optional part that provides additional context about what was changed (e.g., module, component).\r\n* Subject: A brief description of the changes.\r\n\r\n### Handling Breaking Changes\r\n\r\nTo indicate a breaking change, the exclamation mark `!` should be used immediately after the type/scope:\r\n\r\n* `feat!:,` \r\n* `fix!:`\r\n* `refactor!:`\r\n","readmeFilename":"README.md"}