{"_id":"@alteriom/painlessmesh","_rev":"52-166817bc3b714e9a7f76c2d77d06c52f","name":"@alteriom/painlessmesh","dist-tags":{"latest":"2.1.0"},"versions":{"1.6.1":{"name":"@alteriom/painlessmesh","version":"1.6.1","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.6.1","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"db77309975d7965fe8f595f069f4340780ac64b6","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.6.1.tgz","fileCount":80,"integrity":"sha512-2PYhBH66T/s3/CxcRGqPi/ZFChbtKORbTCkFHLZcohOBfWlJsEk6Ouj1PiBQWzJ774q6sUxqUQHkLpZTTfJhUQ==","signatures":[{"sig":"MEUCIBWBjG1miip3HIx2yNlFrwSQ8IhTdH/tZ0FGyJWqoBhxAiEA7vnjW6K+JOH7hKe+iUc6p1gYCLdz/rgjtZNgLG/+rac=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":537233},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"baab16979021952f095f7a49c9cc8e054abf3b32","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","build":"cmake -G Ninja . && ninja","prebuild":"git submodule update --init","postpublish":"echo 'Package published successfully to NPM!'","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.0.0","@eslint/js":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.6.1_1759196134328_0.08258126843207614","host":"s3://npm-registry-packages-npm-production"}},"1.7.2":{"name":"@alteriom/painlessmesh","version":"1.7.2","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.7.2","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"24a0b311ee5709e650cddad89413e75bee0f7bfc","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.7.2.tgz","fileCount":130,"integrity":"sha512-P5tg56G1Zk/+7njRY/2R+hsJiov996ocHxJreuVGYDX/1vGvgR2lNYNTTRsZE3pRSznhKSbkVhBToDwgRdIzIQ==","signatures":[{"sig":"MEUCIDQs6nCLzHSwF3fmckiSxE+T+Co3MLcMsLScBy8MpEOqAiEAiQHkq9t3CbciFfPEGFVvdKPLBw6yATTLOfkdxm2HwsM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1080756},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"1d0ba8d30536e593dbb12dcc4607c9f5d86e0b37","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.7.2_1760586379071_0.21120562665105203","host":"s3://npm-registry-packages-npm-production"}},"1.7.3":{"name":"@alteriom/painlessmesh","version":"1.7.3","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.7.3","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"3976ce82f9025a14a2d32f312da260d4ed617d93","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.7.3.tgz","fileCount":153,"integrity":"sha512-54ovYVerGGg3/qHOgNoXRnOs7diNmGzfKarj2FhKHanKjPPJHJfn6cgcJiw5vV+fPLLVkWW6YASWqD/7dqkRuw==","signatures":[{"sig":"MEYCIQC0N2uwYkgQS6OGRngEJJK6yRVtr/5pmucdi09CsfkYggIhAMc/YqTlujk7X9bmVBtmfiD7+qoer9HjRcJgUMgEWjRL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1344275},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"beb7fc00e8f7a51476f06788d307019473871f87","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.7.3_1760668663730_0.3734013641547984","host":"s3://npm-registry-packages-npm-production"}},"1.7.4":{"name":"@alteriom/painlessmesh","version":"1.7.4","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.7.4","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"46f0fe8af82250b9210dbd705efed8a394ceae04","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.7.4.tgz","fileCount":1736,"integrity":"sha512-uRs9dBLr9JqnEa4QytGZYIHUhoLGhZEeUtQDDUf5AGR1hSbfMuacu6uvJabjuRxK+1q9cBv7W+HlWi9zmrOKTA==","signatures":[{"sig":"MEQCID3KnOXLb6LNSxjuC0LJQpPeR6qL3cCdTDvmEi9JfeDyAiBT57SuE6TQQ5y4wmecKvbSUAEuvkV60GiliJrbEE36nA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70500315},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"202544113af3f076493d081671ca12d2dfebe9d2","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.7.4_1760890854220_0.48828065081084837","host":"s3://npm-registry-packages-npm-production"}},"1.7.5":{"name":"@alteriom/painlessmesh","version":"1.7.5","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.7.5","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"2ac1378bd913f4a2ef7f8c59ad1092608bf2ed8b","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.7.5.tgz","fileCount":165,"integrity":"sha512-9G0JEF8pOnGQn+juYKeUc0XwUoMfTUqbddQwMfhfujSPUR9FRzxZY2EsdyDHmAgefYdmIcozLaolA1L3eKwQ2w==","signatures":[{"sig":"MEUCIQCpkOoe4DVaVAtgQT8fcrnjXe3F8mTtCda+IpCFyhWTJgIgMKqm++D9Ub8eNkweOCqfl2nNaRuaeOa6XOqyK67Vrh0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1426560},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"499d597de4084ea482b0825a06615370717e550d","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.7.5_1760901067042_0.14336895136639205","host":"s3://npm-registry-packages-npm-production"}},"1.7.6":{"name":"@alteriom/painlessmesh","version":"1.7.6","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.7.6","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"6690d5084d0cf5c000894d43bb7e27c251bb86b7","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.7.6.tgz","fileCount":167,"integrity":"sha512-pBSEuLs4gjGiyRpHx4GODbuJtVge4ZxlaLKTdkFGI0lDqsJHzTnzuEyUysYv6WRT9HsnAOOb+SLYklvdRqyFjA==","signatures":[{"sig":"MEYCIQDrCGsWObqcDwQ6ffHAk+jxnprECf9cxTMYSh9nm8Oo+gIhAK+b23LOlkOAIj7T2sRx3vs4bfhhRO6ygsXwb/N25qSE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1490637},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"c17384a43ae3c1035a768cab4888e3a982c76773","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.7.6_1760902921904_0.2955935154841738","host":"s3://npm-registry-packages-npm-production"}},"1.7.7":{"name":"@alteriom/painlessmesh","version":"1.7.7","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.7.7","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"7d77471b24a6933461cf3b19e5382b8c81a099a6","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.7.7.tgz","fileCount":175,"integrity":"sha512-45ZOJHBe/1iFtghfPv0G6U00TaUlirG6WiEpG7g+Nsy6bl8y1azkeAMOkcllEfaMoUOVp+wDtX5OhBVjUfxK9A==","signatures":[{"sig":"MEQCIB7zUH1hPyija3FH17aGeNB6s9pOGtXqovA6qyoUwI2RAiBc7agA0pGOVVtxG2B/yOKVxFtoKY+46gS5/cHa1Oed1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1637100},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"7d41793ad605407f55616eb17af5b76741afc610","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.2"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.7.7_1761278992003_0.2574129245426562","host":"s3://npm-registry-packages-npm-production"}},"1.7.8":{"name":"@alteriom/painlessmesh","version":"1.7.8","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.7.8","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"84eaff307e90564db8573165e849093fce716095","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.7.8.tgz","fileCount":177,"integrity":"sha512-kWEfVC55zZtM4AajBTNvOgRyF2qmnvfTzfLQV3vD6m1w0xYXb4m+HaaxkfO41Ju7usAvUBAnfv46cZ8WprCYng==","signatures":[{"sig":"MEQCIH4HWZ/OSd9nF1MoAkQxKgtcLXwwaQ1toMZxjgBLBV9TAiAh0iPlIxqCFfGjE1eSM2+lmBtRkDau2ejzSNykcMfLSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1680336},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"5ecd346a2eab4e8cbbafda114d27712093f4883d","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.2"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.7.8_1762312337270_0.3809096284545388","host":"s3://npm-registry-packages-npm-production"}},"1.7.9":{"name":"@alteriom/painlessmesh","version":"1.7.9","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.7.9","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"c629032d8acf8a1cd5bd5b61445d3eab95dae5dd","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.7.9.tgz","fileCount":180,"integrity":"sha512-EvFlP//LZV+aEyC34WiisoDh0FCgpqY0MjX8p+oMeszXCR9hkpA2NDrKynyVr7z7X0KObHSns9Eth7ZKF40xlQ==","signatures":[{"sig":"MEUCIGy4NxveSnlumlvaDlMtKYZI1LsTSnJ0F1QK6AFfelnOAiEAk3eSvA0eq/wah6qNndrrP2dLS/2HSOhtXEiX7WI8cYU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1747373},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"f8906abced58fc337d4f8d38e96885d939a9a3ad","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.7.9_1762630766371_0.19813895964989303","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@alteriom/painlessmesh","version":"1.8.0","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.8.0","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"6c7c95cd8e4d7eb03a6bffa080e696d9edc863d1","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.8.0.tgz","fileCount":201,"integrity":"sha512-HLKB/OCKhum1HaZVkFxzzrBgEerXKChlmCUYL5E+ghsdj+e5l766cHzkPZ6Uhk7p+XtcXvRpGXOthxpXYvTIPQ==","signatures":[{"sig":"MEUCIHpyluaqrhPnKwlP3GJsRPSLKzceoMpoyAvm3t3wBhZdAiEAg716upitHDJWwUef9isJyIXACLLXZXiBoENLs10F0M4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2129182},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"e16511ffaf145d4d043753bfe3f6d0c8a8c97cb7","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.8.0_1762737504664_0.8127729819818488","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"@alteriom/painlessmesh","version":"1.8.1","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.8.1","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"fec033038b008c86487884d859f6a29211b9ed6f","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.8.1.tgz","fileCount":208,"integrity":"sha512-J/irCL3qUpsq8GXc4TiLzQVPrRLQGl+6nZbSUNMd0Hbn4KSTbRcIBX7uoZlc4cs30H5B9w/cEaTAjWMVZhuQog==","signatures":[{"sig":"MEUCIQDsj6ojgWb2e8HayAFaMt/ci50MIR42bn28zd/Z6KsrsAIgBa/lAVRYOq4J6IHgaANNZ7HbxYww8w0BJBFFqRdrvaU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2198447},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"209e6a5d9431233e5201a84ccf8f87bc175f6285","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.8.1_1762816547949_0.16043044451356958","host":"s3://npm-registry-packages-npm-production"}},"1.8.2":{"name":"@alteriom/painlessmesh","version":"1.8.2","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.8.2","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"351fcd5cee4e6e58deb1e7d334fa82d8614d757e","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.8.2.tgz","fileCount":209,"integrity":"sha512-kpoaZzxQ4Ihm/M02VpGRn0hrf4yGkEe0PyInjQcKf2oblBeoVDQdBaXseJN3DaA8r1JRTqI/cGZZ1w97ybC2yQ==","signatures":[{"sig":"MEYCIQDOghphOmbL/dVChgAzTe89a5sdqmadYHWfWys3qTFLCwIhALQrvbXZJDQTMOSRZc/Fuyuz6zLm0RZ9nFUvDo/iCIIn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2235886},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"e0cb97a464472712b757d4d104d414e939ffdf7a","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.8.2_1762828514354_0.29216455863576685","host":"s3://npm-registry-packages-npm-production"}},"1.8.3":{"name":"@alteriom/painlessmesh","version":"1.8.3","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.8.3","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"4facff4c18881bf170c95972d7e3a9eceb62cf6b","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.8.3.tgz","fileCount":245,"integrity":"sha512-2wMLdgEhTyo5s7D8KuEubTqmQ0COZf/BOkaSpF5BgItR2gOGtd5s72xZLais7UYYbNufX6CdsSxITniznKQJzA==","signatures":[{"sig":"MEQCIDaC7TYtZaOYMrA23JruBCJMWW61jIQL6Hf+nQIpC1O3AiByog+KmQ0l1VgBH/hQ3yKAd58KYr3uAWibUulAxZWyAg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2597077},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"cce969c4ab321ac9d897ee77292a0e795dc8565d","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.8.3_1762895709293_0.254257652506811","host":"s3://npm-registry-packages-npm-production"}},"1.8.4":{"name":"@alteriom/painlessmesh","version":"1.8.4","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.8.4","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"56b95dab358d568aef871edf31f0503b51d78b1a","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.8.4.tgz","fileCount":246,"integrity":"sha512-WGhx+bIyC5/WN6aySSsafa/To7FgR55YXJfHbUrPtE7moca5UaqYTz5kfEjNXmSHdu92FzPPVzGVTT+5219jKw==","signatures":[{"sig":"MEUCIGb5tZ43EnN1z05c+N4i2xIjNDm5grJlxkDKUnP2KcnYAiEAlv1I09ANI45E27L8u5zSKxcXo3b9IZfZitcujsbk0sc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2607945},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"30d4d7ce8e73795b685d751e02600266aa4e408a","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.8.4_1762906426415_0.982266791798809","host":"s3://npm-registry-packages-npm-production"}},"1.8.5":{"name":"@alteriom/painlessmesh","version":"1.8.5","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.8.5","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"9ce89382506e61dc4ec011d20d722b42e0bd821a","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.8.5.tgz","fileCount":248,"integrity":"sha512-gbcZKooGSYgr59PbS76xPCErjr5oD/ESQM4/zGOVk+dOSY9GDicEtI7NAMT4RytnB0Fbq30TFcDuZsBdFWaaVA==","signatures":[{"sig":"MEYCIQDHLkvIvKnYZor2uVw2CLV16mrsjnYk41U2G7p5sClQ+AIhAM2RIhPdqrD3axQDn64LRPaJVjD7mkZR0/LV3SswrUa5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2615506},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"ec2906e4a46701ea9ade675de142b52681128d3d","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.8.5_1762950044630_0.20028743881154099","host":"s3://npm-registry-packages-npm-production"}},"1.8.6":{"name":"@alteriom/painlessmesh","version":"1.8.6","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.8.6","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"5c767134a8784a0463e1383a348d4483d645076a","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.8.6.tgz","fileCount":248,"integrity":"sha512-lFM29IktR9bpM5Y08NkpnHSSoWhmWsLtdzV3IYt8jnBVWICnQMRAdWcm0KOF1sPbS9r2sjdAmSjkv5ek8GOtiA==","signatures":[{"sig":"MEUCIQDinPRNYjksZCQcdVs4pAcLdopLkUTP0qG+e5k8ZBws8wIgZ33sZ3cwDhuieS4naWu4WY8J/4L0w/b0FON3vkyTy9w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2620749},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"0f0832961b39789012c9b4ec3be46e0a1e2a1e85","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.8.6_1762962685326_0.8073763112091159","host":"s3://npm-registry-packages-npm-production"}},"1.8.7":{"name":"@alteriom/painlessmesh","version":"1.8.7","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.8.7","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"b617ff330e6716c36855bbd099a3383e22a23d58","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.8.7.tgz","fileCount":257,"integrity":"sha512-/QsA5Qo/Lgu9mAgffm4lJXwUME2+SqV+4KUO7Fn2ybzY4bsKENnfY2z/84m0gBj7JpG7Qz/Fn6xqEI1rnXUANA==","signatures":[{"sig":"MEUCIQDkybrqXbTMR+ulhW8ZoXY7JbHhRdTQlvwHrK5FLxq/vAIgXoNkzqKy/0yJAjw1kk4dZrdJP4UEh5YkWmtqc0xezus=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2661033},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"1cdc4166441a2990abef19277c30a183bf3923c0","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.8.7_1762973408485_0.11238894761561813","host":"s3://npm-registry-packages-npm-production"}},"1.8.8":{"name":"@alteriom/painlessmesh","version":"1.8.8","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.8.8","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"ec3c75a280fbda2b1677442e2d247cd3e404881f","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.8.8.tgz","fileCount":257,"integrity":"sha512-UZrM02MZIW8HJIZMGolR+nSJBHuprt80dxxiTNlKeek+cOrmCbKbYFma74n7QxxHqAixWqCr985Z5rl0RdjAAQ==","signatures":[{"sig":"MEYCIQCPoy1UrgCEQQhXRPBzbqL27zjGujIO3OMP+yvGoxdp7wIhAIiIJDKimOG2tzkJ2ZgT1hCVXXt/qAFFDyq0lf3LFRXv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2662852},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"602d51b8dd663a1463004e1ec57c8a3d78564a75","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.8.8_1762981690965_0.8635193685073335","host":"s3://npm-registry-packages-npm-production"}},"1.8.9":{"name":"@alteriom/painlessmesh","version":"1.8.9","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.8.9","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"a6093d32b4f1a3892bde0213117e256b625b8439","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.8.9.tgz","fileCount":258,"integrity":"sha512-okHSL+Qo/D9meP8E/sOolLD4PMFDIEv7+FQbfUM39HOAsPAeekI1QUX5KtMhgrMvTx2bB3rovw5J3SQaSoDHpg==","signatures":[{"sig":"MEUCIQD7j90ZdugDQY6lVc1TKnd76Cm41GdqP/YvwVGkndQtXQIgEWYu/dEKNUcghUGmHqwhwFa6XEoGCQ4js3tbZDhk/QA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2674265},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"2e86abf9cc46e92caaf436e0ef96e44810b56ebe","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.8.9_1762990916787_0.7155234148582328","host":"s3://npm-registry-packages-npm-production"}},"1.8.10":{"name":"@alteriom/painlessmesh","version":"1.8.10","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.8.10","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"8894d0c2d8f155b1c4cb710d111ce65d3ad70ce3","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.8.10.tgz","fileCount":258,"integrity":"sha512-uud/BEqVl94cLRosoRstb6fk6kVAXYOdyQXbK0f0uJzFbGEAGAvTzCBug9Tut6LKKy2lb2+zATcjGLOCadaKzA==","signatures":[{"sig":"MEUCIFpJ9HJaiLsk85fszmp7ArPIRDETRkoVvaPciJjf8r2WAiEAzodqDOsWGBleJ3SdmkYVI+6/xsyLIJZVLk5oGFmreF4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2681421},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"28ef4536f0d1ab51b5b8489d070e3e9b1668d243","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.8.10_1763426912134_0.6298027440164398","host":"s3://npm-registry-packages-npm-production"}},"1.8.11":{"name":"@alteriom/painlessmesh","version":"1.8.11","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.8.11","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"732cd5d115ccc7c55856876380aab08e51affb33","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.8.11.tgz","fileCount":263,"integrity":"sha512-fex+ip/ajga0npv/9Chch34iWGJ41h6ohSB8qt2tMuOb4eu7rlYCo7JJGhCLbaBzAGy6MVMNBeptYRGPuoE2bw==","signatures":[{"sig":"MEUCICsLj7FhO2Wd7TUoNHAasjYlJUoU+hH/CWRP0Cz2pBI+AiEA/IoLQ9hi7UTx3pxZ4WkyaiTrHDI8khMht0+a29WrzoY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2718882},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"c5537a5bb6037621336fd9e304d9e653e11c1ecf","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.8.11_1763508007681_0.9130882523747552","host":"s3://npm-registry-packages-npm-production"}},"1.8.12":{"name":"@alteriom/painlessmesh","version":"1.8.12","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.8.12","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"cc51afee75d8446485952907008d658b804469d7","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.8.12.tgz","fileCount":266,"integrity":"sha512-K5v4YNilxy/aaX29KjzN2fHoxXzefBvTm7SxxOHfaABYqycf9qGWpbvNAGYgCpW9LropVbeRAKoNU7XbyL9mXA==","signatures":[{"sig":"MEUCIGCuQ2c7/s8B5Z5InTGaQVNHRuX2WkZNu9IEty2uRlpUAiEAlukAzI+qJHn8ud655XJDd0V+bGQOEHWF7mCPi6pRmeA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2749140},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"0400e174cf85467e19e4ddb408ba7acf31f0514a","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.8.12_1763599441445_0.9955023153062621","host":"s3://npm-registry-packages-npm-production"}},"1.8.13":{"name":"@alteriom/painlessmesh","version":"1.8.13","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.8.13","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"dab99ba304b52367ca1aaab7688f529c541ccc06","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.8.13.tgz","fileCount":265,"integrity":"sha512-SixqL4QuryNKsrlsSfkEXuDXnw99kWycAy20A0DrTpC/NinXg1MMiLcp9Mn/8xSrnO3QdHLkN0HYC+QASdL15w==","signatures":[{"sig":"MEUCIEhwDDUNwYnDmr639EKOgYsWl9jH9FYLnA5zf5Qnz7u2AiEAtcqAY5g3pWfDe2AXOnQOtPTjYDCqo7zf6/88QIXM4i8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2747524},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"d5a8af5372a71d495e6d0ef12ab75278b22a48e3","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.8.13_1763665387923_0.716203488961014","host":"s3://npm-registry-packages-npm-production"}},"1.8.14":{"name":"@alteriom/painlessmesh","version":"1.8.14","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.8.14","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"69ce4b609d7342aefcdff641487dc87289fd8496","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.8.14.tgz","fileCount":265,"integrity":"sha512-NFJPO/PChsnMYjXiOg6yykvEA3fAvjigsQ7shSFGSzesZw5LuKi3K7FcUyyJ7mI9eWR19kyhngrqJWz1ZEIwUA==","signatures":[{"sig":"MEQCIHs5/uK72pVUVII9C/FzThtM01ISuYspGRMwiluHztZRAiAsjlhUnkplON7wCwJ74pXRdxU+hUk8Wvl6O0GVRsIYug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2749274},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"8158eecc470d4333ff9c149d8d1c04e18228dd22","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.8.14_1763746343477_0.5837157835601521","host":"s3://npm-registry-packages-npm-production"}},"1.8.15":{"name":"@alteriom/painlessmesh","version":"1.8.15","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.8.15","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"f290a470d861a153623b96e7a84d99b19da6a43e","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.8.15.tgz","fileCount":276,"integrity":"sha512-J4v7m90rTJQyeOAcRqkxxJq7K57qQtuosU6gtSg2lxp28jclcuFtHDxql3LCqDithq2G9XuI4ZrkPoR8PaeeuQ==","signatures":[{"sig":"MEUCIQCboSmWDSxiA5Cy9V6AvIZf/jOZDxszAO6nC2WNgpmIlAIgUcNUsxocfqmcd6FmjXJumZ2xqOE0KLu6kJg/kJsbcmk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2831252},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"83a2487e2ccad966068da29472bc4ec8ced325ae","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.8.15_1763922270448_0.18146728961640868","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@alteriom/painlessmesh","version":"1.9.0","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.0","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"0886855cdf19aa03d3ef261ab8ffde97fed451a4","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.0.tgz","fileCount":94,"integrity":"sha512-SCS59iWF7p7qW7Erl2cQy6a+p8ZLYey9K6M5bmRk1xvOcsZlpMA/FVjAWaJMY3yC1wyTAGadFtlsBjeKrQdWow==","signatures":[{"sig":"MEUCIQCCHNFftHgSA9OQt/1i/8PmctwXqvalZx3DLrBVEGUFsQIgQBUlyHsSlenSJJfPihNzjlGDc3Jcxb0yu1WJwfqh05o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1040735},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"d281e44f62c7ba6452d906ad72b95b43a8ed04c3","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.0_1764532090258_0.18660355843679977","host":"s3://npm-registry-packages-npm-production"}},"1.9.1":{"name":"@alteriom/painlessmesh","version":"1.9.1","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.1","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"488137131f713b4d7e55505999f4d2988e2a488f","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.1.tgz","fileCount":94,"integrity":"sha512-UfBEWkoAULnIesgf39HMJVrFKsYiBunmVqcUwrwOzANdAsJAh5Au0wXq24LtENWkdXcBf3sHxsctEaXJlpaldA==","signatures":[{"sig":"MEQCIA0PTsWlg7VmoJ6IZyTEH3MZ5Q9WjCDV65ioJ+q3ZetTAiBkfLZ28ZPCivhv+yvsA3ZlPrxpAWGLzi4SrcFwj5x8+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1051869},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"2dec3592af2580147d82e0f6fc4e0e2d40a2edb2","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.1_1764595990337_0.12321679098847294","host":"s3://npm-registry-packages-npm-production"}},"1.9.2":{"name":"@alteriom/painlessmesh","version":"1.9.2","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.2","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"02942fd64371b49d363b6a490616aa58695ff624","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.2.tgz","fileCount":97,"integrity":"sha512-b4GCzyOoCroId+aMODLorqkXzoh8JtUXH2IlA6Im5nHAQ+7JT3hXrWC1y3tx6Lp4YpauSGbt46c0INxlr7/MLQ==","signatures":[{"sig":"MEQCIB1bbLLertdKVAeSsEv4bUQlrIf/WAROT3Py8ARIx3qtAiBQGOzZtEz91gARCc3V14Vtx9jBD9mOx6vW/02BTRLI/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1076669},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"6f78a0e8535e2b63cd6e2c467338f7eb5691b842","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.2_1764640979503_0.6372855098564194","host":"s3://npm-registry-packages-npm-production"}},"1.9.3":{"name":"@alteriom/painlessmesh","version":"1.9.3","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.3","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"dda285a9b651e71fd03a57e962ffaa1e57620a92","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.3.tgz","fileCount":97,"integrity":"sha512-u3XklM6m2Zpi3qyOPhtcJB0SNNZ31xMuh/yiH5qat/k643xu2kQX7zXo208g/DRREvOy8dYoaPyXZjX9M7xYvw==","signatures":[{"sig":"MEUCIQCiGzZvdeji9cfMFnDlvta5O7kJdEKY+7JHEUE1an9vHAIgcjDZRRMmmCuPZDPM8SYgQE5gSI72A8IHJcgTImdJ/3c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1077864},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"5a3f6062203e087612bdba47356fbe4f79146c0b","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.3_1764687599687_0.5767620895183032","host":"s3://npm-registry-packages-npm-production"}},"1.9.4":{"name":"@alteriom/painlessmesh","version":"1.9.4","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.4","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"89488c1b592be7ebf499b58963a57cb5bfc04846","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.4.tgz","fileCount":97,"integrity":"sha512-QtyjkdIIw1knqfruQSTgMpGWANcMJeRwexoVcgUiaifjuXWjdTYTk6HMFAAIC2xmLOFf5owerm5VORdXHeOAPA==","signatures":[{"sig":"MEUCIFBDYypt5DS4kmz0786N08boqiysin5+He6JjPZ6tGAdAiEAoJB4bL47p0Q0k7dMfLqMtqbk1t8ZkM6kjXoR0cOwQxg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1079308},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"d17cc4e97cace65794e6a50a484a52e8dc815485","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.4_1764767622564_0.07008695068950765","host":"s3://npm-registry-packages-npm-production"}},"1.9.5":{"name":"@alteriom/painlessmesh","version":"1.9.5","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.5","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"854dfb661f5c59072bd302a121f0a1099a293f38","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.5.tgz","fileCount":97,"integrity":"sha512-F+EJxv5y34l7aksj4qX4gWXYdZt1NUrrMmIUm0PU+Rxh5O4WZcPQrekkSBipSnNlcHD5iMsSPL0eCpNI2O9RdQ==","signatures":[{"sig":"MEQCIDCgf0ThQffoAzPGCAydViMPGq0kQoL1XcfCvBiqxM89AiAXWuGbuNPJq7acvHzBBSeiaqY3yqy3OQAR7tNct3nvzw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1081795},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"52d65a731cf8af04ec3058bc471f76c87fa7da90","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.5_1764794890196_0.49727644236533775","host":"s3://npm-registry-packages-npm-production"}},"1.9.6":{"name":"@alteriom/painlessmesh","version":"1.9.6","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.6","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"a40c7e12e76424281075fad1a8678f5609857f20","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.6.tgz","fileCount":97,"integrity":"sha512-N7BuEM0wRWw36CZz0HQThSeUUDpf2GQgRLmof8GN+xIkTc/xOEaW8cx4xeNqsNnrZ4FCNflTplwlCLV14Alt1g==","signatures":[{"sig":"MEQCIHtLZ0FCwAzCw/Mk63fc4ZGhxvPKnUO5TCx1TNaozlr8AiA3qldH55PHZuqJV6Dn/b1nbFxzew1Vm+AZbYlogozsuw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1095435},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"e021af69b74065b3f29132458f862d91bdd46093","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.0.0","@eslint/js":"^9.0.0","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.6_1765410049929_0.4688432293791256","host":"s3://npm-registry-packages-npm-production"}},"1.9.7":{"name":"@alteriom/painlessmesh","version":"1.9.7","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.7","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"50db4b0729d48a218826b1329f0ccab9c890774e","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.7.tgz","fileCount":98,"integrity":"sha512-WF28BMdhsMTXD1SGxx+9CvGgcY4yHpdT9oP6nKN49Ya5/8LI625f9IbwdV65fp+17yZpo6p/L46/jF+5zAhYVg==","signatures":[{"sig":"MEUCIQCiO/f2iTY3uJiSR2ewXR4At7iVcZ5ltiL9O7VEUWds/AIgcXnuNuMM88cRtMLRQX0tlykVIwpkn8YY58Va37oxIEQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1108239},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"c92184a3fb9122a6250657820830164aa932c464","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.7.4","@eslint/js":"^9.39.1","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.7_1765645763131_0.7343109037417854","host":"s3://npm-registry-packages-npm-production"}},"1.9.8":{"name":"@alteriom/painlessmesh","version":"1.9.8","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.8","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"4a129d6cb960fc36f75baf8274d5c3c46bbb3872","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.8.tgz","fileCount":98,"integrity":"sha512-KlTfqeqDGsghc2uOCsQGv+lzq/7lLvvPtpLvt5Mu7WGxddenutuh4pTwi8U/Zb6JDidge9ubs9+5sfAbrJs3CA==","signatures":[{"sig":"MEUCIQDgXhfjQ7eJNZOmUbaK4XjAaowiD7j3AwhCuQZT9doOGgIgRA53yGtSTuM7kBQ+p1VlzXAdkOfjJ8OFFrn2AOL/Fs4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1111129},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"50e5c85406ae452b575407089d917717e3ad76e3","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.7.4","@eslint/js":"^9.39.1","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.8_1765676632625_0.7344649473869549","host":"s3://npm-registry-packages-npm-production"}},"1.9.9":{"name":"@alteriom/painlessmesh","version":"1.9.9","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.9","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"f96a08f1fa2c3c441998b6eaff80f378b2a71f04","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.9.tgz","fileCount":98,"integrity":"sha512-UvfgagKr6zYPVQ+Q/EzQ7M0RQmW2D4ybuLjLMgQctlXPyEbjUtPipexTXdm89yFbQqeG9dJ1SuM/pz9DAlC+Zw==","signatures":[{"sig":"MEUCIQChMygtyOSdHUQaJaStnZ2+d7htrGkFgwZor+eAXBlB8wIgIalUOWEXEiCtcB+KIEw2I+jNOOhNBLVD5aGubhbBgPg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1122306},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"895c64384106072078a3109aa0e29962e0271da2","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.7.4","@eslint/js":"^9.39.1","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.9_1765759835156_0.7051564676743554","host":"s3://npm-registry-packages-npm-production"}},"1.9.10":{"name":"@alteriom/painlessmesh","version":"1.9.10","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.10","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"aad8d869392b7978e1cbc9339103caa552d9ae44","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.10.tgz","fileCount":98,"integrity":"sha512-fzk0Qxt+P5Egy6rkYliONnGomdKz9RWkJ6TI7SQfkZxiIiJxJ0Hihk6BgyWCGH2h5juYj//yVy67q4WS+hTYlQ==","signatures":[{"sig":"MEQCIEDY8QXWquneXbVQKF5RU9oIWJEqKONTHc9bmIqCcvFCAiAQ83gxFB0lAYk8HdYFTf5aKBH7KUOzge32VkgxM4TxYQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1125799},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"c2b10cdfe06ce19548c4c63ab0559882c40fb2ac","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.7.4","@eslint/js":"^9.39.2","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.10_1765833547073_0.9607571148107914","host":"s3://npm-registry-packages-npm-production"}},"1.9.11":{"name":"@alteriom/painlessmesh","version":"1.9.11","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.11","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"16ea06d9feab322d29dfff0eafcced800038b626","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.11.tgz","fileCount":98,"integrity":"sha512-0lnyiGiMkr1Zlee3SturE34UN8UykFJPB5AopU6mUEHlD0qsN8M9l5p+Tv7PXEzWMkm4lmjBh6tpL8t7b390hA==","signatures":[{"sig":"MEUCIQCgFmBHQDqXL9wzNytDDTfXCnB6hHhFCnkYCAhXCLPCOgIgVT+qVprngxq1kw8YWpz0CO3WZge1DVszE69IvzMBlzQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1135486},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"e30041348d8433a4a550bd198d9a4ef106868a10","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.7.4","@eslint/js":"^9.39.2","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.11_1766029628162_0.8047142116040209","host":"s3://npm-registry-packages-npm-production"}},"1.9.12":{"name":"@alteriom/painlessmesh","version":"1.9.12","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.12","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"8a0b2d1fcf76814435dbc3e1206d41193e8b3af7","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.12.tgz","fileCount":98,"integrity":"sha512-xDKdjuUgOPDHhCBUcpqj0qo06oqby0sanDHhvXSEs0w1Oo04wEAXq5zUy4KF6Gr3Jf8ZCWxpzcquDdZg2JCG/g==","signatures":[{"sig":"MEYCIQCn3Zi3UiC8D3jzLfYM7AuiidUOSW9ACXk2cRweODaEkwIhAMiF3rRZ38cOZD9Kv/cTBM/KLVeilsJrKhbxmopbggyu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1140845},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"5921e73ba02bdc0f25890bc21d21050a58cc3444","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.7.4","@eslint/js":"^9.39.2","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.12_1766089492176_0.8338310229920098","host":"s3://npm-registry-packages-npm-production"}},"1.9.13":{"name":"@alteriom/painlessmesh","version":"1.9.13","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.13","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"b353cc8b122feaf8f1c85e2d4c71f0a3e030f1f4","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.13.tgz","fileCount":98,"integrity":"sha512-CKpiIjGfSzkKC/a2qR/dhN88DtWuToqjOL3OVzjpD3XWvSoxPZmzKjFlcKgt5m0c23AQXX+3dX2prchCHYUk6A==","signatures":[{"sig":"MEUCIQDJkoVg5WEqJjfi5K7zrus05y7XYTAHqJhHf4W0KEJR5QIgQNutlkrkBFQVplBoZ9bccMLOnbV3EWgBmYdarnaQwBU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1146963},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"09c86443137b2a5d116f266bb3f1da03a810cb36","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.7.4","@eslint/js":"^9.39.2","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.13_1766113438714_0.9551185932490618","host":"s3://npm-registry-packages-npm-production"}},"1.9.14":{"name":"@alteriom/painlessmesh","version":"1.9.14","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.14","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"ebecbe79744c9f7fd5bf8933190b749aaf868cf6","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.14.tgz","fileCount":98,"integrity":"sha512-OX3Msy7fdYdumDstENIUJn2khepy/YwbGMEncJsJ7oqOPjowZWe09Q/Dhij29zpKMs0XQW1SBKTGGwJl1+fX8A==","signatures":[{"sig":"MEQCIDqrq2XBul9osiOnQNRcwiFF2cLy+1A86nfGf1trZb3RAiA6YSgFVt3KAJb4DQsiO2P6K8LMfmiQbYa5Y9/ITmCzNQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1151161},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"1224c59be313d36b01f7323748c563aa2eacbe79","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.7.4","@eslint/js":"^9.39.2","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.14_1766164987593_0.744135047837303","host":"s3://npm-registry-packages-npm-production"}},"1.9.15":{"name":"@alteriom/painlessmesh","version":"1.9.15","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.15","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"96bff7683b1d8d1ba20491917bbdc9d6a30d0c6e","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.15.tgz","fileCount":98,"integrity":"sha512-B2ukpL/7lfnF+ms6+JpXkHDpFpfgc9Y2FH7fkOWFHzoDrEviRQuRr58yFbvMuUtvGzHF2rfO5WEPo7J4o5Tdug==","signatures":[{"sig":"MEQCHyGROqvmgBqkSSxK8g8tRuaZtEZpYBlSgZlws0Qx6Z4CIQDPjlpti75bj+oKAw650aJK7/9oqs/byOPn4HfxxGTeBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1157786},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"61d23a0f7b679f3c73fe910a21c912d956698cf4","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.7.4","@eslint/js":"^9.39.2","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.15_1766181171732_0.4730553712694372","host":"s3://npm-registry-packages-npm-production"}},"1.9.16":{"name":"@alteriom/painlessmesh","version":"1.9.16","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.16","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"3c21fbda3045d7ac61eddccf6706942b2302d5ec","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.16.tgz","fileCount":98,"integrity":"sha512-dOIipCMS0futsJ6VwqqVvWMNSJRw7hvyx9BpV/2waf7EdsXpGhdzqIHeNRVYBJC1XfBG81hUgejKTslzEpE/RA==","signatures":[{"sig":"MEUCIHsW+oSsx3FZ7/5FVMpoQ9c7lWgbeI9HUs3vRajbNQYFAiEAoQsUqYmAk7L74Nk8wBlo1Ocq9Pns1rIkcuchLPIr7hI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1160570},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"70ef743fabf5343d7270de7fe135c6fa9240878b","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.7.4","@eslint/js":"^9.39.2","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.16_1766241315031_0.03791949550851936","host":"s3://npm-registry-packages-npm-production"}},"1.9.17":{"name":"@alteriom/painlessmesh","version":"1.9.17","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.17","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"ec19834cf1ee10a655cb03fbd5beac484376cc54","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.17.tgz","fileCount":98,"integrity":"sha512-ydbV3rUOuBb3aIGQIsnxYJOf/wPKU9xhJg3hEChnIATpAB5Hv6hdbkN1YHJE3j8qHwhP/H0tiKbcQ7Lfw+GBmw==","signatures":[{"sig":"MEUCIQDNERctEkQDzPSLPGIwMavZJVAeVoPOQRjVGE6ATHOPDQIgYSRZJwNOuYlS7D3hVr44DhrjaGggzORWGVR+G4ZjXiQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1163167},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"1d0d5bc8da867a76a3c63e114c53821910cc0b7f","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.7.4","@eslint/js":"^9.39.2","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.17_1766302153823_0.4291924690327835","host":"s3://npm-registry-packages-npm-production"}},"1.9.18":{"name":"@alteriom/painlessmesh","version":"1.9.18","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.18","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"af5f15ef491e1d3f1d089a3176020a143b84fcd0","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.18.tgz","fileCount":98,"integrity":"sha512-WpyJilUd/yodAGAFWdIYh+sNx6CJbEe1KHgdqZogoS0vE2kZqVPN4WANUwgBxugyfK2VR7rRvMf7AidCz3puOQ==","signatures":[{"sig":"MEUCIQDjVxnvZycF6b+4uw5QJj486+cPZkyrImTTBNnlC3GUdQIgC06W2mFKf5/G0rwsNo8QPnkyMouWJW1+S1O7wEpn3DQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1167619},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"2726cda2ae2144ee88c991e71b479b4cb2396d2b","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.7.4","@eslint/js":"^9.39.2","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.18_1766333652591_0.21292916517274652","host":"s3://npm-registry-packages-npm-production"}},"1.9.19":{"name":"@alteriom/painlessmesh","version":"1.9.19","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.19","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"5b586e3fe262fee9d9392e5dd0f3c2ba8a08161d","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.19.tgz","fileCount":98,"integrity":"sha512-Ws0+LRZ+Fb7qbhXgAulLBCe7wWDuEaR4FJU/iBz4vCurBiD+P5A//0LGbbPoS7/D5qB8KN0GlF8iz1oqFtnVrg==","signatures":[{"sig":"MEUCIB9mX3e5pxVhBYekY9czN3eRpvuduX88EUeWReJNHGkRAiEA/P3iZxg34Yn2XKazSFfdOkxqRZbx+Ixm83Ji7ikG4Wg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1169973},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"1e3d2444d9a87515fb165fe53b1b240a7a6693ee","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.7.4","@eslint/js":"^9.39.2","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.19_1766355541522_0.5174597528757257","host":"s3://npm-registry-packages-npm-production"}},"1.9.20":{"name":"@alteriom/painlessmesh","version":"1.9.20","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.9.20","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"a2015eeb896f33a56f33a54f53d9000663669b50","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.9.20.tgz","fileCount":91,"integrity":"sha512-MO1+kMf18QUCA1GbMgRR80qu9PO21uc3cXGpbq5GHgCBHQR/PrNwqW+Q0Xc+6lDXDCSiGwt4pytucYhv5GSmkA==","signatures":[{"sig":"MEUCIQDE+lDiLmZ8dn3cDxO1Zc0MBkUYO0N1jIykeI7yWiyKSwIgLf4xpB6Vy1z2jyf7iKp6EQB7Kh9CAOQRqp4RrHYZzBo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":997030},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"588c7a519575b34279adde6ba6342e12e9fa5830","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.8.1","@eslint/js":"^10.0.1","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.9.20_1774623875949_0.911197908994297","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"@alteriom/painlessmesh","version":"1.10.0","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@1.10.0","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"fc204092c0772c11c593e37345c8df997807fcb8","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-1.10.0.tgz","fileCount":94,"integrity":"sha512-cPmj4AzM4YCF9xq6M9ZTkus4k6EGW7F8yM/PMPYI4qW4aoeCJ8wkUCr+9Y6jMnxSWlrHWdy+WaLn9EU1VEksdA==","signatures":[{"sig":"MEQCICO1Dieaa3toMm8VZ6tZT5+9ByGLaUAzBmWKkPDK0j+GAiBVyLP8Nn4YLxT+cjBdEfZKKFZVFc9AkzCUPrFKeNlJKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1040231},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"e321d78327a9b74dbda37e957b7e5420cb19d30b","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","prettier":"^3.8.1","@eslint/js":"^10.0.1","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_1.10.0_1786626731112_0.866679465451452","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@alteriom/painlessmesh","version":"2.0.0","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@2.0.0","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"fda9ff4cb4411f50b4b86de330c3b0e299aea13e","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-2.0.0.tgz","fileCount":100,"integrity":"sha512-ovxgWfgbJ7wDKAc1iSJ+n5sgzT2vzd0QAUJFqKtsAa9SPX6goRWf9pUoAt6Zvr6li1dbYJExD+Aij0eKF/i2NQ==","signatures":[{"sig":"MEQCIDioc2KkR3qUy86QsQvO2CoFVOI+LWlMeOqNB37J1plBAiBZNXwCmLAi/O62rlXxZ92dgmgyIoIteczSzsUIs8SbEA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBXbuHFooCgkMW6ndYzdLXjeUk8n1eS1FXlPoNnO9UkoAiBALVl7WnU/qFeU55is3MlOeZM45t+yBsRIlBuiH6bwWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1243364},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"cabb8c2608b220dcd9cc90bf66fa3488156c8e4c","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","prettier":"^3.9.6","@eslint/js":"^10.0.1","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_2.0.0_1788797037968_0.9339719528499459","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@alteriom/painlessmesh","version":"2.0.1","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@2.0.1","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"e943ddded8988001d9f2257175b39b8e241368a4","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-2.0.1.tgz","fileCount":100,"integrity":"sha512-fiLYD7N7eHOy1oVzmbRgoJamHnQrW4ftiKTvPRdYL89r2ZSupdkRIWjmmkED8XZWEcbQLnQhlIqr24TFhB/52A==","signatures":[{"sig":"MEUCIQCIKYZleLsl3hJqVrOMl63ZMpA9Ow+KKWvoqYGmWqgWQAIgTbIQ9TqOwtdxG+uGY9HByF/224sPh/vCyLHzx+pEThI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDlS/Bh1ogib0crOD1UecWgL37rEYMQgo2sLHFj26udFAiEA6WGOaug05gArg0ly1qz7qYO/iNeBN6ieQmDtp6Tz2fI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1247494},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"9a4dc283194e952c5b746ca28c8d970468932767","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","prettier":"^3.9.6","@eslint/js":"^10.0.1","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_2.0.1_1788821035608_0.29514929926478795","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@alteriom/painlessmesh","version":"2.0.2","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@2.0.2","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"deabd01dadc6b5c6d700d760bb0a8dfdfca14cfd","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-2.0.2.tgz","fileCount":100,"integrity":"sha512-nQAJaxuhVw/pHjHKXZevqeeDR/AZEbntnRM+lVOjU9jNqW6Uz9qr6Vl3gWMOulFiDps1nCimqnlb4zFneMT2+g==","signatures":[{"sig":"MEUCIBsUTrxBldYHCwUk2LL901l1buglRhTQkFo5EMwEQOFcAiEAiQyLgi51qywtc3eWmJNraoWC+G7jQFhU11t4b1BEhRA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGWk/nT7/KRS1OtpzGxV4v8Kvus0369bNHCvSoQjJkd7AiEAr0ksFYy8JYI4lPLeOT8aD7rWdvD0uwzaMo11BI9YuKk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1257768},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"661cbe36aecef06d1c8ab7504525aa0aa4196086","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","prettier":"^3.9.6","@eslint/js":"^10.0.1","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_2.0.2_1788916204056_0.15751744990330008","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"@alteriom/painlessmesh","version":"2.0.3","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","_id":"@alteriom/painlessmesh@2.0.3","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"homepage":"https://github.com/Alteriom/painlessMesh","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"d2b092d0e3d3984d74058b5b9f1ab412ca9ac62f","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-2.0.3.tgz","fileCount":100,"integrity":"sha512-qUP0cu9gYqztPNcmVr45bebbXxcJ0SBnnNd+4i9955b1bfLSMj3uSTCAwnS6Ka/+GJS2bxgMGLwH4a3s4dEGNg==","signatures":[{"sig":"MEUCIG8R5cD/dobWijyZifEEFoN1HD/pC6bsC7NUcYKT4EABAiEAr0AL3XCI7uVj/u49pa/YJVt6K94DOqTwSEEc2a5O/EM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGE/Vxx1v0r7g5gRM+CrWPVQrhzajmS6zfP6O6vMBFPYAiBxQ4z6PzqIe8UhfAM8tBpSEJ1yjHhclcBUsdiCEgAvCQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1291368},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"a25135bce26899c8863357876190aaf23e67edfd","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","prettier":"^3.9.6","@eslint/js":"^10.0.1","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/painlessmesh_2.0.3_1789218698496_0.39334239699778695","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"_id":"@alteriom/painlessmesh@2.1.0","bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"dist":{"shasum":"b8ff37c49a9cc2a946628f591760894a0c9e975d","tarball":"https://registry.npmjs.org/@alteriom/painlessmesh/-/painlessmesh-2.1.0.tgz","fileCount":101,"integrity":"sha512-gxYD6mAjKPt02Cy0uR8TfdnGUTvf/DHVmOwoeSiTwGExf0cqNyvbRUsePUqknDUYnQkk8AhZk25PNIDPdkTnmw==","signatures":[{"sig":"MEUCIQDA94yUpT+XAd3aCMkojTJSNfbjGTWKxACaJ3lKcdWrhQIgFhLV/tC1d+/dMgBjuFlprsULQfFoRP5JFUDcYceDNRs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCYZY2GfcqlF3tg7dat6fvMBC1aDKOK3LwP+1i9fPTDLQIhAMe1+olKB0Iy97i/ajzTXPZNmx7iJBfySbk+7sdbQhCs"}],"unpackedSize":1337711},"name":"@alteriom/painlessmesh","author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"config":{"arduino":{"library":true,"platforms":["arduino","esp32","esp8266"]}},"engines":{"node":">=14.0.0"},"gitHead":"77b95e8d1da183d833a7894490cac04e60b4bf53","license":"LGPL-3.0","scripts":{"test":"run-parts --regex catch_ bin/ || echo 'Tests completed'","format":"prettier --write \"**/*.{json,md,yml,yaml}\"","dev:build":"cmake -G Ninja . && ninja","postpublish":"echo 'Package published successfully to NPM!'","dev:prebuild":"git submodule update --init","format:check":"prettier --check \"**/*.{json,md,yml,yaml}\"","prepublishOnly":"npm run validate-library","validate-library":"./scripts/validate-release.sh"},"version":"2.1.0","_npmUser":{"name":"sparck75","email":"dominic.lavoie@gmail.com"},"homepage":"https://github.com/Alteriom/painlessMesh","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"_npmVersion":"10.8.2","description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","directories":{"doc":"docs","test":"test","example":"examples"},"maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","prettier":"^3.9.6","@eslint/js":"^10.0.1","ajv-formats":"^3.0.1","@alteriom/mqtt-schema":"^0.8.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/painlessmesh_2.1.0_1789524372446_0.3383706909628925"}}},"time":{"created":"2025-09-30T01:35:34.221Z","modified":"2026-09-16T02:06:12.781Z","1.6.1":"2025-09-30T01:35:34.649Z","1.7.2":"2025-10-16T03:46:19.337Z","1.7.3":"2025-10-17T02:37:43.983Z","1.7.4":"2025-10-19T16:20:54.653Z","1.7.5":"2025-10-19T19:11:07.257Z","1.7.6":"2025-10-19T19:42:02.129Z","1.7.7":"2025-10-24T04:09:52.262Z","1.7.8":"2025-11-05T03:12:17.536Z","1.7.9":"2025-11-08T19:39:26.585Z","1.8.0":"2025-11-10T01:18:24.983Z","1.8.1":"2025-11-10T23:15:48.245Z","1.8.2":"2025-11-11T02:35:14.680Z","1.8.3":"2025-11-11T21:15:09.520Z","1.8.4":"2025-11-12T00:13:46.631Z","1.8.5":"2025-11-12T12:20:44.873Z","1.8.6":"2025-11-12T15:51:25.670Z","1.8.7":"2025-11-12T18:50:08.686Z","1.8.8":"2025-11-12T21:08:11.196Z","1.8.9":"2025-11-12T23:41:57.092Z","1.8.10":"2025-11-18T00:48:32.430Z","1.8.11":"2025-11-18T23:20:07.924Z","1.8.12":"2025-11-20T00:44:01.717Z","1.8.13":"2025-11-20T19:03:08.185Z","1.8.14":"2025-11-21T17:32:23.750Z","1.8.15":"2025-11-23T18:24:30.703Z","1.9.0":"2025-11-30T19:48:10.495Z","1.9.1":"2025-12-01T13:33:10.565Z","1.9.2":"2025-12-02T02:02:59.757Z","1.9.3":"2025-12-02T14:59:59.899Z","1.9.4":"2025-12-03T13:13:42.771Z","1.9.5":"2025-12-03T20:48:10.429Z","1.9.6":"2025-12-10T23:40:50.180Z","1.9.7":"2025-12-13T17:09:23.302Z","1.9.8":"2025-12-14T01:43:52.842Z","1.9.9":"2025-12-15T00:50:35.378Z","1.9.10":"2025-12-15T21:19:07.337Z","1.9.11":"2025-12-18T03:47:08.385Z","1.9.12":"2025-12-18T20:24:52.388Z","1.9.13":"2025-12-19T03:03:58.903Z","1.9.14":"2025-12-19T17:23:07.788Z","1.9.15":"2025-12-19T21:52:51.911Z","1.9.16":"2025-12-20T14:35:15.210Z","1.9.17":"2025-12-21T07:29:14.060Z","1.9.18":"2025-12-21T16:14:12.771Z","1.9.19":"2025-12-21T22:19:01.759Z","1.9.20":"2026-03-27T15:04:36.193Z","1.10.0":"2026-08-13T13:12:11.252Z","2.0.0":"2026-09-07T16:03:58.092Z","2.0.1":"2026-09-07T22:43:55.741Z","2.0.2":"2026-09-09T01:10:04.149Z","2.0.3":"2026-09-12T13:11:38.593Z","2.1.0":"2026-09-16T02:06:12.551Z"},"bugs":{"url":"https://github.com/Alteriom/painlessMesh/issues"},"author":{"url":"https://github.com/Coopdis","name":"Coopdis"},"license":"LGPL-3.0","homepage":"https://github.com/Alteriom/painlessMesh","keywords":["arduino","mesh","esp32","esp8266","embedded","iot","wireless","alteriom","sensor","painlessmesh","mcp-server","github-copilot","json","time-sync","mesh-networking"],"repository":{"url":"git+https://github.com/Alteriom/painlessMesh.git","type":"git"},"description":"painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It","maintainers":[{"name":"sparck75","email":"dominic.lavoie@gmail.com"}],"readme":"# AlteriomPainlessMesh\n\n> **📚 [Complete Documentation](https://alteriom.github.io/painlessMesh/)** | **📖 [API Reference](https://alteriom.github.io/painlessMesh/#/api/doxygen)** | **🎯 [Examples](https://alteriom.github.io/painlessMesh/#/tutorials/basic-examples)** | **📋 [Changelog](CHANGELOG.md)**\n\n<div align=\"center\">\n\n**Version 2.0.0** — delivery confirmation, a unified send path, and gateway failover, routing and channel following validated on a six-family hardware rig\n\n[![CI/CD Pipeline](https://github.com/Alteriom/painlessMesh/actions/workflows/ci.yml/badge.svg)](https://github.com/Alteriom/painlessMesh/actions/workflows/ci.yml)\n[![Documentation](https://github.com/Alteriom/painlessMesh/actions/workflows/docs.yml/badge.svg)](https://github.com/Alteriom/painlessMesh/actions/workflows/docs.yml)\n[![Release](https://github.com/Alteriom/painlessMesh/actions/workflows/release.yml/badge.svg)](https://github.com/Alteriom/painlessMesh/actions/workflows/release.yml)\n[![GitHub release](https://img.shields.io/github/v/release/Alteriom/painlessMesh?label=version)](https://github.com/Alteriom/painlessMesh/releases)\n[![NPM Version](https://img.shields.io/npm/v/@alteriom/painlessmesh?label=npm)](https://www.npmjs.com/package/@alteriom/painlessmesh)\n[![PlatformIO Registry](https://badges.registry.platformio.org/packages/sparck75/library/AlteriomPainlessMesh.svg)](https://registry.platformio.org/libraries/sparck75/AlteriomPainlessMesh)\n\n</div>\n\n## 🌐 Intro to AlteriomPainlessMesh\n\n**AlteriomPainlessMesh** is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This **Alteriom fork** extends the original painlessMesh library with specialized packages for IoT sensor networks, device control, and status monitoring.\n\n### 🎯 Alteriom Extensions\n\nThis fork includes specialized packages for structured IoT communication:\n\n#### Custom Package Types\n\n**Core IoT Packages:**\n\n- **`SensorPackage`** (Type 200) - Environmental data collection\n  - Temperature, humidity, pressure monitoring\n  - Battery level tracking\n  - Sensor ID and timestamp fields\n  - Ideal for environmental monitoring and smart agriculture\n\n- **`StatusPackage`** (Type 202) - Basic health monitoring\n  - Device status flags and uptime\n  - Free memory and WiFi strength\n  - Firmware version tracking\n  - Command response capability for MQTT bridge\n\n- **`CommandPackage`** (Type 400) - Device control and automation (COMMAND per mqtt-schema v0.7.2+)\n  - Targeted command execution\n  - JSON parameter support\n  - Command tracking with unique IDs\n  - Perfect for remote device control\n\n**Advanced Monitoring Packages:**\n\n- **`MetricsPackage`** (Type 204) - Comprehensive performance metrics (SENSOR_METRICS per mqtt-schema v0.7.2+)\n  - CPU usage and processing metrics\n  - Memory health (heap, fragmentation, max allocation)\n  - Network throughput and packet statistics\n  - Response time and latency tracking\n  - Connection quality and WiFi RSSI\n  - Dashboard-ready data collection\n\n- **`HealthCheckPackage`** (Type 605) - Proactive problem detection (MESH_METRICS per mqtt-schema v0.7.2+)\n  - Overall health scoring (0-100 for memory, network, performance)\n  - Problem flag indicators (16-bit flags for specific issues)\n  - Memory leak detection with trend analysis\n  - Predictive maintenance (estimated time to failure)\n  - Crash tracking and reboot reason codes\n  - Actionable recommendations\n\n**Mesh Topology & Management:**\n\n- **`MeshNodeListPackage`** (Type 600) - Node discovery and inventory (MESH_NODE_LIST per mqtt-schema v0.7.2+)\n  - List of all mesh nodes with status (offline/online/unreachable)\n  - Signal strength (RSSI) for each node\n  - Last seen timestamps\n  - Supports up to 50 nodes per message\n\n- **`MeshTopologyPackage`** (Type 601) - Network topology visualization (MESH_TOPOLOGY per mqtt-schema v0.7.2+)\n  - Connection graph with link quality\n  - Latency measurements per connection\n  - Hop count tracking\n  - Root/gateway node identification\n  - Supports up to 100 connections per message\n\n- **`MeshAlertPackage`** (Type 602) - Network event notifications (MESH_ALERT per mqtt-schema v0.7.2+)\n  - Configurable alert types (low memory, node offline, connection lost)\n  - Severity levels (info, warning, critical)\n  - Metric-based threshold triggering\n  - Human-readable alert messages\n  - Supports up to 20 alerts per message\n\n- **`MeshBridgePackage`** (Type 603) - Protocol bridging (MESH_BRIDGE per mqtt-schema v0.7.2+)\n  - Encapsulates native mesh protocol messages\n  - Multi-protocol support (painlessMesh, ESP-NOW, BLE-Mesh)\n  - Raw payload with signal strength\n  - Gateway node identification\n  - Enables heterogeneous mesh networks\n\n- **`EnhancedStatusPackage`** (Type 604) - Detailed mesh status (MESH_STATUS per mqtt-schema v0.7.2+)\n  - Complete mesh statistics (node count, connections, messages)\n  - Performance metrics (latency, packet loss, throughput)\n  - Alert flags and error reporting\n  - Firmware verification with MD5 hash\n\n**Bridge Failover & High Availability:**\n\n- **`BridgeStatusPackage`** (Type 610) - Bridge health monitoring (BRIDGE_STATUS per mqtt-schema v0.7.3+)\n  - Internet connectivity status\n  - Router signal strength (RSSI)\n  - Gateway IP and router channel\n  - Heartbeat for failure detection\n\n- **`BridgeElectionPackage`** (Type 611) - Automatic failover election (BRIDGE_ELECTION per mqtt-schema v0.7.3+)\n  - Router RSSI measurement\n  - Node uptime and free memory\n  - Distributed consensus protocol\n  - RSSI-based winner selection\n\n- **`BridgeTakeoverPackage`** (Type 612) - Bridge role announcement (BRIDGE_TAKEOVER per mqtt-schema v0.7.3+)\n  - New bridge identification\n  - Previous bridge tracking\n  - Takeover reason and timestamp\n  - Seamless failover notification\n\n- **`BridgeCoordinationPackage`** (Type 613) - Multi-bridge coordination (BRIDGE_COORDINATION per mqtt-schema v0.7.3+)\n  - Bridge priority levels (1-10)\n  - Role assignment (primary/secondary/standby)\n  - Peer bridge discovery\n  - Load balancing metrics\n  - Hot standby redundancy\n\n- **`NTPTimeSyncPackage`** (Type 614) - NTP time synchronization (TIME_SYNC_NTP per mqtt-schema v0.7.3+)\n  - Unix timestamp from NTP server\n  - Accuracy/precision in milliseconds\n  - NTP server source identification\n  - Mesh-wide time distribution from bridge\n\nAll packages provide type-safe serialization, automatic JSON conversion, and mesh-wide broadcasting or targeted messaging. They align with mqtt-schema v0.7.3+ for enterprise IoT integration.\n\n#### 🚀 Advanced Features\n\n**Broadcast OTA Distribution**\n\n- 📡 **98% Network Traffic Reduction** for 50+ node meshes\n- ⚡ **Parallel Firmware Updates** - All nodes receive simultaneously\n- 🔄 **Backward Compatible** - Single parameter enables broadcast mode\n- 📊 **Scales to 100+ Nodes** efficiently\n\n**MQTT Status Bridge**\n\n- 🌉 **Professional Monitoring** - Grafana, InfluxDB, Prometheus integration\n- 📈 **Real-Time Topology** - Complete mesh visualization over MQTT\n- 🎯 **Production Ready** - Enterprise IoT and commercial deployments\n- ⚙️ **Fully Configurable** - Adjustable intervals and feature toggles\n\nSee [BRIDGE_TO_INTERNET.md](BRIDGE_TO_INTERNET.md) for complete documentation.\n\n#### 🔄 Automatic Bridge Failover\n\n**High Availability for Critical Systems**\n\n- 🎯 **RSSI-Based Election** - Best router signal wins the bridge role; ties go to uptime, then free memory, then node ID\n- 📣 **A bridge that stops cleanly says so** - `mesh.stop()` on a bridge announces it is leaving, and the candidates hold their election within seconds\n- 🔍 **Heartbeat Detection** - A bridge that loses power is noticed when its last status ages out: the bridge timeout (60 s) plus up to one 30 s monitor tick\n- 🏠 **The mesh follows the bridge** - Peers learn the elected bridge's channel from the takeover message and treat it as home; a node that loses its uplink there rescans that channel first\n- 🌐 **Distributed Consensus** - No single coordinator; every node evaluates the same candidates by the same rules\n- 🛡️ **Split-Brain Prevention** - One election at a time, a 60 s hold between role changes, and a minimum router RSSI for a lone candidate\n- 🔬 **Validated on hardware** - The failover scenario runs on the Alteriom rig with a real router; see [CHANGELOG.md](CHANGELOG.md)\n\n**Use Cases:**\n- Fish farm alarm systems requiring 24/7 Internet connectivity\n- Industrial IoT networks with critical sensor monitoring\n- Smart building systems needing continuous cloud connectivity\n\n**Example:**\n```cpp\n// Enable automatic bridge failover\nmesh.setRouterCredentials(ROUTER_SSID, ROUTER_PASSWORD);\nmesh.enableBridgeFailover(true);\nmesh.onBridgeRoleChanged(&bridgeRoleCallback);\n\nvoid bridgeRoleCallback(bool isBridge, const String& reason) {\n  if (isBridge) {\n    Serial.printf(\"🎯 Promoted to bridge: %s\\n\", reason.c_str());\n  }\n}\n```\n\nSee [bridge_failover example](examples/bridge_failover/) for complete documentation.\n\n#### 🌉 Multi-Bridge Coordination\n\n**Enterprise Load Balancing and Geographic Redundancy**\n\n- 🏢 **Multiple Simultaneous Bridges** - Run 2+ bridges for load distribution\n- ⚖️ **Smart Load Balancing** - Three strategies: Priority-Based, Round-Robin, Best Signal\n- 🎯 **Priority System** - 10-level priority (10=primary, 1=standby)\n- 🔄 **Hot Standby** - Zero-downtime redundancy without failover delays\n- 🌍 **Geographic Distribution** - Bridges in different locations for large areas\n- 📊 **Traffic Shaping** - Route different data types through different bridges\n- 🤝 **Automatic Coordination** - Bridges discover and coordinate automatically\n\n**Use Cases:**\n- Large warehouses/factories with multiple Internet connections\n- Geographic distribution across multiple buildings\n- Traffic shaping (sensors → Bridge A, commands → Bridge B)\n- Load balancing for high-traffic deployments\n\n**Example:**\n```cpp\n// Primary bridge (priority 10)\nmesh.initAsBridge(MESH_PREFIX, MESH_PASSWORD,\n                  ROUTER_SSID, ROUTER_PASSWORD,\n                  &userScheduler, MESH_PORT, 10);\n\n// Enable bridge failover for high availability\nmesh.enableBridgeFailover(true);\n\n// Monitor bridge coordination (fires every ~30s per bridge)\nmesh.onBridgeCoordination(\n  [](const plugin::BridgeCoordinationPackage& pkg, uint32_t fromNode) {\n    Serial.printf(\"Bridge %u: priority=%d, load=%d%%\\n\",\n                  fromNode, pkg.priority, pkg.load);\n  }\n);\n\n// Get notified when bridge state changes\nmesh.onBridgeCoordinationChanged(\n  [](const plugin::BridgeCoordinationPackage& pkg, uint32_t fromNode,\n     TSTRING changeType) {\n    Serial.printf(\"Bridge %s: %u (role=%s)\\n\",\n                  changeType.c_str(), fromNode, pkg.role.c_str());\n  }\n);\n```\n\nSee [BRIDGE_TO_INTERNET.md](BRIDGE_TO_INTERNET.md) for multi-bridge documentation.\n\n#### 📬 Message Queue for Offline Mode\n\n**Zero Data Loss During Internet Outages**\n\n- 🛡️ **Priority-Based Queuing** - CRITICAL, HIGH, NORMAL, LOW priorities\n- 💾 **Smart Eviction** - CRITICAL messages never dropped, oldest LOW messages dropped first\n- 📡 **Automatic Online/Offline Detection** - Integrates with bridge status monitoring\n- 🔄 **Auto-Flush When Online** - Queued messages sent automatically when Internet restored\n- ⚙️ **Configurable** - Queue size, priorities, callbacks\n- 📊 **Queue Statistics** - Monitor queue usage, drops, flushes\n- 🎯 **Production Ready** - Battle-tested for critical sensor data\n\n**Use Cases:**\n- Fish farms with critical O2 alarms (original Issue #66 use case)\n- Industrial sensors that cannot lose data during outages\n- Medical monitoring systems requiring guaranteed delivery\n- Any system where data loss is unacceptable\n\n**Example:**\n```cpp\n// Enable message queue with max 100 messages\nmesh.enableMessageQueue(true, 100);\n\n// Queue a critical alarm for the Internet endpoint; it is sent when a\n// gateway with Internet is available and never evicted by lower priorities\nString criticalAlarm = \"{\\\"sensor\\\":\\\"O2\\\",\\\"value\\\":2.5,\\\"alarm\\\":true}\";\nmesh.queueMessage(criticalAlarm, \"https://api.example.com/alarm\", PRIORITY_CRITICAL);\n```\n\nSee [BRIDGE_TO_INTERNET.md](BRIDGE_TO_INTERNET.md) for message queue documentation.\n\n#### 🌐 Shared Gateway Mode\n\n**All Nodes as Internet Gateways with Automatic Failover**\n\n- 🌍 **Universal Internet Access** - All nodes connect to the same router and can send to Internet\n- 🔄 **Instant Failover** - Near-instant relay through mesh when local Internet fails\n- ⚡ **No Single Point of Failure** - Any node can serve as gateway, eliminating bridge dependency\n- 🎯 **Automatic Gateway Election** - RSSI-based election determines primary gateway\n- 🛡️ **Duplicate Prevention** - Built-in deduplication prevents multiple deliveries\n- 📊 **Delivery Confirmation** - Acknowledgment system confirms Internet delivery\n\n**Use Cases:**\n- Fish farm monitoring where any node can send critical O₂ alarms\n- Industrial sensor networks with redundant Internet paths\n- Smart building systems with resilient cloud connectivity\n- Remote monitoring stations with shared WiFi infrastructure\n\n**Example:**\n```cpp\n// Initialize all nodes as shared gateways\nbool success = mesh.initAsSharedGateway(\n    MESH_PREFIX, MESH_PASSWORD,\n    ROUTER_SSID, ROUTER_PASSWORD,\n    &userScheduler, MESH_PORT\n);\n\n// Send data with automatic failover\nmesh.sendToInternet(\n    \"https://api.example.com/data\",\n    sensorJson,\n    [](bool success, uint16_t status, String error) {\n        Serial.printf(\"Delivery: %s\\n\", success ? \"OK\" : error.c_str());\n    }\n);\n\n// Monitor gateway changes\nmesh.onGatewayChanged([](uint32_t oldGateway, uint32_t newGateway) {\n    Serial.printf(\"Primary gateway: %u -> %u\\n\", oldGateway, newGateway);\n});\n```\n\nSee [sharedGateway example](examples/sharedGateway/) for complete documentation.\n\n#### MQTT Bridge Commands\n\nThe MQTT bridge enables bidirectional communication between MQTT brokers and mesh networks:\n\n- **Device Control** - Send commands from web applications to mesh nodes via MQTT\n- **Configuration Management** - Query and update node configurations remotely\n- **Status Monitoring** - Receive real-time status updates and sensor data via MQTT\n- **Event Notifications** - Track node connections, disconnections, and mesh topology changes\n\n**Documentation:**\n\nSee [mqttBridge example](examples/mqttBridge/) for MQTT integration.\n\n**Examples:**\n\n- 🌉 [MQTT Bridge](examples/mqttBridge/mqttBridge.ino) - Gateway bridge with bidirectional MQTT-mesh routing\n- 📡 [Alteriom Sensor Node](examples/alteriom/alteriom.ino) - Example node using SensorPackage, CommandPackage, and StatusPackage\n\n### 🌐 Core Features\n\nThe library handles routing and network management automatically, so you can focus on your application. It uses JSON-based messaging and syncs time across all nodes, making it ideal for coordinated behaviour like synchronized light displays or sensor networks reporting to a central node. The original version was forked from [easymesh](https://github.com/Coopdis/easyMesh).\n\n### True ad-hoc networking\n\npainlessMesh is a true ad-hoc network, meaning that no-planning, central controller, or router is required. Any system of 1 or more nodes will self-organize into fully functional mesh. The maximum size of the mesh is limited (we think) by the amount of memory in the heap that can be allocated to the sub-connections buffer and so should be really quite high.\n\n### ESP8266 capacity\n\nThe ESP8266 is specified for **small meshes**, or as a **leaf** in larger ones.\nMeasured as an interior node of a seven-node mesh it runs at 10–13 KB free —\na working set that tracks its live connections and the traffic through them,\nnot a leak — and at that level a single 8 KB package or one OTA part can fail\nto allocate. That is the part's limit, not a library defect. Every ESP32\nfamily holds within a few percent of its starting heap in the same mesh.\n\nConfigure an ESP8266 as a leaf with `init(..., maxconn = 0)` (or `1` to allow\none child). The library checks every thirty seconds on ESP8266 and logs an\n`ERROR` when the node is below 12 KB free with more than one child attached;\n`mesh.overCapacity()` reports the same condition to the sketch, and\n`mesh.apChildren()` says how many are attached.\n\n### Validated on hardware\n\nEvery 2.0 change to failover, routing, channel following and the station\nscan was found in the serial logs of the Alteriom hardware-in-the-loop rig —\nan ESP32, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-S3 and ESP8266 in one mesh with\na real router — and confirmed there. The release gate is three consecutive\nclean runs of the rig's whole suite (mesh formation, delivery and\nacknowledgement, priorities, dedicated and shared gateways, Internet relay,\ngateway failover, mesh OTA, sustained soak). Each fix in the changelog names\nthe run that found it.\n\n### JSON based\n\npainlessMesh uses JSON objects for all its messaging. There are a couple of reasons for this. First, it makes the code and the messages human readable and painless to understand and second, it makes it painless to integrate painlessMesh with javascript front-ends, web applications, and other apps. Some performance is lost, but I haven’t been running into performance issues yet. Converting to binary messaging would be fairly straight forward if someone wants to contribute.\n\n### Wifi &amp; Networking\n\npainlessMesh is designed to be used with Arduino, but it does not use the Arduino WiFi libraries, as we were running into performance issues (primarily latency) with them. Rather the networking is all done using the native esp32 and esp8266 SDK libraries, which are available through the Arduino IDE. Hopefully though, which networking libraries are used won’t matter to most users much as you can just include painlessMesh.h, run the init() and then work the library through the API.\n\n### painlessMesh is not IP networking\n\npainlessMesh does not create a TCP/IP network of nodes. Rather each of the nodes is uniquely identified by its 32bit chipId which is retrieved from the esp8266/esp32 using the `system_get_chip_id()` call in the SDK. Every node will have a unique number. Messages can either be broadcast to all the nodes on the mesh, or sent specifically to an individual node which is identified by its `nodeId`.\n\n### Limitations and caveats\n\n- Try to avoid using `delay()` in your code. To maintain the mesh we need to perform some tasks in the background. Using `delay()` will stop these tasks from happening and can cause the mesh to lose stability/fall apart. Instead, we recommend using [TaskScheduler](http://playground.arduino.cc/Code/TaskScheduler) which is used in `painlessMesh` itself. Documentation can be found [here](https://github.com/arkhipenko/TaskScheduler/wiki/Full-Document). For other examples on how to use the scheduler see the example folder.\n- `painlessMesh` subscribes to WiFi events. Please be aware that as a result `painlessMesh` can be incompatible with user programs/other libraries that try to bind to the same events.\n- Try to be conservative in the number of messages (and especially broadcast messages) you sent per minute. This is to prevent the hardware from overloading. Both esp8266 and esp32 are limited in processing power/memory, making it easy to overload the mesh and destabilize it. And while `painlessMesh` tries to prevent this from happening, it is not always possible to do so.\n- Messages can go missing or be dropped due to high traffic and you can not rely on all messages to be delivered. One suggestion to work around is to resend messages every so often. Even if some go missing, most should go through. Another option is to have your nodes send replies when they receive a message. The sending nodes can then resend the message if they haven’t gotten a reply in a certain amount of time.\n\n## Installation\n\n### Arduino Library Manager\n\nThe library is in the Arduino Library Manager as **Alteriom PainlessMesh**:\n\n1. Open Arduino IDE\n2. Go to **Tools** → **Manage Libraries...**\n3. Search for **\"Alteriom PainlessMesh\"** and click **Install**; accept the dependencies it offers (ArduinoJson, TaskScheduler, PubSubClient)\n4. Also install **AsyncTCP** (ESP32) or **ESPAsyncTCP** (ESP8266) from the same dialog; the Library Manager cannot pick one per platform, so they are not listed as dependencies\n\nThe index follows a GitHub release within a day. The header `AlteriomPainlessMesh.h` gives access to the core painlessMesh functionality and the Alteriom extensions; `painlessMesh.h` alone gives the core.\n\n#### Manual Installation\n\n**Option 1: Download ZIP from GitHub Release**\n\n1. Go to [Releases](https://github.com/Alteriom/painlessMesh/releases/latest)\n2. Download the latest release ZIP file\n3. In Arduino IDE: **Sketch** → **Include Library** → **Add .ZIP Library...**\n4. Select the downloaded ZIP file\n5. Restart Arduino IDE\n\n**Option 2: Git Clone**\n\n```bash\ncd ~/Arduino/libraries/\ngit clone https://github.com/Alteriom/painlessMesh.git AlteriomPainlessMesh\n# Restart Arduino IDE\n```\n\n### PlatformIO\n\nThe library is published on the [PlatformIO registry](https://registry.platformio.org/libraries/sparck75/AlteriomPainlessMesh) as `sparck75/AlteriomPainlessMesh`. The registry also lists an `alteriom/AlteriomPainlessMesh` that stops at 1.10.0; its owner account is not one the project can publish from, so 2.0.0 and later live under `sparck75`, which has carried every automated release since 1.7.6. Name the owner in `lib_deps`, since the bare name matches both:\n\n```ini\nlib_deps =\n    sparck75/AlteriomPainlessMesh@^2.0.0\n```\n\n### Dependencies\n\npainlessMesh makes use of the following libraries, which can be installed through the Arduino Library Manager\n\n- [ArduinoJson](https://github.com/bblanchon/ArduinoJson)\n- [TaskScheduler](https://github.com/arkhipenko/TaskScheduler)\n- [ESPAsyncTCP](https://github.com/me-no-dev/ESPAsyncTCP) (ESP8266)\n- [AsyncTCP](https://github.com/ESP32Async/AsyncTCP) (ESP32) - v3.4.7 or later (v3.3.0 was the first to work on the ESP32-C6)\n\nIf platformio is used to install the library, then the dependencies will be installed automatically.\n\n## Quick Start with Alteriom Packages\n\n### Basic Sensor Node\n\n```cpp\n#include \"painlessMesh.h\"\n\n#define MESH_PREFIX \"whateverYouLike\"\n#define MESH_PASSWORD \"somethingSneaky\"\n#define MESH_PORT 5555\n\nScheduler userScheduler;\npainlessMesh mesh;\n\nTask taskSendMessage(TASK_SECOND * 30, TASK_FOREVER, []() {\n  String msg = \"Hello from node \";\n  msg += mesh.getNodeId();\n  mesh.sendBroadcast(msg);\n});\n\nvoid receivedCallback(uint32_t from, String &msg) {\n  Serial.printf(\"Received from %u: %s\\n\", from, msg.c_str());\n}\n\nvoid setup() {\n  Serial.begin(115200);\n  mesh.init(MESH_PREFIX, MESH_PASSWORD, &userScheduler, MESH_PORT);\n  mesh.onReceive(&receivedCallback);\n  userScheduler.addTask(taskSendMessage);\n  taskSendMessage.enable();\n}\n\nvoid loop() {\n  mesh.update();\n}\n```\n\n### Bridge to Internet (Auto Channel Detection)\n\nThe new bridge-centric architecture makes it easy to connect your mesh to the Internet via a router. The bridge node automatically detects the router's channel and configures the mesh accordingly.\n\n#### Bridge Node\n\n```cpp\n#include \"painlessMesh.h\"\n\n#define MESH_PREFIX     \"MyMeshNetwork\"\n#define MESH_PASSWORD   \"somethingSneaky\"\n#define ROUTER_SSID     \"YourRouterSSID\"\n#define ROUTER_PASSWORD \"YourRouterPassword\"\n\nScheduler userScheduler;\npainlessMesh mesh;\n\nvoid setup() {\n  Serial.begin(115200);\n  mesh.setDebugMsgTypes(ERROR | STARTUP | CONNECTION);\n  \n  // Single call does everything:\n  // 1. Connects to router and detects its channel\n  // 2. Initializes mesh on detected channel\n  // 3. Sets node as root/bridge\n  mesh.initAsBridge(MESH_PREFIX, MESH_PASSWORD,\n                    ROUTER_SSID, ROUTER_PASSWORD,\n                    &userScheduler, 5555);\n  \n  mesh.onReceive(&receivedCallback);\n}\n\nvoid loop() { mesh.update(); }\n\nvoid receivedCallback(uint32_t from, String& msg) {\n  // Forward mesh data to Internet services (MQTT, HTTP, etc.)\n}\n```\n\n#### Regular Nodes (Auto Channel Detection)\n\n```cpp\nvoid setup() {\n  Serial.begin(115200);\n  \n  // channel=0 means auto-detect the mesh channel\n  mesh.init(MESH_PREFIX, MESH_PASSWORD, &userScheduler, 5555, \n            WIFI_AP_STA, 0);\n  \n  mesh.onReceive(&receivedCallback);\n}\n```\n\nSee [BRIDGE_TO_INTERNET.md](BRIDGE_TO_INTERNET.md) for complete documentation.\n\n### Message Types\n\npainlessMesh uses two categories of message types:\n\n#### Protocol-Level Types (Internal Mesh Operations)\n\nThese types are used internally by painlessMesh for mesh management and are handled automatically:\n\n| Type | Name | Purpose |\n|------|------|---------|\n| 3 | `TIME_DELAY` | Network latency measurement between nodes |\n| 4 | `TIME_SYNC` | Time synchronization protocol messages |\n| 5 | `NODE_SYNC_REQUEST` | Node discovery and topology requests |\n| 6 | `NODE_SYNC_REPLY` | Node discovery and topology responses |\n| 7 | `CONTROL` | Deprecated, unused |\n| 8 | `BROADCAST` | Application data for every node |\n| 9 | `SINGLE` | Application data for one node |\n| 620 | `GATEWAY_DATA` | An Internet request routed to a gateway (`sendToInternet()`) |\n| 621 | `GATEWAY_ACK` | The gateway's answer to it |\n| 622 | `GATEWAY_HEARTBEAT` | Gateway health monitoring |\n| 630 | `MESSAGE_ACK` | Delivery confirmation for a message sent with a callback (2.0) |\n\n**Note**: These protocol types are managed automatically by painlessMesh and are not typically used in application code.\n\n#### Application-Level Package Types\n\nThese are the message types used by applications built on painlessMesh:\n\n| Type | Class | Purpose | Fields |\n|------|-------|---------|--------|\n| 200 | `SensorPackage` | Environmental data | `temperature`, `humidity`, `pressure`, `sensorId`, `timestamp`, `batteryLevel` |\n| 202 | `StatusPackage` | Health monitoring | `deviceStatus`, `uptime`, `freeMemory`, `wifiStrength`, `firmwareVersion` |\n| 204 | `MetricsPackage` | Sensor metrics (schema v0.7.2+) | `cpuUsage`, `freeHeap`, `bytesReceived`, `currentThroughput`, `connectionQuality`, `wifiRSSI` |\n| 400 | `CommandPackage` | Device control | `command`, `targetDevice`, `parameters`, `commandId` |\n| 600 | `MeshNodeListPackage` | Mesh node list (`MESH_NODE_LIST`) | `nodes[]` (nodeId, status, lastSeen, signalStrength), `nodeCount`, `meshId` |\n| 601 | `MeshTopologyPackage` | Mesh topology (`MESH_TOPOLOGY`) | `connections[]` (fromNode, toNode, linkQuality, latencyMs), `rootNode` |\n| 602 | `MeshAlertPackage` | Mesh alerts (`MESH_ALERT`) | `alerts[]` (alertType, severity, message, nodeId), `alertCount` |\n| 603 | `MeshBridgePackage` | Mesh bridge (`MESH_BRIDGE`) | `meshProtocol`, `fromNodeId`, `toNodeId`, `meshType`, `rawPayload`, `rssi`, `hopCount` |\n| 604 | `EnhancedStatusPackage` | Mesh status (MESH_STATUS per schema v0.7.2+) | `nodeCount`, `connectionCount`, `messagesReceived`, `messagesSent`, `avgLatency`, `packetLossRate` |\n| 605 | `HealthCheckPackage` | Mesh metrics (`MESH_METRICS`, schema v0.7.2+) | `healthStatus`, `problemFlags`, `memoryHealth`, `networkHealth`, `performanceHealth`, `recommendations` |\n| 610 | `BridgeStatusPackage` | Bridge health monitoring (`BRIDGE_STATUS`) | `internetConnected`, `routerRSSI`, `routerChannel`, `uptime`, `gatewayIP`, `timestamp` |\n| 611 | `BridgeElectionPackage` | Bridge failover election (`BRIDGE_ELECTION`) | `routerRSSI`, `routerChannel`, `uptime`, `freeMemory`, `timestamp`, `routerSSID` |\n| 612 | `BridgeTakeoverPackage` | Bridge role announcement (`BRIDGE_TAKEOVER`) | `previousBridge`, `reason`, `routerChannel`, `timestamp` |\n| 613 | `BridgeCoordinationPackage` | Multi-bridge coordination (`BRIDGE_COORDINATION`) | `priority`, `role`, `peerBridges[]`, `load`, `timestamp` |\n| 614 | `NTPTimeSyncPackage` | NTP time synchronization (`TIME_SYNC_NTP`) | `ntpTime`, `accuracy`, `source`, `timestamp` |\n\n## Key Features\n\n### Core Features\n\n- **🔄 Automatic Mesh Formation** - Nodes discover and connect automatically\n- **📡 Self-Healing Network** - Adapts when nodes join/leave\n- **⏰ Time Synchronization** - Coordinated actions across all nodes  \n- **🔀 Smart Routing** - Broadcast, point-to-point, and neighbor messaging\n- **🔌 Plugin System** - Type-safe custom message packages\n- **📱 ESP32 & ESP8266** - Full support for both platforms\n- **🛡️ Memory Efficient** - Optimized for resource-constrained devices\n\n### Advanced Features\n\n- **📡 Broadcast OTA** - Efficient firmware distribution for large meshes (50-100+ nodes)\n- **🌉 MQTT Bridge** - Professional monitoring with Grafana/InfluxDB/Prometheus\n- **📊 Topology Visualization** - D3.js, Cytoscape.js, Node-RED examples\n- **🎯 Production Ready** - Enterprise-grade stability and performance\n- **🔄 Automatic Bridge Failover** - RSSI-based election for high availability\n- **🌐 Multi-Bridge Coordination** - Load balancing and geographic redundancy\n- **💾 Message Queueing** - Zero data loss during Internet outages\n\n## Examples & Use Cases\n\n- **IoT Sensor Networks** - Environmental monitoring, smart agriculture\n- **Home Automation** - Distributed lighting, HVAC control\n- **Industrial Monitoring** - Equipment status, predictive maintenance  \n- **Event Coordination** - Synchronized displays, distributed processing\n- **Bridge Networks** - Connect mesh to WiFi/Internet/MQTT - [📖 Bridge Guide](BRIDGE_TO_INTERNET.md)\n\n## Latest Release: v2.0.3 (September 11, 2026)\n\n**`sendToInternet()` fixes — upgrade if any node of yours is a bridge or relays to the Internet.** On 2.0.2 a bridge's own sends were refused with \"No active mesh connections\" for the first 30 s after `initAsBridge()`, because the health check's first probe ran while the station was still associating. The gateway also decided delivery on the HTTP status alone: CallMeBot answers a refusal with HTTP 201, so a message it refused could be reported as sent, and every failure reached the origin node as a bare number. The gateway now reads the start of the response body, counts only 200/201/202/204 without a refusing body as delivered, and hands every failure to your callback with the service's own words. A destination whose name does not resolve no longer stalls an ESP32 gateway on every attempt: it is refused for 60 s after one failed lookup. And a bridge that reboots, crashes or is reflashed as a regular node no longer swallows the requests its peers still send it for a minute: it answers that it is not a gateway, and the sender moves to the next one at once.\n\n**2.0.2 — two gateway fixes.** On 2.0.1 a bridge could not reach the Internet through its own uplink at all (`initAsBridge()` never started the health checker that `sendToInternet()`'s local path depends on, so a bridge with no peer yet failed with \"No active mesh connections\"), and any request that failed *below* HTTP — refused, unresolvable, timed out — was reported to the origin node as `HTTP 65535`, a truncated `-1`, which also stopped it from being retried. Both are now asserted on the hardware rig, including a bridge with no mesh peer at all.\n\n**2.0.1 — a packaging fix over 2.0.0, no library behaviour changed.** 2.0.0's installation instructions named a PlatformIO package that has no 2.0.0 (`alteriom/…` stops at 1.10.0; releases go out under `sparck75`), and its GitHub release carried no library archive because the upload was refused by an immutable release.\n\n**2.0.0 — delivery confirmation, a unified send path, and a mesh that holds together on real hardware**\n\n- `sendSingle()` and `sendBroadcast()` accept a delivery callback — it fires with `delivered=true` and the round-trip latency on acknowledgment, or `delivered=false` on timeout — and a `SendOptions` struct that carries a priority and a callback in one call. Priority is kept across hops.\n- Thirty-odd defects in gateway failover, channel following, routing and the station scan, every one found in the serial logs of a six-family hardware rig and fixed there: a bridge that stops says so, the mesh follows an elected bridge to its channel and treats it as home, a node is in one place in every neighbour's tree, a dead connection is not a route, a stale scan does not consume a live one.\n- The ESP32-C5 and ESP32-C6 (Arduino core 3.x) no longer hang after a channel follow; the ESP8266 is specified for small meshes or as a leaf, and says so at runtime.\n- Gateway HTTP work is bounded by `NODE_TIMEOUT`, so an Internet request can no longer partition the mesh around its own gateway.\n- The release candidate passed the rig's whole suite three times in a row. Delivery confirmation and cross-hop priority need 2.0 on every node of the path.\n\n**[📋 Full CHANGELOG](CHANGELOG.md)**\n\n## Getting Help\n\n- **[Troubleshooting](USER_GUIDE.md#troubleshooting)** - Common issues, debug configuration, best practices\n- **[FAQ](docsify-site/troubleshooting/faq.md)** - Frequently asked questions\n- **[GitHub Issues](https://github.com/Alteriom/painlessMesh/issues)** - Bug reports and feature requests\n- **[API Documentation](https://alteriom.github.io/painlessMesh/#/api/doxygen)** - Generated API docs\n\n## Development\n\n### Building from Source\n\n```bash\ngit clone https://github.com/Alteriom/painlessMesh.git\ncd painlessMesh\ngit submodule update --init\ncmake -G Ninja .\nninja\nrun-parts --regex catch_ bin/  # Run tests\n```\n\n### Requirements\n\n- **ESP32**: Arduino core 2.0.x or 3.x; the ESP32-C5 and ESP32-C6 need 3.x\n- **ESP8266**: Arduino core 3.x\n- **Dependencies**: ArduinoJson 7.x, TaskScheduler 4.x  \n- **Development**: CMake, Ninja, Boost (for desktop testing)\n\n### Testing Bridge/Internet Functionality\n\npainlessMesh includes a **Mock HTTP Server** for testing `sendToInternet()` functionality without requiring actual Internet connectivity. This enables:\n\n- 🚀 **Fast testing cycles** - Instant responses instead of waiting for external APIs\n- 🔧 **Offline development** - No Internet connection required\n- ✅ **Reproducible scenarios** - Control all test conditions precisely\n- 🤖 **CI/CD automation** - Automated testing in pipelines\n\n```bash\n# Start mock server\ncd test/mock-http-server\npython3 server.py\n\n# Test various HTTP scenarios\ncurl http://localhost:8080/status/200     # Success\ncurl http://localhost:8080/status/404     # Not Found\ncurl http://localhost:8080/whatsapp?...   # WhatsApp API simulation\n```\n\nSee [Mock HTTP Server Documentation](test/mock-http-server/README.md) for complete usage guide.\n\n### CI/CD Pipeline\n\npainlessMesh features a state-of-the-art automated CI/CD pipeline:\n\n**🔄 Continuous Integration:**\n\n- Automated builds on gcc/clang with strict warnings\n- Cross-platform testing (Arduino CLI, PlatformIO)\n- Code quality and formatting validation\n- Comprehensive test suite execution\n\n**🚀 Automated Releases:**\n\n- Semantic versioning with automated tagging\n- GitHub Releases with changelog generation\n- Library package distribution\n- Documentation deployment to GitHub Pages\n- Arduino Library Manager & PlatformIO Registry integration\n\n**📋 Release Management:**\n\n```bash\n# Bump version and prepare release\n./scripts/bump-version.sh patch  # or minor, major\n./scripts/validate-release.sh    # Validate release readiness\n\n# Edit CHANGELOG.md, then commit with release prefix\ngit commit -am \"release: vX.Y.Z\"\ngit push origin main  # Triggers automated release\n```\n\nSee [RELEASE_GUIDE.md](RELEASE_GUIDE.md) for complete release documentation.\n\n## Contributing\n\nPull requests go to `Feat/next-release`, the integration branch for the next version; `main` holds released code and a push to it publishes a release. For branches, tests and what a pull request needs to show, see [CONTRIBUTING.md](CONTRIBUTING.md).\n\n\n## 📚 Documentation\n\n### 📖 Essential Guides\n\n| Document | Description |\n|----------|-------------|\n| **[📘 User Guide](USER_GUIDE.md)** | **Complete comprehensive guide** - Everything you need to know |\n| **[🌉 Bridge Guide](BRIDGE_TO_INTERNET.md)** | Connect mesh to Internet, MQTT, and cloud services |\n| **[📋 Documentation Hub](.github/DOCUMENTATION.md)** | Central navigation for all documentation resources |\n| **[🌐 Online Docs](https://alteriom.github.io/painlessMesh/)** | Interactive documentation website with API reference |\n\n### 🚀 Quick Links\n\n**New to AlteriomPainlessMesh?**\n- [Quick Start](USER_GUIDE.md#getting-started) - Get your first mesh running in 5 minutes\n- [Installation](USER_GUIDE.md#installation) - Arduino IDE and PlatformIO setup\n- [First Mesh](USER_GUIDE.md#your-first-mesh-network) - Build a multi-node network\n\n**Reference Documentation:**\n- [Core API](USER_GUIDE.md#api-reference) - painlessMesh class methods\n- [Alteriom Extensions](examples/alteriom/README.md) - SensorPackage, CommandPackage, StatusPackage\n- [Examples](examples/) - 18 example directories, 21 sketches, every one compiled for esp32 and esp8266 on each pull request; [.github/DOCUMENTATION.md](.github/DOCUMENTATION.md) lists what each shows\n\n**Need Help?**\n- [Troubleshooting](USER_GUIDE.md#troubleshooting) - Common issues and how to read the logs\n- [FAQ](docsify-site/troubleshooting/faq.md) - Frequently asked questions\n- [GitHub Issues](https://github.com/Alteriom/painlessMesh/issues) - Bug reports and support\n\n## 🔧 Quick API Reference\n\n**Core Methods:**\n```cpp\n#include \"painlessMesh.h\"\n\npainlessMesh mesh;\n\n// Initialize mesh\nmesh.init(MESH_PREFIX, MESH_PASSWORD, &userScheduler, MESH_PORT);\n\n// Main loop - call this in loop()\nmesh.update();\n\n// Send messages\nmesh.sendBroadcast(\"Hello everyone!\");\nmesh.sendSingle(nodeId, \"Hello specific node\");\n\n// Get information\nuint32_t myId = mesh.getNodeId();\nstd::list<uint32_t> nodes = mesh.getNodeList();\n\n// Register callbacks\nmesh.onReceive(&receivedCallback);\nmesh.onNewConnection(&newConnectionCallback);\nmesh.onChangedConnections(&changedConnectionCallback);\n\n// Debug configuration\nmesh.setDebugMsgTypes(ERROR | STARTUP | CONNECTION);\n```\n\n**For complete API documentation, see [USER_GUIDE.md](USER_GUIDE.md#api-reference) or [online docs](https://alteriom.github.io/painlessMesh/#/api/core-api).**\n\n## Funding\n\nIf you like the library please consider supporting its development. Your contributions help me spend more time improving painlessMesh.\n\n**[Donate via PayPal](https://www.paypal.com/paypalme/domlavoie)** • [dominic.lavoie@gmail.com](mailto:dominic.lavoie@gmail.com)\n\nMost development of painlessMesh has been done as a hobby, but some specific features have been funded by the companies listed below:\n\n![Sowillo](https://www.sowillo.com/wp-content/uploads/2019/04/Logo-Sowillo-1.png)\n\n[Sowillo](http://sowillo.com/en/)\n","readmeFilename":"README.md"}