{"_id":"@embedded-js/wifi-connection-manager","_rev":"1-6acb89febaad2e0de67c036c92eb9535","name":"@embedded-js/wifi-connection-manager","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@embedded-js/wifi-connection-manager","version":"1.0.0","_id":"@embedded-js/wifi-connection-manager@1.0.0","maintainers":[{"name":"screamz","email":"andreas.hanss67@gmail.com"}],"dist":{"shasum":"c48afbc4a55418ac2592e2e5872fefc5269ceaa8","tarball":"https://registry.npmjs.org/@embedded-js/wifi-connection-manager/-/wifi-connection-manager-1.0.0.tgz","fileCount":8,"integrity":"sha512-mOjuq5HpzVGcO+s1oDl860eTHlIiECsS1ObLbyC/Wov5KTD/gTwCpKlP1awevWfe6ffvrNcx3goqJUuyhZ4EfQ==","signatures":[{"sig":"MEUCIQDw36/T3q2q8X5lGghPGzZxZyJ3/r6AUCAdzL8zQ9GOcwIgT/iYVQctRo6MUcxCNuNbvn8Jd/AmtlW9fZdlKOKKYGE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9263},"main":"dist/index.js","type":"module","_from":"file:embedded-js-wifi-connection-manager-1.0.0.tgz","types":"./dist/index.d.ts","scripts":{"ci":"tsc && pnpm run build && biome check && pnpm run check-exports","build":"tsup","format":"biome check --write","check-exports":"attw --pack . --ignore-rules=cjs-resolves-to-esm"},"_npmUser":{"name":"screamz","email":"andreas.hanss67@gmail.com"},"_resolved":"/private/var/folders/rn/m4j774cj3kl9q8mftngq47g40000gn/T/07291af82b08f3a60690e47a99d2d2e9/embedded-js-wifi-connection-manager-1.0.0.tgz","_integrity":"sha512-mOjuq5HpzVGcO+s1oDl860eTHlIiECsS1ObLbyC/Wov5KTD/gTwCpKlP1awevWfe6ffvrNcx3goqJUuyhZ4EfQ==","_npmVersion":"10.9.0","description":"A wifi connection manager for Embedded JS that supports multiple networks and auto-reconnect.","directories":{},"_nodeVersion":"22.11.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","type-fest":"^4.27.0","typescript":"^5.6.3","@biomejs/biome":"1.9.4","@changesets/cli":"^2.27.9","@moddable/typings":"^5.2.0","@arethetypeswrong/cli":"^0.17.0"},"_npmOperationalInternal":{"tmp":"tmp/wifi-connection-manager_1.0.0_1731936228789_0.9034363367094902","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@embedded-js/wifi-connection-manager","description":"A wifi connection manager for Embedded JS that supports multiple networks and auto-reconnect.","version":"1.0.1","type":"module","main":"dist/index.js","author":{"name":"Andréas HANSS","email":"contact@codingspark.io"},"license":"MIT","keywords":["wifi","connection","manager","embedded-js","iot"],"repository":{"type":"git","url":"git+https://github.com/ScreamZ/wifi-connection-manager.git"},"devDependencies":{"@arethetypeswrong/cli":"^0.17.0","@biomejs/biome":"1.9.4","@changesets/cli":"^2.27.9","@moddable/typings":"^5.2.0","tsup":"^8.3.5","type-fest":"^4.27.0","typescript":"^5.6.3"},"scripts":{"build":"tsup","ci":"tsc && pnpm run build && biome check && pnpm run check-exports","format":"biome check --write","check-exports":"attw --pack . --ignore-rules=cjs-resolves-to-esm"},"_id":"@embedded-js/wifi-connection-manager@1.0.1","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/ScreamZ/wifi-connection-manager/issues"},"homepage":"https://github.com/ScreamZ/wifi-connection-manager#readme","_integrity":"sha512-U3EjXhxT6/lIrKfKjoYIZAZWBCHRNivwVi+my4e3kFMkuCCsXRehb0ZBSgEkYRW4r3FNSrhcBDw5e6j5lSBQ1w==","_resolved":"/private/var/folders/rn/m4j774cj3kl9q8mftngq47g40000gn/T/47a7112b82cb0e4068c580aca9567ef6/embedded-js-wifi-connection-manager-1.0.1.tgz","_from":"file:embedded-js-wifi-connection-manager-1.0.1.tgz","_nodeVersion":"22.11.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-U3EjXhxT6/lIrKfKjoYIZAZWBCHRNivwVi+my4e3kFMkuCCsXRehb0ZBSgEkYRW4r3FNSrhcBDw5e6j5lSBQ1w==","shasum":"6ce9c127ea264a5730d9aaa3c3444f7fc7ddb26a","tarball":"https://registry.npmjs.org/@embedded-js/wifi-connection-manager/-/wifi-connection-manager-1.0.1.tgz","fileCount":9,"unpackedSize":9830,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID28ynRm8KH8MdG3aWpuRYsQgvhH3SENKR3MW/I/ECcaAiArl4lC0hOO1zrz5cxYHeZtlI68nt9o63MspwZjD8Kj9g=="}]},"_npmUser":{"name":"screamz","email":"andreas.hanss67@gmail.com"},"directories":{},"maintainers":[{"name":"screamz","email":"andreas.hanss67@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wifi-connection-manager_1.0.1_1732363516264_0.7985332012822759"},"_hasShrinkwrap":false}},"time":{"created":"2024-11-18T13:23:48.691Z","modified":"2024-11-23T12:05:16.664Z","1.0.0":"2024-11-18T13:23:48.947Z","1.0.1":"2024-11-23T12:05:16.476Z"},"description":"A wifi connection manager for Embedded JS that supports multiple networks and auto-reconnect.","maintainers":[{"name":"screamz","email":"andreas.hanss67@gmail.com"}],"readme":"# Embedded : WiFi connection manager\n\n> [!IMPORTANT]\n> This module is ESM only and only available for usage with the Moddable SDK as it uses core dependencies.\n> Learn how to setup an Embedded JavaScript project using [xs-dev](https://xs-dev.js.org/).\n\nA robust solution to manage Wi-Fi connections in embedded systems using the Moddable SDK. `WiFiConnectionManager` simplifies the process of maintaining an active connection to a Wi-Fi access point.\n\n## Features\n\n- **Auto-reconnect:** Automatically retries connection if unavailable at startup or dropped during runtime.\n- **Connection lifecycle management:** Allows clean disconnection using `close`.\n- **Redundant message suppression:** Filters out repetitive `WiFi.disconnect` messages.\n- **Convenient readiness check:** Use the `ready` getter to quickly determine if Wi-Fi is connected.\n- **Connection timeout handling:** Forces a disconnect and retries if no IP address is assigned within a configurable timeout.\n- **Graceful recovery:** Waits a configurable duration after an unforced disconnect for a clean reconnect.\n- **Multiple access points:** Attempts connection to access points in order from a provided list.\n\n## Installation\n\n```sh\nnpm install @embedded-js/wifi-connection-manager\n```\n\n```ts\nimport Net from \"net\"; // From moddable SDK\nimport { WiFiConnectionManager } from \"@embedded-js/wifi-connection-manager\";\n\nconst manager = new WiFiConnectionManager(\n  [\n    // First access point to attempt\n    {\n      ssid: \"Freebox-ScreamZ\",\n      password: \"invalid!\", // Invalid password for testing in a simulator\n    },\n    // Second access point to attempt\n    {\n      ssid: \"Freebox-ScreamZ\",\n      password: \"good_password\",\n    },\n  ],\n  (message) => {\n    switch (msg) {\n      case WiFiConnectionManager.connected:\n        break; // still waiting for IP address\n      case WiFiConnectionManager.gotIP:\n        trace(`IP address ${Net.get(\"IP\")}\\n`);\n        break;\n      case WiFiConnectionManager.disconnected:\n        break; // connection lost\n    }\n  }\n);\n\n// Example: Checking if connected (procedural way)\nif (manager.ready) {\n  console.log(\"Wi-Fi is connected!\");\n}\n\n// Close connection when needed\nmanager.close();\n```\n","readmeFilename":"README.md","homepage":"https://github.com/ScreamZ/wifi-connection-manager#readme","keywords":["wifi","connection","manager","embedded-js","iot"],"repository":{"type":"git","url":"git+https://github.com/ScreamZ/wifi-connection-manager.git"},"author":{"name":"Andréas HANSS","email":"contact@codingspark.io"},"bugs":{"url":"https://github.com/ScreamZ/wifi-connection-manager/issues"},"license":"MIT"}