{"_id":"@corvina/corvina-iot-util","_rev":"17-3dbec9edaf7b9d636982c36748c81beb","name":"@corvina/corvina-iot-util","dist-tags":{"latest":"1.3.0"},"versions":{"1.0.0":{"name":"@corvina/corvina-iot-util","version":"1.0.0","author":{"name":"Flavio Ambrosi"},"license":"ISC","_id":"@corvina/corvina-iot-util@1.0.0","maintainers":[{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},{"name":"fabiofiorio","email":"fabio.fiorio@corvina.io"},{"name":"arrigo.zanette","email":"arrigo.zanette@corvina.io"},{"name":"marcello.bellomi","email":"marcello.bellomi@corvina.io"},{"name":"zanettea","email":"zanettea@gmail.com"}],"bin":{"create-corvina-app":"bin/index.js"},"dist":{"shasum":"a4a94c8541436da1d098060724cc76b27fdd475a","tarball":"https://registry.npmjs.org/@corvina/corvina-iot-util/-/corvina-iot-util-1.0.0.tgz","fileCount":6,"integrity":"sha512-lgyRk2yyVco6xuJ9cxb5ouLua4CIzKNRa20zAU1okI6/fL5A7gUA4cwR1Ds+LiWUtdwzskCCaJGtQWvu2GwenQ==","signatures":[{"sig":"MEQCIF2gBZehHjO5w+xdxkZ2tyK8t/yrlW1HCDGuUHRdp5dCAiA8lVW8AJAaezoiF7Se0tO1h6H9LcdyNCkuRrNk7Nt5wg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21152098},"main":"index.js","gitHead":"ef492bc110e1686d17b5791327eb9978505860ef","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"./cross-arch-compiler.sh","clean":"rm -rf main && rm -rf build/","start":"./build/main.go-linux-amd64","deploy":"npm publish --access public","prepublish":"npm run clean && npm run build"},"_npmUser":{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},"_npmVersion":"10.8.1","directories":{},"_nodeVersion":"22.3.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.21+sha1.1959a18351b811cdeedbd484a8f86c3cc3bbaf72","_npmOperationalInternal":{"tmp":"tmp/corvina-iot-util_1.0.0_1728302707158_0.2327363380004548","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@corvina/corvina-iot-util","version":"1.0.1","author":{"name":"Flavio Ambrosi"},"license":"ISC","_id":"@corvina/corvina-iot-util@1.0.1","maintainers":[{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},{"name":"fabiofiorio","email":"fabio.fiorio@corvina.io"},{"name":"arrigo.zanette","email":"arrigo.zanette@corvina.io"},{"name":"marcello.bellomi","email":"marcello.bellomi@corvina.io"},{"name":"zanettea","email":"zanettea@gmail.com"}],"bin":{"corvina-iot-util":"bin/index.js"},"dist":{"shasum":"b35066bd84d3bc3f7276a666a73b9a308f0d8f09","tarball":"https://registry.npmjs.org/@corvina/corvina-iot-util/-/corvina-iot-util-1.0.1.tgz","fileCount":6,"integrity":"sha512-aJbkjefwnLIEklBaRBZyRELhLmc+I715aX5es3EGkd71RIJXA1gfe5g1r3fY/SU0TFN6e89XWudq8XyHu1KqTA==","signatures":[{"sig":"MEYCIQD9ey9eODkMD6y1i8h6I+og2tjCP4R5i899eZeIjnDwTQIhAL9Hq2vsyRCOS94xprdLycAA2Fc8NDmc3WpOLFK212kp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21152096},"main":"index.js","gitHead":"ef492bc110e1686d17b5791327eb9978505860ef","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"./cross-arch-compiler.sh","clean":"rm -rf main && rm -rf build/","start":"./build/main.go-linux-amd64","deploy":"npm publish --access public","prepublish":"npm run clean && npm run build"},"_npmUser":{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},"_npmVersion":"10.8.1","directories":{},"_nodeVersion":"22.3.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.21+sha1.1959a18351b811cdeedbd484a8f86c3cc3bbaf72","_npmOperationalInternal":{"tmp":"tmp/corvina-iot-util_1.0.1_1728304400381_0.26092698369623535","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@corvina/corvina-iot-util","version":"1.0.2","author":{"name":"Flavio Ambrosi"},"license":"ISC","_id":"@corvina/corvina-iot-util@1.0.2","maintainers":[{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},{"name":"fabiofiorio","email":"fabio.fiorio@corvina.io"},{"name":"arrigo.zanette","email":"arrigo.zanette@corvina.io"},{"name":"marcello.bellomi","email":"marcello.bellomi@corvina.io"},{"name":"zanettea","email":"zanettea@gmail.com"}],"bin":{"corvina-iot-util":"bin/index.js"},"dist":{"shasum":"ce87a3d77453b0d8ec549ddf7af982568900d745","tarball":"https://registry.npmjs.org/@corvina/corvina-iot-util/-/corvina-iot-util-1.0.2.tgz","fileCount":7,"integrity":"sha512-JfCFpZFaQ9eGjHeJcVTPyjCwnrmqfrwuaSGg6aRF4lLxq/tf0uWBxediu/u5e3tOH1Fm/qB76eGnn7I9taM9qw==","signatures":[{"sig":"MEQCIGQG+CaLAvw8Mz92KikJEfOycgUp4oECAvfW2Rlhn46YAiAbLMPRhtiSqt5lKSzTamU5UUiKkZYuuxx3U/hJIS72pA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21152649},"main":"index.js","gitHead":"ef492bc110e1686d17b5791327eb9978505860ef","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"./cross-arch-compiler.sh","clean":"rm -rf main && rm -rf build/","start":"./build/main.go-linux-amd64","deploy":"npm publish --access public","prepublish":"npm run clean && npm run build"},"_npmUser":{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},"_npmVersion":"10.8.1","description":"corvina-iot-util is a utility for corvina iot developers","directories":{},"_nodeVersion":"22.3.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.21+sha1.1959a18351b811cdeedbd484a8f86c3cc3bbaf72","_npmOperationalInternal":{"tmp":"tmp/corvina-iot-util_1.0.2_1728306923181_0.8868546240838753","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@corvina/corvina-iot-util","version":"1.0.3","author":{"name":"Flavio Ambrosi"},"license":"ISC","_id":"@corvina/corvina-iot-util@1.0.3","maintainers":[{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},{"name":"fabiofiorio","email":"fabio.fiorio@corvina.io"},{"name":"arrigo.zanette","email":"arrigo.zanette@corvina.io"},{"name":"marcello.bellomi","email":"marcello.bellomi@corvina.io"},{"name":"zanettea","email":"zanettea@gmail.com"}],"bin":{"corvina-iot-util":"bin/index.js"},"dist":{"shasum":"db9ea980bbc01b2e5cf9bd86a7d8b909e413b05c","tarball":"https://registry.npmjs.org/@corvina/corvina-iot-util/-/corvina-iot-util-1.0.3.tgz","fileCount":7,"integrity":"sha512-rEiDV1QrPYSz+feCRXOkbin5w8DhxPYO3UkzlrHQFRCGKdKR/pFKNgIZP24LYtHLwvte9Pc+0FTnq5PbghlMnA==","signatures":[{"sig":"MEQCIFEZrsWCuxYJmMWDDl8NzQ62BaLIwi2SNLeIpY8PmrHBAiBWEdRScWf6fHGXjZVemYtY+jWdspaAzRvk5YRS7q8Z4Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21152649},"main":"index.js","gitHead":"ef492bc110e1686d17b5791327eb9978505860ef","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"./cross-arch-compiler.sh","clean":"rm -rf main && rm -rf build/","start":"./build/main.go-linux-amd64","deploy":"npm publish --access public","prepublish":"npm run clean && npm run build"},"_npmUser":{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},"_npmVersion":"10.8.1","description":"corvina-iot-util is a utility for corvina iot developers","directories":{},"_nodeVersion":"22.3.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.21+sha1.1959a18351b811cdeedbd484a8f86c3cc3bbaf72","_npmOperationalInternal":{"tmp":"tmp/corvina-iot-util_1.0.3_1728307005752_0.8208164337738209","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"@corvina/corvina-iot-util","version":"1.0.4","author":{"name":"Flavio Ambrosi"},"license":"ISC","_id":"@corvina/corvina-iot-util@1.0.4","maintainers":[{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},{"name":"fabiofiorio","email":"fabio.fiorio@corvina.io"},{"name":"arrigo.zanette","email":"arrigo.zanette@corvina.io"},{"name":"marcello.bellomi","email":"marcello.bellomi@corvina.io"},{"name":"zanettea","email":"zanettea@gmail.com"}],"bin":{"corvina-iot-util":"bin/index.js"},"dist":{"shasum":"6b750db67ba25b240a0519df81b28486f7e9383b","tarball":"https://registry.npmjs.org/@corvina/corvina-iot-util/-/corvina-iot-util-1.0.4.tgz","fileCount":7,"integrity":"sha512-FbleRTKaS9GWsZCWT1wFODiwC25PqhJ+uvyuBuUi9dxezkHokW9DRW7RQ4X3ae/4iOzeP0miiTBGBWghJhL4Ig==","signatures":[{"sig":"MEUCIQDBqGNPaMt0SlR6kawN07KN1cun/jWOrSJJXHAX/0h67gIgYe9eZT0GBuFXrSVv90yOiZw7DcHa21+cdw8PfO2wq1Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21158985},"main":"index.js","gitHead":"9e73134937e45aeb438c89c5a43791907f1a822e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"./cross-arch-compiler.sh","clean":"rm -rf main && rm -rf build/","start":"./build/main.go-linux-amd64","deploy":"npm publish --access public","prepublish":"npm run clean && npm run build"},"_npmUser":{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},"_npmVersion":"10.8.1","description":"corvina-iot-util is a utility for corvina iot developers","directories":{},"_nodeVersion":"22.3.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.21+sha1.1959a18351b811cdeedbd484a8f86c3cc3bbaf72","_npmOperationalInternal":{"tmp":"tmp/corvina-iot-util_1.0.4_1730901331848_0.6237173550351838","host":"s3://npm-registry-packages"}},"1.0.5":{"name":"@corvina/corvina-iot-util","version":"1.0.5","author":{"name":"Flavio Ambrosi"},"license":"ISC","_id":"@corvina/corvina-iot-util@1.0.5","maintainers":[{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},{"name":"fabiofiorio","email":"fabio.fiorio@corvina.io"},{"name":"arrigo.zanette","email":"arrigo.zanette@corvina.io"},{"name":"marcello.bellomi","email":"marcello.bellomi@corvina.io"},{"name":"zanettea","email":"zanettea@gmail.com"}],"bin":{"corvina-iot-util":"bin/index.js"},"dist":{"shasum":"4676076e54f07463bb055f88db6ef3d109501a4d","tarball":"https://registry.npmjs.org/@corvina/corvina-iot-util/-/corvina-iot-util-1.0.5.tgz","fileCount":7,"integrity":"sha512-SesGZrvVtxkTng5DupdGqRa9SpK4rFrmcvWMCp8zJUVStwnGxU9j8QIYYPf5hg9mGCvljRqw8fv4rlVNM6RBsw==","signatures":[{"sig":"MEYCIQDqQidok/T7alPFZYJwSJFrj0/duXJFIwCVy3RnDoae5QIhAIGm7CEcz57hbPlJH6IfatvfhXLsJiZ4xOVtMhA9wfRA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21181065},"main":"index.js","gitHead":"a3b5e21aac9196ba1a5195db759d7a4f9465ecc8","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"./cross-arch-compiler.sh","clean":"rm -rf main && rm -rf build/","start":"./build/main.go-linux-amd64","deploy":"npm publish --access public","prepublish":"npm run clean && npm run build"},"_npmUser":{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},"_npmVersion":"10.8.1","description":"corvina-iot-util is a utility for corvina iot developers","directories":{},"_nodeVersion":"22.3.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.21+sha1.1959a18351b811cdeedbd484a8f86c3cc3bbaf72","_npmOperationalInternal":{"tmp":"tmp/corvina-iot-util_1.0.5_1730904506780_0.9208133979784987","host":"s3://npm-registry-packages"}},"1.0.6":{"name":"@corvina/corvina-iot-util","version":"1.0.6","author":{"name":"Flavio Ambrosi"},"license":"ISC","_id":"@corvina/corvina-iot-util@1.0.6","maintainers":[{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},{"name":"fabiofiorio","email":"fabio.fiorio@corvina.io"},{"name":"arrigo.zanette","email":"arrigo.zanette@corvina.io"},{"name":"marcello.bellomi","email":"marcello.bellomi@corvina.io"},{"name":"zanettea","email":"zanettea@gmail.com"}],"bin":{"corvina-iot-util":"bin/index.js"},"dist":{"shasum":"92d723fbb9b2c8bf9a9386e4310a8143705bebc9","tarball":"https://registry.npmjs.org/@corvina/corvina-iot-util/-/corvina-iot-util-1.0.6.tgz","fileCount":7,"integrity":"sha512-T8dyn6RkC/Mte5DuXbFAdIAWi+LfdclDlcG98sRV349oDDmHn2FUHMPFTDimoEv47TFEjGEOfXyYLNQ614IbXA==","signatures":[{"sig":"MEQCIAXWZ5LWUiR54kI/pTysbU5aHSk5gveOSKmoLUo7u/pPAiByr1WoHVxlVC/T3TP1hCoPaMTb9BD1bDKnWDEWnwtBEw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40820683},"main":"index.js","gitHead":"90c677d876be95af7c9ea6e08a75c72c5214a7da","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"./cross-arch-compiler.sh","clean":"rm -rf main && rm -rf build/","start":"./build/main.go-linux-amd64","deploy":"npm publish --access public","prepublish":"npm run clean && npm run build"},"_npmUser":{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},"_npmVersion":"10.8.1","description":"corvina-iot-util is a utility for corvina iot developers","directories":{},"_nodeVersion":"22.3.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.21+sha1.1959a18351b811cdeedbd484a8f86c3cc3bbaf72","_npmOperationalInternal":{"tmp":"tmp/corvina-iot-util_1.0.6_1730964501909_0.5945271445009113","host":"s3://npm-registry-packages"}},"1.0.7":{"name":"@corvina/corvina-iot-util","version":"1.0.7","author":{"name":"Flavio Ambrosi"},"license":"ISC","_id":"@corvina/corvina-iot-util@1.0.7","maintainers":[{"name":"fabiofiorio","email":"fabio.fiorio@corvina.io"},{"name":"arrigo.zanette","email":"arrigo.zanette@corvina.io"},{"name":"zanettea","email":"zanettea@gmail.com"},{"name":"ambroff","email":"ambrosi.flavio@gmail.com"}],"bin":{"corvina-iot-util":"bin/index.js"},"dist":{"shasum":"665ae4f25394d0220561b1bd82deaef72c092ec7","tarball":"https://registry.npmjs.org/@corvina/corvina-iot-util/-/corvina-iot-util-1.0.7.tgz","fileCount":7,"integrity":"sha512-ZqHY2XrKo7dBlwhgz71p1bQcZd202P669spPInCEOyMo6mpzVhvSiKkns0XHnEjUWdJb+cxA6rTXPMrzHZgcTw==","signatures":[{"sig":"MEYCIQCrsvxpIUVqO1fj40EGz4Vf5sqKRQTuz779sG6oWHgIgAIhAO82eQ3cflI44KUT0QCrBnIiUhb51T8uieOoOyQBOkT7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40821050},"main":"index.js","gitHead":"46636d1c69cbfd692cb5a2ad4c792519f3f978de","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"./cross-arch-compiler.sh","clean":"rm -rf main && rm -rf build/","start":"./build/main.go-linux-amd64","deploy":"npm publish --access public","prepublish":"npm run clean && npm run build"},"_npmUser":{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},"_npmVersion":"10.8.1","description":"corvina-iot-util is a utility for corvina iot developers","directories":{},"_nodeVersion":"22.3.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.21+sha1.1959a18351b811cdeedbd484a8f86c3cc3bbaf72","_npmOperationalInternal":{"tmp":"tmp/corvina-iot-util_1.0.7_1732879040100_0.4535526274784225","host":"s3://npm-registry-packages"}},"1.0.8":{"name":"@corvina/corvina-iot-util","version":"1.0.8","author":{"name":"Flavio Ambrosi"},"license":"ISC","_id":"@corvina/corvina-iot-util@1.0.8","maintainers":[{"name":"fabiofiorio","email":"fabio.fiorio@corvina.io"},{"name":"arrigo.zanette","email":"arrigo.zanette@corvina.io"},{"name":"zanettea","email":"zanettea@gmail.com"},{"name":"ambroff","email":"ambrosi.flavio@gmail.com"}],"bin":{"corvina-iot-util":"bin/index.js"},"dist":{"shasum":"5ebbe45de65a278af3186122062f9cc6f2df4b6d","tarball":"https://registry.npmjs.org/@corvina/corvina-iot-util/-/corvina-iot-util-1.0.8.tgz","fileCount":7,"integrity":"sha512-WzDyIqi+pUXrR3hcr7lNSsrM4Wxf/TIQJPkFVpWvJXJcsu7gJUwklbLkElrUEZFwjjkwWqzZ/n6K5tyj5frnJg==","signatures":[{"sig":"MEUCIQDcuKNm4p/e4c4YqB2P2ur+DV1NYz4aZB98OxGn6QZi2gIgLy6rAGtKNb76p5LkJyfTAWmHI/Xp5VkqB11Nwx62GS8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40822299},"main":"index.js","gitHead":"c8f8468ff9c6fae11a153c3c920bde56075595af","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"./cross-arch-compiler.sh","clean":"rm -rf main && rm -rf build/","start":"./build/main.go-linux-amd64","deploy":"npm publish --access public","prepublish":"npm run clean && npm run build"},"_npmUser":{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},"_npmVersion":"10.8.1","description":"corvina-iot-util is a utility for corvina iot developers","directories":{},"_nodeVersion":"22.3.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.21+sha1.1959a18351b811cdeedbd484a8f86c3cc3bbaf72","_npmOperationalInternal":{"tmp":"tmp/corvina-iot-util_1.0.8_1732879647571_0.48206227875090435","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@corvina/corvina-iot-util","version":"1.1.0","author":{"name":"Flavio Ambrosi"},"license":"ISC","_id":"@corvina/corvina-iot-util@1.1.0","maintainers":[{"name":"fabiofiorio","email":"fabio.fiorio@corvina.io"},{"name":"arrigo.zanette","email":"arrigo.zanette@corvina.io"},{"name":"zanettea","email":"zanettea@gmail.com"},{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},{"name":"fcucino","email":"me@fcucino.dev"}],"bin":{"corvina-iot-util":"bin/index.js"},"dist":{"shasum":"856bdb379a1a12602b74ea42059df93ad12ff8d6","tarball":"https://registry.npmjs.org/@corvina/corvina-iot-util/-/corvina-iot-util-1.1.0.tgz","fileCount":7,"integrity":"sha512-HbrK4O7HogXuo70yozyuGcU2jHjQujrI0EWhX0+6PwnLsuM3/9gjFFNE9r8uavQoIk31LZXKmpVR/JpQd9iY4A==","signatures":[{"sig":"MEQCID9esOJwfJEaLF0t6bTnbbpunaKYONnV9zge4ZJvqEVnAiAPt6rW9FKBbHyygr6ycP9BhFCBIGhL0SHSDUSknksm3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40919679},"main":"index.js","gitHead":"e891170ffe40890e747eaaf91c28dbdf361d5d7e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"./cross-arch-compiler.sh","clean":"rm -rf main && rm -rf build/","start":"./build/main.go-linux-amd64","deploy":"npm publish --access public","prepublish":"npm run clean && npm run build"},"_npmUser":{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},"_npmVersion":"10.8.1","description":"corvina-iot-util is a utility for corvina iot developers","directories":{},"_nodeVersion":"22.3.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.21+sha1.1959a18351b811cdeedbd484a8f86c3cc3bbaf72","_npmOperationalInternal":{"tmp":"tmp/corvina-iot-util_1.1.0_1762874364718_0.3392199916592633","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@corvina/corvina-iot-util","version":"1.1.1","author":{"name":"Flavio Ambrosi"},"license":"ISC","_id":"@corvina/corvina-iot-util@1.1.1","maintainers":[{"name":"fabiofiorio","email":"fabio.fiorio@corvina.io"},{"name":"arrigo.zanette","email":"arrigo.zanette@corvina.io"},{"name":"zanettea","email":"zanettea@gmail.com"},{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},{"name":"fcucino","email":"me@fcucino.dev"}],"bin":{"corvina-iot-util":"bin/index.js"},"dist":{"shasum":"09884371592c624de55dde097aaa676061317f38","tarball":"https://registry.npmjs.org/@corvina/corvina-iot-util/-/corvina-iot-util-1.1.1.tgz","fileCount":7,"integrity":"sha512-gAnCBZBo+lbxsin5ot3kVW3OJmDNnAYk5+tso2qlgvs7kFf+WrKiOElPvzNB2bD5g6haJ/ukNXORS9ltNdf1iQ==","signatures":[{"sig":"MEYCIQCZAAx+0GlbCQ4qm59POFFf126QYVNVj42JgLXJRulcyAIhAPD6deIAmPlEUZP9fcj0z2aWYPvGQIv37LKYRZiZf0Sa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40919207},"main":"index.js","gitHead":"c05a8461a38da1f7340525bcea41c649e3b02d5b","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"./cross-arch-compiler.sh","clean":"rm -rf main && rm -rf build/","start":"./build/main.go-linux-amd64","deploy":"npm publish --access public","prepublish":"npm run clean && npm run build"},"_npmUser":{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},"_npmVersion":"10.8.1","description":"corvina-iot-util is a utility for corvina iot developers","directories":{},"_nodeVersion":"22.3.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.21+sha1.1959a18351b811cdeedbd484a8f86c3cc3bbaf72","_npmOperationalInternal":{"tmp":"tmp/corvina-iot-util_1.1.1_1764084193243_0.8447912760276499","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@corvina/corvina-iot-util","version":"1.2.0","author":{"name":"Flavio Ambrosi"},"license":"ISC","_id":"@corvina/corvina-iot-util@1.2.0","maintainers":[{"name":"fabiofiorio","email":"fabio.fiorio@corvina.io"},{"name":"zanettea","email":"zanettea@gmail.com"},{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},{"name":"jamescorvina","email":"jacopo.vitale@corvina.io"},{"name":"fcucino","email":"me@fcucino.dev"}],"bin":{"corvina-iot-util":"bin/index.js"},"dist":{"shasum":"b548f1d9d93cc1029666215ad741fc9bb821b36a","tarball":"https://registry.npmjs.org/@corvina/corvina-iot-util/-/corvina-iot-util-1.2.0.tgz","fileCount":7,"integrity":"sha512-FvmBoIzAVKET9YwVm/S3G+csGXOjphrVNr8k95Zb/cTz/fPCsubnHUVRShIOElhCutc5WfYPwZX7WoX83/b5Lg==","signatures":[{"sig":"MEUCIAN97G5vvA90BlbYR3IsSy92nH2Nt2wu1LlQJzl8yJPGAiEA2VrwweuwmSxoNJOG0yW7IKt/kqR+zy5Clr0ziebIDV4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49441994},"main":"index.js","gitHead":"68c00c9bc2e1ef8c79f6ff69ed0fb1874c2745c0","scripts":{"test":"go test ./...","build":"./cross-arch-compiler.sh","clean":"rm -rf main && rm -rf build/","start":"./build/main.go-linux-amd64","deploy":"npm publish --access public","prepublish":"npm run clean && npm run build","build:linux":"env GOOS=linux GOARCH=amd64 CGO_ENABLED=1 go build -tags netgo -o build/main.go-linux-amd64 main.go"},"_npmUser":{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},"_npmVersion":"11.17.0","description":"corvina-iot-util is a utility for corvina iot developers","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.21+sha1.1959a18351b811cdeedbd484a8f86c3cc3bbaf72","_npmOperationalInternal":{"tmp":"tmp/corvina-iot-util_1.2.0_1786521613541_0.3367386132219492","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@corvina/corvina-iot-util","version":"1.3.0","main":"index.js","bin":{"corvina-iot-util":"bin/index.js","ci":"bin/index.js"},"scripts":{"clean":"rm -rf main && rm -rf build/","test":"go test ./...","build":"./cross-arch-compiler.sh","build:linux":"env GOOS=linux GOARCH=amd64 CGO_ENABLED=1 go build -tags netgo -o build/main.go-linux-amd64 main.go","start":"./build/main.go-linux-amd64","deploy":"npm publish --access public","prepublish":"npm run clean && npm run build"},"author":{"name":"Flavio Ambrosi"},"license":"ISC","description":"`corvina-iot-util` is the utility of the Corvina IoT team: it creates a local device simulator from a Corvina model, runs it, and inserts historical data into the platform.","packageManager":"yarn@1.22.21+sha1.1959a18351b811cdeedbd484a8f86c3cc3bbaf72","gitHead":"73ddd5431dd466e05b77c7d55f2f965067d171da","_id":"@corvina/corvina-iot-util@1.3.0","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-iJBCSTkLQF+AwfWaYRUaLTMm1cYGdlStJ72/k+rDG7stC5L/a+PVxTPvNlmY/auOdzEleudR6GLuG2R1tDvEzQ==","shasum":"e8ef47c559a6db1c986315e4b919c8bd0739b149","tarball":"https://registry.npmjs.org/@corvina/corvina-iot-util/-/corvina-iot-util-1.3.0.tgz","fileCount":7,"unpackedSize":50548973,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIECWzZijIgbr50XfqN+PUnBbhwSOoi4TRJjUdFv9hpw/AiBoSKUglde1b0IUdV/p1vstySNeQEtORjcnNyt802ik7A=="}]},"_npmUser":{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},"directories":{},"maintainers":[{"name":"fabiofiorio","email":"fabio.fiorio@corvina.io"},{"name":"zanettea","email":"zanettea@gmail.com"},{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},{"name":"jamescorvina","email":"jacopo.vitale@corvina.io"},{"name":"fcucino","email":"me@fcucino.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/corvina-iot-util_1.3.0_1788789441342_0.3521465660710952"},"_hasShrinkwrap":false}},"time":{"created":"2024-10-07T12:05:07.041Z","modified":"2026-09-07T13:57:22.045Z","1.0.0":"2024-10-07T12:05:07.530Z","1.0.1":"2024-10-07T12:33:20.737Z","1.0.2":"2024-10-07T13:15:23.644Z","1.0.3":"2024-10-07T13:16:46.236Z","1.0.4":"2024-11-06T13:55:32.259Z","1.0.5":"2024-11-06T14:48:27.356Z","1.0.6":"2024-11-07T07:28:22.466Z","1.0.7":"2024-11-29T11:17:20.516Z","1.0.8":"2024-11-29T11:27:29.005Z","1.1.0":"2025-11-11T15:19:25.200Z","1.1.1":"2025-11-25T15:23:13.672Z","1.2.0":"2026-08-12T08:00:14.001Z","1.3.0":"2026-09-07T13:57:21.820Z"},"author":{"name":"Flavio Ambrosi"},"license":"ISC","description":"`corvina-iot-util` is the utility of the Corvina IoT team: it creates a local device simulator from a Corvina model, runs it, and inserts historical data into the platform.","maintainers":[{"name":"fabiofiorio","email":"fabio.fiorio@corvina.io"},{"name":"zanettea","email":"zanettea@gmail.com"},{"name":"ambroff","email":"ambrosi.flavio@gmail.com"},{"name":"jamescorvina","email":"jacopo.vitale@corvina.io"},{"name":"fcucino","email":"me@fcucino.dev"}],"readme":"# Corvina IOT util\n\n`corvina-iot-util` is the utility of the Corvina IoT team: it creates a local\ndevice simulator from a Corvina model, runs it, and inserts historical data\ninto the platform.\n\nThe package installs a single binary under two names:\n\n  - **`ci`** — current command set task oriented from version 1.3.0, with commands\n    (`ci device create|start|stop|list|ports|logs|upload`), the API key read\n    once from a configuration file.\n  - **`corvina-iot-util`** — the command set of the versions <= 1.2.0, still\n    working and documented in\n    [The `corvina-iot-util` command set](#the-corvina-iot-util-command-set) at\n    the end of this page.\n\n## Installation\n\n```bash\nnpm install -g @corvina/corvina-iot-util\n```\n\nThe `ci` command is then available in your shell; `ci --help` and\n`ci device <command> --help` describe every command and flag.\n\nWithout installing anything, the same command can be run through `npx`:\n\n```bash\nnpx -p @corvina/corvina-iot-util ci device list\n```\n\nFrom a clone of this repository, `./ci` runs the binary in `build/` for your\nplatform, with no installation at all.\n\n## The `ci` commands\n\n`ci` works on a workspace: every device is a directory of the current\ndirectory, created and then started, stopped and watched by name. The API key\nis read once from a configuration file instead of being pasted into every\ncommand.\n\n### Configuration\n\nSettings shared by all commands are read from the first of these files:\n\n  1. `$CI_CONFIG`\n  2. `./.env` (the workspace root)\n  3. `~/.config/corvina-ci/.env`\n  4. `~/.corvina-ci.env`\n\n```bash\nCORVINA_API_KEY=<your user api key>\nCORVINA_ORG=exor\nCORVINA_BACKEND=app.corvina.cloud\n```\n\nEnvironment variables with the same names override the file. Files containing\n`ACTIVATION_KEY` are skipped, so a device `.env` is never mistaken for the\nconfiguration. The devices are the directories of the current directory, which\ncan be overridden with `CI_WORKSPACE`.\n\n### 1. Create a device from a model\n\n```bash\nci device create --model model.json --name device-001 \\\n  --backend app.corvina.cloud --key 62UY5-8X9SU-CXJLA-4K5B1\n```\n\n  - `--model FILE` the Corvina model, defaults to `model.json`\n  - `--name NAME` name of the device, also used as the directory name\n  - `--key KEY` activation key\n  - `--backend BACKEND` defaults to `CORVINA_BACKEND`\n  - `--no-simulation` create the device with the tag simulation off\n  - `--port N` defaults to the first free port\n\nCreates the directory `device-001/` (named after the device, no renaming\nneeded) with `configuration.json`, `.env` and `run.sh`. `--backend` accepts\nwhat you read in the browser: `app.corvina.cloud`, `corvina.mk`,\n`https://app.dev.corvina.cloud` all work, and the pairing endpoint is derived\nfrom it.\n\n### 2. Start and stop a device\n\n```bash\nci device start device-001 --no-simulation\nci device stop device-001\nci device logs device-001 --lines 100\nci device logs device-001 --follow      # keep printing as the device writes, Ctrl+C to stop\n```\n\n`start` launches `@corvina/device-example` in background, writing its output\nto `device-001/device.log` and its pid to `device-001/.ci.json`. `logs\n--follow` (`-f`) prints the tail and then keeps printing what the device\nwrites, so you can watch a device you just started; it keeps waiting when the\ndevice is stopped, and picks the log up again from the start if the file is\nemptied.\n\n### 3. List the devices\n\n```bash\n$ ci device list\nName        |Status  |Activation Key          |Simulation Tags  |Backend           |Port  |PID\ndevice-001  Run      62UY5-8X9SU-CXJLA-4K5B1  False             app.corvina.cloud  3001   34122\ndevice-002  Stop     AAAAA-AAAAA-AAAAA-AAAAA  True              app.corvina.mk     3002   -\n```\n\nBoth the `device-001/` layout created by `ci` and the older\n`<project>/device-example/` layout are recognised.\n\n`list` also warns when two devices are assigned the same port, which happens\nwith the directories created before ci started assigning them. `ports` shows\nthe port map and what it would change:\n\n```bash\n$ ci device ports\nName        |Port  |Status  |Conflict\ndevice-001  3001   Run      -\ndevice-002  3001   Stop     shared with device-001\ndevice-003  3007   Stop     used by another process\n\ndevice-002: 3001 -> 3002 (shared with device-001)\ndevice-003: 3007 -> 3003 (used by another process)\n\nNothing changed. Run 'ci device ports --fix' to apply.\n```\n\n`--fix` writes the new ports in the `.env` and in the state of each device.\nA running device keeps its port, since it is the one that owns it, and is\nnever rewritten while it runs: stop it first. A port held by a process outside\nthe workspace (a device started by hand from another directory, for instance)\ncounts as a conflict too, because `device-example` dies with `EADDRINUSE`\nbefore even pairing.\n\n### 4. Insert test data\n\nOnce the device is registered on Corvina, insert a previously downloaded data\nfile, replacing the device id it was downloaded from:\n\n```bash\nci device upload device-001 --file data.json --set id=ZKhHM4rT32UyUC-XRVk8rg\n```\n\n  - `--file FILE` the data file, JSON or CSV, defaults to `data.json`\n  - `--set id=<device-id>` override the `deviceId` of every record\n  - `--set model=<Model:version>` override the model of every `modelPath`\n  - `--org ORG` defaults to `CORVINA_ORG`, `--backend` defaults to the device one\n  - `--batch-size N`, `--delay 1s`, `--dry-run`\n\nThe API key comes from the configuration, never from the command line.\n\n---\n\n## The `corvina-iot-util` command set\n\nThese are the commands of the versions <= 1.2.0. They still work — same\nbinary, same package — and are kept for the scripts that already use them; for\na new device or a new data upload, prefer the `ci` commands above.\n\n**USAGE:** `corvina-iot-util [global options] command [command options]`\n\n**create-device-example**:  Create and run a device \n\n  - --model string: The JSON file containing the model configuration\n  - --activation-key string: The activation key of the device\n  - --device-dir string: The directory where the device will be created\n  - --host string: The hostname of the corvina iot server\n  - --start-device: If true, the device will be started after creation\n\n\n```bash\t\ncorvina-iot-util create-device-example \\\n --model=model.json \\\n --activation-key=XXXX-XXXX-XXX-XXX \\\n --host=corvina.mk\n```\n\n**insert-device-data**:  Insert bulk data into a device.\n\n  - --XApiKey string: specify a valide user API key\n  - --file string: specify the path of the file with the data to be inserted\n  - --host string: specify the corvina host. e.g.: corvina.mk\n  - --org string: specify a organization name. e.g.: exor\n  - --device-id string: (optional) specify the device id to override the one in the file\n  - --model-prefix string: (optional) specify the model name to override the one in the file\n  - --batch-size int: (optional) number of data rows sent per request. Defaults to 500. Large payloads are split into multiple requests to avoid gateway timeouts (504).\n  - --delay duration: (optional) pause between consecutive requests to avoid the API rate limiter. Defaults to 1s. Accepts values like `1s`, `500ms`, `2s`.\n\n\nYou can insert bulk data into a device using a JSON or CSV file. \n\nWhen inserting large files, the data is automatically split into batches of `--batch-size` rows (default 500) and sent in multiple requests. This avoids `504 Gateway Time-out` errors caused by sending too much data in a single request. Lower the batch size if you still hit timeouts.\n\nA `--delay` (default `1s`) is applied between consecutive requests to avoid hitting the API rate limiter. Set it to `0` to disable the pause, or increase it if you still get rate-limited.\n\nExample JSON Data Insertion\n\n\n\n```bash\ncorvina-iot-util insert-device-data \\\n  --XApiKey=<api-key> \\\n  --org=<org> \\\n  --host=corvina.cloud \\\n  --file=./<file-name-data-json>\n```\t\n\n````\n\n  {\n    \"deviceId\": \"i05Ofzkn35iSqrEch5lqCg\",\n    \"modelPath\": \"Model:1/Property1\",\n    \"header\": [\n      \"timestamp\",\n      \"value\"\n    ],\n    \"types\": [\n      \"datetime\",\n      \"integer\"\n    ],\n    \"data\": [\n      [\"2024-11-06T12:53:36.000+01:00\", 1 ],\n      [\"2024-11-06T12:53:50.000+01:00\", 2 ],\n    ]\n  },\n  {\n    \"deviceId\": \"i05Ofzkn35iSqrEch5lqCg\",\n    \"modelPath\": \"Model:1/Property2\",\n    \"header\": [\n      \"timestamp\",\n      \"value\"\n    ],\n    \"types\": [\n      \"datetime\",\n      \"integer\"\n    ],\n    \"data\": [\n      [\"2024-11-06T12:53:36.000+01:00\", 10 ],\n      [\"2024-11-06T12:53:50.000+01:00\", 20 ],\n    ]\n  }\n]\n````\t\n\nExample JSON Data Insertion\n\nWhen using CSV data, it is recommended to set the `--device-id` and `--model-prefix` options to override these fields for all rows, ensuring consistency and simplifying the CSV structure.\n\n**Example CSV format:**\n\n```csv\ndeviceId,modelPath,timestamp,value\ni05Ofzkn35iSqrEch5lqCg,Model:1/Property1,2024-11-06T12:53:36.000+01:00,1\ni05Ofzkn35iSqrEch5lqCg,Model:1/Property1,2024-11-06T12:53:50.000+01:00,2\ni05Ofzkn35iSqrEch5lqCg,Model:1/Property2,2024-11-06T12:53:36.000+01:00,10\ni05Ofzkn35iSqrEch5lqCg,Model:1/Property2,2024-11-06T12:53:50.000+01:00,20\n```\n\n**Usage:**\n\n```bash\ncorvina-iot-util insert-device-data \\\n  --XApiKey=<api-key> \\\n  --org=<org> \\\n  --host=corvina.cloud \\\n  --file=./<file-name-data.csv> \\\n  --device-id=<device-id> \\\n  --model-prefix=<model-prefix> \\\n  --batch-size=500 \\\n  --delay=1s\n```\n","readmeFilename":"README.md"}