{"_id":"signalk-mareas-ihm","_rev":"58-018a756b7481b1051c8353c7a1f56a12","name":"signalk-mareas-ihm","dist-tags":{"latest":"2.12.0"},"versions":{"1.0.0":{"name":"signalk-mareas-ihm","version":"1.0.0","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","weather","utility","tides","mareas","ihm","spain","nautical","navigation","marine"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@1.0.0","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"852fd2698684535added9dd6ce3a7a5c47f17430","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-1.0.0.tgz","fileCount":16,"integrity":"sha512-Yno+zTUmAvpUuo6YBSlmT8xg/dwkKSY+6TnvIjPRB0A7vUpYC8uB1JOupZK5G5hd0hHze3ovUZhp4Kk7eiIwUA==","signatures":[{"sig":"MEUCIQDJ+g3XFGoLfcN8JwxUckOY3Wk0WbD3XA2SoVUnOhOAugIgZz+OepJjJedusdS98jRTMGT/Y9OFfUtUo0rnMdrmFyU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":416131},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"appIcon":"icon.svg","displayName":"Mareas (IHM)"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"10.8.2","description":"Official tide predictions from the Spanish Hydrographic Institute (IHM).","directories":{},"_nodeVersion":"20.20.0","dependencies":{"moment":"^2.30.1","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"d3":"^7.9.0","vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","@types/d3":"^7.4.3","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_1.0.0_1771002224337_0.9089744276582432","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"1.1.0":{"name":"signalk-mareas-ihm","version":"1.1.0","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","weather","utility","tides","mareas","ihm","spain","nautical","navigation","marine"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@1.1.0","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"b35ad6f152643cb84217e92b4ecf5921033e9dfb","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-1.1.0.tgz","fileCount":17,"integrity":"sha512-1bkGn57M2BpDjKLDiHWAKi5J7rLp7xzFmPpcBuli7wT+ofzCAWl/QRX7I9t3ts/0SvoOIRYsg+LHgRvWXsdUbQ==","signatures":[{"sig":"MEQCIBmSVMTn+7ilCuVRjvugepUdcJBY8fgmad34BM6iU1h0AiB/KWBQ+dIIVHTzw8FqUrqcqIOe5Pp7/50zwiqYnKIgLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":426767},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"appIcon":"icon.svg","displayName":"Mareas (IHM)"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"10.8.2","description":"Official tide predictions from the Spanish Hydrographic Institute (IHM).","directories":{},"_nodeVersion":"20.20.0","dependencies":{"moment":"^2.30.1","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"d3":"^7.9.0","vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","@types/d3":"^7.4.3","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_1.1.0_1771115059180_0.28745933513903243","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"1.1.1":{"name":"signalk-mareas-ihm","version":"1.1.1","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","weather","utility","tides","mareas","ihm","spain","nautical","navigation","marine"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@1.1.1","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"d147c7c340a6a1b9362e4da4eb7bf26a309469c3","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-1.1.1.tgz","fileCount":19,"integrity":"sha512-cY+KfrlKus1k0vY7Yqt0E9fUBHE+4DkRldbBCHikdcawdlmUvr5zbR82ZOj2SQdIMlmQPYJ7BZMQEGhoKS1lCA==","signatures":[{"sig":"MEUCIA/9vQsXPwpMEzfbToOCcavn/0aku7VuEhn2t68ooOAtAiEA4hP1rHXlxFImllTivb74bMnWyChKr85ddhaXYxZwYs0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":477884},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"appIcon":"icon.svg","displayName":"Mareas (IHM)"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"10.8.2","description":"Official tide predictions from the Spanish Hydrographic Institute (IHM).","directories":{},"_nodeVersion":"20.20.0","dependencies":{"moment":"^2.30.1","pdf-parse":"^1.1.1","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"d3":"^7.9.0","vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","@types/d3":"^7.4.3","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_1.1.1_1771199687227_0.5593190019516616","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"1.2.0":{"name":"signalk-mareas-ihm","version":"1.2.0","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","weather","utility","tides","mareas","ihm","spain","nautical","navigation","marine"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@1.2.0","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"2ffc975e0b9f245a2a67598f29ef5c4a9b8a5620","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-1.2.0.tgz","fileCount":17,"integrity":"sha512-XZoMcHc78TPyW9ainB5VWSTuwLXDAP505B4/wby7tOO1TgLPpZs8wssyaTjM5ndWyoiI91p2EvvBver4OL7iyw==","signatures":[{"sig":"MEYCIQCS0662Z/mSDUSyGp0v+pYE+SaOSb0Z5+N5UQ7fRTQLlAIhAJzV9susmpCkA9xYgiSLuH2aUFvqe5de2EJOJDwD+Lqy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":495990},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"appIcon":"icon.svg","displayName":"Mareas (IHM)"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"10.8.2","description":"Official tide predictions from the Spanish Hydrographic Institute (IHM).","directories":{},"_nodeVersion":"20.20.0","dependencies":{"moment":"^2.30.1","pdf-parse":"^1.1.1","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"d3":"^7.9.0","vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","@types/d3":"^7.4.3","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_1.2.0_1771459632777_0.7833359854211008","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"1.2.1":{"name":"signalk-mareas-ihm","version":"1.2.1","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","weather","utility","tides","mareas","ihm","spain","nautical","navigation","marine"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@1.2.1","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"27e82f3f59a58dcbec393c53ba84dca56710c262","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-1.2.1.tgz","fileCount":17,"integrity":"sha512-dwllN6njRioUixTkTEp5fZyWyZEe4l0iPEZDpLNJOiA9vzwYphbAIDgmMJQtiK0RM9EfoMoUVc7LVCblMERbhw==","signatures":[{"sig":"MEUCIHmJTksEe4X0gocehABBzPqh03NoNIbgxyqZfGcgraVRAiEAg4jy4nxirIE26jy1UZWDhuBKHyJ8p0XQKwn4q5faOaw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":506530},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"appIcon":"icon.svg","displayName":"Mareas (IHM)"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"10.8.2","description":"Official tide predictions from the Spanish Hydrographic Institute (IHM).","directories":{},"_nodeVersion":"20.20.0","dependencies":{"moment":"^2.30.1","pdf-parse":"^1.1.1","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"d3":"^7.9.0","vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","@types/d3":"^7.4.3","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_1.2.1_1771598068250_0.4087496830900037","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"1.3.0":{"name":"signalk-mareas-ihm","version":"1.3.0","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","weather","utility","tides","mareas","ihm","spain","nautical","navigation","marine"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@1.3.0","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"30340f4e95e5abc25b86ee3dbc46078538bc52fb","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-1.3.0.tgz","fileCount":19,"integrity":"sha512-RHLLiHCyJQINammJaWNgZ2yVJ4bp4Fsg+5L5LfbPy3Oc+KftESumV8QY9zzIz/1xJry5zRbMBhtN3UlY9dJyEg==","signatures":[{"sig":"MEUCIBVDc1+zFs+jcYEzZQHfjHlUZkMGVZbU3tEvCEvBuFnDAiEAj5lmZeOmd1xItLAfUsEKpLDHJo9by1hLqeIZ6KCWx3U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":706590},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"Mareas – IHM"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"10.8.2","description":"Official tide predictions from the Spanish Hydrographic Institute (IHM).","directories":{},"_nodeVersion":"20.20.0","dependencies":{"moment":"^2.30.1","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"d3":"^7.9.0","vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","@types/d3":"^7.4.3","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_1.3.0_1773008930506_0.1417461670550022","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"1.3.1":{"name":"signalk-mareas-ihm","version":"1.3.1","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","weather","utility","tides","mareas","ihm","spain","nautical","navigation","marine"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@1.3.1","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"d1bd7a77543058b9fd421d26c73cbaef45478d67","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-1.3.1.tgz","fileCount":19,"integrity":"sha512-porCJ3JEqNGq2QV+gm6wF5DOk9BLCD5ya+4bEWYrDAVg4miPFnK7pC65KkCvcrCzW4dq0ng5pGidadcUSGid3Q==","signatures":[{"sig":"MEYCIQDPSFDl+Y/7pJTqoOu4SLjg0NbhMJuU1mVfPS4wUlacZwIhAJoZnXePQtbFkPdjg3DpUHslfxhC39qd4/9KbeUM4Zhr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":793337},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"Mareas – IHM"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"10.8.2","description":"Official tide predictions from the Spanish Hydrographic Institute (IHM).","directories":{},"_nodeVersion":"20.20.0","dependencies":{"moment":"^2.30.1","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"d3":"^7.9.0","vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","@types/d3":"^7.4.3","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_1.3.1_1773692439131_0.11182724376695585","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.0.0":{"name":"signalk-mareas-ihm","version":"2.0.0","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","weather","utility","tides","mareas","ihm","spain","nautical","navigation","marine"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.0.0","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"f019dcd72642e95cd6c7278e0de4b84254a41f2e","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.0.0.tgz","fileCount":25,"integrity":"sha512-Kz43RGj8bm5a/yYfP504JAaaiUGjX+duU9jL1e6b1Ibqf9Mobbg4gjdvvKZkFzM+GilBlRaWBYhObWij82esvA==","signatures":[{"sig":"MEUCIQC8ZmJLapiJzcVErFFc5rmCyboo3ST8sUxKYs7rHDmvxwIgEDGQQRIP/kWlsEBliHfkSRQE7B9n+XOI1yOlK0lXV4o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1597865},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"Mareas – IHM"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Official tide predictions from the Spanish Hydrographic Institute (IHM).","directories":{},"_nodeVersion":"24.15.0","dependencies":{"moment":"^2.30.1","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"d3":"^7.9.0","vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","@types/d3":"^7.4.3","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.0.0_1779486000796_0.4943768582477548","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.0.1":{"name":"signalk-mareas-ihm","version":"2.0.1","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","weather","utility","tides","mareas","ihm","spain","nautical","navigation","marine"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.0.1","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"ba279c0e61db5979d0799e263ead1acc35369d72","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.0.1.tgz","fileCount":25,"integrity":"sha512-S4dXqZwKUizHjVGbFBbKmv8O9yqXmOyr8gPmr4A6lCl7rZI+4OPG56N0AgutQQCXd4sWvbk6bqOTw7tCPAul/Q==","signatures":[{"sig":"MEUCICcNxFVetu9BxT4q/I4cv+rgn3QkqLsijUrOI8BTlrThAiEAwrPEP5o+zdLbGW5OAllK4ocVl7YYZk0uBYJAKyxhF2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1600514},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"Mareas – IHM"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Official tide predictions from the Spanish Hydrographic Institute (IHM).","directories":{},"_nodeVersion":"24.15.0","dependencies":{"moment":"^2.30.1","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"d3":"^7.9.0","vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","@types/d3":"^7.4.3","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.0.1_1779486250382_0.16053747399004936","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.0.2":{"name":"signalk-mareas-ihm","version":"2.0.2","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","weather","utility","tides","mareas","ihm","spain","nautical","navigation","marine"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.0.2","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"b48ba2487c5e3f51141dc01a40b673ab5a78e2e6","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.0.2.tgz","fileCount":26,"integrity":"sha512-FuJcWEtuAITb6bPM37iNWGAjX4FNFOLcV0BTXM+Un0m6DdfSth+NWbYT/OcSPGI7hJo8dbyi8+RxQ2PL1xQwhA==","signatures":[{"sig":"MEUCIQD+kBLHu8Ai2zbgWTG5FLckp3mUVWkBC0kLn4Tupa/r1gIgUB81gTLs4kmoGfUQxljNqdsreZ9W3TXsaywek12nXu8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1894048},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"Mareas – IHM"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Official tide predictions from the Spanish Hydrographic Institute (IHM).","directories":{},"_nodeVersion":"24.15.0","dependencies":{"moment":"^2.30.1","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"d3":"^7.9.0","vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","@types/d3":"^7.4.3","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.0.2_1779544089793_0.16559268642019376","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.1.0":{"name":"signalk-mareas-ihm","version":"2.1.0","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","weather","utility","tides","mareas","ihm","spain","nautical","navigation","marine"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.1.0","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"ec431b1c6ff3f713090f75106698a2b197077912","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.1.0.tgz","fileCount":44,"integrity":"sha512-P9dHoeLbW2boBuHBbIVv5VDNQhJhbU/q0dKqxGWm/eOgQW1U7T3LU7tvwXjLQAoAet0lR6xn8JNLhzzEOK5qWQ==","signatures":[{"sig":"MEQCIBjIsatlVZhrKnNRDZceNDrMlUm9mNxYxoXUg7CA0j/gAiBkVOfC7OrWE6w8Oy3OdHR0etgD9boggUtLJbNOfZQLZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3428979},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"Mareas – IHM"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Official tide predictions from the Spanish Hydrographic Institute (IHM).","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.1.0_1780357332066_0.2779462557215344","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.1.1":{"name":"signalk-mareas-ihm","version":"2.1.1","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","weather","utility","tides","mareas","ihm","spain","nautical","navigation","marine"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.1.1","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"d5e18010545784801ec4d83f0ea11dd55fce5853","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.1.1.tgz","fileCount":44,"integrity":"sha512-pKJwqLmUo9uTjMjUvZ3u3kueAkeAdL/bz4OsIJS6A8ZkouO5PWdRJvhdob4TulIf/XK7/TuyUiKyZSHZTc48Jw==","signatures":[{"sig":"MEUCIFoy6NmnV4NAXRXeHw+ufQYgV2bi2rbd2wJIaFgBJDsyAiEA42mEZ2afSFgdj6KEXUpGt35JS0+vuc5MJoGbjqM00Lo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3505326},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"Mareas – IHM"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Official tide predictions from the Spanish Hydrographic Institute (IHM).","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.1.1_1780491352157_0.5552447799196261","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.1.2":{"name":"signalk-mareas-ihm","version":"2.1.2","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.1.2","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"46e7155d5645c5e3e0bdda9b9269ebf585963589","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.1.2.tgz","fileCount":44,"integrity":"sha512-CwKpi6f5Gd+rE6vGiLI2C2ju870iQWqN60BqKMmlBlL2p5E0R/AMqnWwiFxjILaaUixho3d8fzrNeP+e6gj4pQ==","signatures":[{"sig":"MEUCIHXET+5oKJxhGfzFYzLu8+9wz0lo7BjHab+lxX84bzgiAiEAkHPS9D24ihLmLn5lxYD+cqMNumPtXbL7tKUkmL2cfj8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3506773},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"Mareas – IHM"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Complete SignalK anchor watch & marine safety webapp. Voice alarms for anchor drag, AIS collision risk and grounding. Shelter / anchorage forecast (wind exposure + wave history). Weather forecast (Open-Meteo). Depth & scope calculator. Multi-source nautic","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.1.2_1780962106007_0.4540483186385804","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.1.3":{"name":"signalk-mareas-ihm","version":"2.1.3","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.1.3","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"085baa0b0fc2de483a7f91b0ffaab126156be562","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.1.3.tgz","fileCount":44,"integrity":"sha512-aOh5lS+8IAG8MZ74ZT/UYL5+gpjkuXVx4Kpl57SDCtQcKPRbvw65cUgzprHI1Cs4kiZ/sXkQDigMjVhuWTPJBQ==","signatures":[{"sig":"MEUCIQCAIryLQj4zdKVfk3P3x8TH74/9vDXIkc1WXDZHktk64AIgPsPkTzuLKqz71vMNo9ofbUWfxN6dzSEIaTvvJxlQRxo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3513143},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"Mareas – IHM"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Complete SignalK anchor watch & marine safety webapp. Voice alarms for anchor drag, AIS collision risk and grounding. Shelter / anchorage forecast (wind exposure + wave history). Weather forecast (Open-Meteo). Depth & scope calculator. Multi-source nautic","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.1.3_1780962625810_0.19413473394958847","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.1.4":{"name":"signalk-mareas-ihm","version":"2.1.4","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.1.4","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"5451da2c8283ea9a23e3b4219a702efa4b04a139","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.1.4.tgz","fileCount":44,"integrity":"sha512-doM0ExwmoD82ImxkeauaJsWqdDWnOQl/4ZttF5uHdRQ/Gfx7jh9cLploKbUV+D2y1jIByhsv6ejdlOQQ2fV2HQ==","signatures":[{"sig":"MEUCIQDTva+4fs31iVUgvGm/hIFq/LhuVwtlFDE21g6YtYrFAAIgL8wNN2go641Goj+hQfutqmGLEoeJnv7T/AGRCtVexTM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3523429},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"Mareas – IHM"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Complete SignalK anchor watch & marine safety webapp. Voice alarms for anchor drag, AIS collision risk and grounding. Shelter / anchorage forecast (wind exposure + wave history). Weather forecast (Open-Meteo). Depth & scope calculator. Multi-source nautic","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.1.4_1780963498968_0.5115203859509441","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.1.5":{"name":"signalk-mareas-ihm","version":"2.1.5","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.1.5","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"4e97f331b8abba5df26941544d7f5b2243a24575","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.1.5.tgz","fileCount":44,"integrity":"sha512-GS2FZIyQvGJjRoRzZa4fuWvohnRqraSC5J2EZXfMmdBt8kXr/2Jdx3PLeeGtN4TryLh9bmejlbJrFc+YafrJyQ==","signatures":[{"sig":"MEQCIB0p3gx7PecAjo5MUIK9EAXqODfT0vACt/H/yLC+NPZvAiBPbN5AfinyypmqNRSwV6qQ9DpT69FJNAHQEO7XpIq9nQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3536871},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"Mareas – IHM"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Complete SignalK anchor watch & marine safety webapp. Voice alarms for anchor drag, AIS collision risk and grounding. Shelter / anchorage forecast (wind exposure + wave history). Weather forecast (Open-Meteo). Depth & scope calculator. Multi-source nautic","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.1.5_1780964742976_0.9374485152931116","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.1.6":{"name":"signalk-mareas-ihm","version":"2.1.6","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.1.6","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"96721eedb475088a5d7c1336e6618a401c2edea4","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.1.6.tgz","fileCount":44,"integrity":"sha512-X3Shf98ylH8RfewmiEyeX1csSbTpEj38NPIv5dfFXW7TNQ9b2A+DkBE93SBZ8E4IRkHiP9xoXFSz8d4att+SyA==","signatures":[{"sig":"MEUCIQDJZkusEpxb5CZkvjhxrCH96ygro5UyrYIzmAHGx6fOXgIgNsV97xmxfKrW17FL2BK6g3jDhZu7l1jSmc21slrPkOo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3593129},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"Mareas – IHM"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Complete SignalK anchor watch webapp: voice alarms, shelter forecast, IHM Spain tides, multi-source nautical charts.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.1.6_1781051226962_0.7803965429597794","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.1.7":{"name":"signalk-mareas-ihm","version":"2.1.7","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.1.7","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"3a908e16119300a146d2a6076d19bb7e6390d6e1","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.1.7.tgz","fileCount":44,"integrity":"sha512-2bzUziK8b2pBpyaJtDp4gDtkN1t0T58geYXvRgWMgaJlCv7JI0RrARq3eJMn5dpNh8HBCMAJVHxulpv/7uQhhg==","signatures":[{"sig":"MEYCIQD9aRFyIEYtbd9HcmxIHuAveeG1AwycPGVvfUvZx7xNDQIhAIBTotYKyIzQAw5pnUblgZynh4SVbf6m/bzARNY9Lkh2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3593425},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"Mareas – IHM"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Built by a cruiser who got tired of basic anchor alarms that only beep on one device. This one runs the whole boat. Real-time sync across every screen, four voice warnings (anchor drag, AIS collision, grounding, severe weather), IHM Spain tide predictions","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.1.7_1781052002124_0.8041821289011055","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.1.8":{"name":"signalk-mareas-ihm","version":"2.1.8","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.1.8","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"7d432a2b95cd08ee3256e8070edec9f564f7f466","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.1.8.tgz","fileCount":44,"integrity":"sha512-mmjNX0X/7Qvq6DGbjyI8emM7QzwLqbtC8uM7M2+yXcsmGqC7RK81suaOFIXc5xTSQkruNU4FHQuTNZo+uQ9VjQ==","signatures":[{"sig":"MEUCIHaBIh/GvCQaDSEmDqM97ywgIDnpF2zNBvlneoLzEocpAiEAx0rV8gHflBVmq863USHyWjcuWjgBGKnIIeY8ftqz06k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3593227},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"Mareas – IHM"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Real-time anchor alarm synced across onboard devices and telegram, with beep and voice alerts, 48h shelter forecast, blended nautical/bathymetric charts, and depth/scope/tide tools. And linked to KIP and Freeboard.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.1.8_1781053005445_0.8263291124847605","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.1.9":{"name":"signalk-mareas-ihm","version":"2.1.9","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.1.9","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"cc96eeb9cca85200c50f1dca672248d123fba070","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.1.9.tgz","fileCount":44,"integrity":"sha512-yuWjOm9l9EiNg6qXTk+BrWp3hzmWLsOQhQuFzphgQkc/UpQ+N8mpurkwZvJ0vrN1QzQHCUqE4PHTnWTOjtKlDA==","signatures":[{"sig":"MEUCIDIBP9JC4hH2X+eEInVISw+/CPkd9x1S2pqq2cvUnoUnAiEA3sjv1/V8Rx8M8E+sAY8PmKmQSyLCvuxSZeUnGuS5sxA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3593175},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"Mareas – IHM"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Real-time anchor alarm synced across devices, with blended nautical/bathymetric charts for your anchorage, shelter forecasts, and advanced depth/scope/tide tools.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.1.9_1781053334453_0.734363947577301","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.1.10":{"name":"signalk-mareas-ihm","version":"2.1.10","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.1.10","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"3fda5bf5bbca8278420f62ff14047f5cffffdcd9","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.1.10.tgz","fileCount":44,"integrity":"sha512-qFCX6JeMlZEIUClnH9NPwJ3LOo2Njq5S3x0d8/i9G3c6pA5MgqQLSkY9k7QZsr4PSm2Jz3VWCSZWgmTcMJE4Fg==","signatures":[{"sig":"MEYCIQDyE3x1nwITHT7T0/Z2W/bgBXh+go6Zt+ba3p7UXAl8SAIhAN9+7Z6Uhq603Dfl1l14XF4hdcaQgkX6EZF5wqs++DqN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3594840},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"Mareas – IHM"},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Real-time anchor alarm synced across devices, with blended nautical/bathymetric charts for your anchorage, shelter forecasts, and advanced depth/scope/tide tools.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.1.10_1781129335266_0.39733691246747727","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.2.0":{"name":"signalk-mareas-ihm","version":"2.2.0","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.2.0","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"56f12e9dcebd314c9e48a2328968a6797c9d78f0","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.2.0.tgz","fileCount":63,"integrity":"sha512-KTkKCg+eExGvGPLxWDgK/o6DePn/3tURlUrJoV35i5fX1n84K1g66Fm0jqgjQRbbsRgJFNe6S6gxkzN0+oqKmA==","signatures":[{"sig":"MEYCIQDgSVBNkvCNL8bK4jQLYLQNLvxXlIr0r8g8v5Q4aKK0uQIhAL/EOur3tAJlCczD+Ye/hPkCPjr0uSuEOs+Umet+I4Yd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8711707},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"Mareas – IHM","screenshots":["./screenshots/01_main.png","./screenshots/02_mobile.png","./screenshots/03_mobile.png","./screenshots/04_mobile.png","./screenshots/05_mobile.png","./screenshots/06_mobile.png","./screenshots/07_mobile.png","./screenshots/08_mobile.png","./screenshots/09_mobile.png"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Advanced anchor watch manager for Signal K — user-friendly UI, multi-layer charts and transparencies (online and offline), AIS anti-collision surveillance, multi-device ringing alarms (drift, AIS, grounding, weather), shelter forecast and assessment, on-b","directories":{},"_nodeVersion":"24.15.0","dependencies":{"leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.2.0_1781963518621_0.8595247493783997","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.2.1":{"name":"signalk-mareas-ihm","version":"2.2.1","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.2.1","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"349aa2d67bf4c0d442ae333a36619d029e70e32b","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.2.1.tgz","fileCount":63,"integrity":"sha512-tMwpvtQdM/fZkNzXRknTEQSlz/5820DSO8XXVgCjkxfDBOX0QrcqtQtu8BF5mGBID88F6H1cu+VE8YNI6OFpOw==","signatures":[{"sig":"MEYCIQDTVBeeMh6dvWzDiTglTbS/GBZQqJREwpldnjLo/GgSUQIhANhRI48LKmGFS5+mcLU0YeQ0a1C7K8psk0YBCd1ULrGC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5780309},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"96ebf66469983d3fac6762ec84e95e70e9bf1379","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"Mareas – IHM","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg","./screenshots/07_mobile.jpg","./screenshots/08_mobile.jpg","./screenshots/09_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Advanced anchor watch manager for Signal K — user-friendly UI, multi-layer charts and transparencies (online and offline), AIS anti-collision surveillance, multi-device ringing alarms (drift, AIS, grounding, weather), shelter forecast and assessment, on-b","directories":{},"_nodeVersion":"24.15.0","dependencies":{"leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.2.1_1781968196440_0.9172627823431379","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.3.0":{"name":"signalk-mareas-ihm","version":"2.3.0","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.3.0","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"0daa76cbe824257cab5c8fb16fd988f4a8704681","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.3.0.tgz","fileCount":67,"integrity":"sha512-A8XhazSQb1QhWlJ2MpMecn+zj/oSLxJPLh0NC0e1MT6XcKwU3V0Mo4a1MTUafw5A0g2Ay8XA1wqyD0QG2omsrA==","signatures":[{"sig":"MEUCIHADzD7+daSxPCOJRrTqXxg3qUMPbpb2F815tTOom66bAiEAuFM6U+FlrvjDEk8jALFgtKUNHuWTg8Lx020pcVnXLLM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5289717},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"a3e8dddcb808362ca1e132d8170ee9756338fc7c","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"User-friendly UI, multi-layer charts and transparencies (online and offline), AIS anti-collision surveillance, multi-device ringing alarms (drift, AIS, grounding, weather), shelter forecast and assessment.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.5.48","@signalk/server-api":"^2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^16.3.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^25.0.3","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.4.19"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.3.0_1782161113775_0.3426876505632399","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.3.1":{"name":"signalk-mareas-ihm","version":"2.3.1","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.3.1","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"22a56fb417a0538893cb0c9f53b03f4f20aea35a","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.3.1.tgz","fileCount":67,"integrity":"sha512-3zd1XuMnrAjwfyiEMu4iUoPucftImfdtM+soWWHLKvijxZhiMHMBlf78PbnWiBXkGkvNcRCc2FSdvFRKnzgKjw==","signatures":[{"sig":"MEYCIQDtHE9/4etDae3RkxpI0dBOKRBwKcPnwoBRtV3cy9lHywIhAJlUY+E+ZO2scy9rxhhXqn1bSs5P9Y6Z2kw5gmTPG0mD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5315630},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"1fe769e7ed5d16045f498a4a6ae2c63bff9eae53","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"User-friendly UI, multi-layer charts and transparencies (online and offline), AIS anti-collision surveillance, multi-device ringing alarms (drift, AIS, grounding, weather), shelter forecast and assessment.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.3.1_1782173473761_0.7725681111024618","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.3.2":{"name":"signalk-mareas-ihm","version":"2.3.2","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.3.2","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"4900873d7017ad4b8218ac98c80506844d29249c","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.3.2.tgz","fileCount":68,"integrity":"sha512-hCHWm6tLucqb2zQFGWfbssIchCBYEQiPNyid9eqBi/v/YW7uaOsTpQ1qdzSvwmInbtpb2j/v/RviUatmvCtfXA==","signatures":[{"sig":"MEUCIQDLGPEsK8QMqsBGHXa0EcKXjXN9tqWMFfWhHPU/PO2L/wIgQSG+YxSMxRMntuosVKLIBrMRd+RfOILLqujkzKbeSe4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4664527},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"292595b36493353dce356d00d0d060c3fa444721","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"A complete anchor watch and marine safety webapp for Signal K — intelligent anchor monitoring with predictive swing radius, voice alarms (drag/AIS/grounding), AIS anti-collision with cross-session cache, shelter forecast, on-board wave measurement from IM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.3.2_1782343140796_0.02178857645865273","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.3.3":{"name":"signalk-mareas-ihm","version":"2.3.3","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.3.3","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"8f41161dac2b7c384fb54e56781fdcf3d0b0f2cf","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.3.3.tgz","fileCount":68,"integrity":"sha512-uHyeYm1HwslVTcwzk4e/n+QQi8dCwfxItJkFK254w1IiDe4293jLKvnJ9Nx8mOnN6/XLyNiq3BaAyS05Vjne7A==","signatures":[{"sig":"MEUCIEcj8R9w0WyI8BffK9sqbDZe7giQYxvpcSltxuKGJKoUAiEAkjOyv9J0x+0RXBUKVtJ2D3eLl5cdunmb/oZIhG1kBI4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4666049},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"1dd7369727403671bcc8fd34d9caa76b54de691c","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"A complete anchor watch and marine safety webapp for Signal K — intelligent anchor monitoring with predictive swing radius, voice alarms (drag/AIS/grounding), AIS anti-collision with cross-session cache, shelter forecast, on-board wave measurement from IM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.3.3_1782348290741_0.6360305988684263","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.3.4":{"name":"signalk-mareas-ihm","version":"2.3.4","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.3.4","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"8f3acb7c18e94105e8459f832589364bd1b3adea","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.3.4.tgz","fileCount":68,"integrity":"sha512-/ntUScrvxbTNeeHopSOVNt6cIcZ9QXTByRWg3HqLwxsJSloBb9hnJcEEpetf5zIvqhaBDPaMZiYdcoDfAGMdgA==","signatures":[{"sig":"MEUCIG99kgnt/n3McV3tquSVkefhPo8KsI/+JJjKdRZ5M/RKAiEAmRRjHmSWbIxWMp8CF/M5GPv4DNiiBbUbXWOfQ2PYkR0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4737272},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"9cd8e4946d9ad26c95b39486373b8890959c10dd","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"A complete anchor watch and marine safety webapp for Signal K — intelligent anchor monitoring with predictive swing radius, voice alarms (drag/AIS/grounding), AIS anti-collision with cross-session cache, shelter forecast, on-board wave measurement from IM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.3.4_1782455637582_0.39836868515224655","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.3.5":{"name":"signalk-mareas-ihm","version":"2.3.5","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.3.5","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"d182621671904066241d166b724e96bf4d3e8e3b","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.3.5.tgz","fileCount":68,"integrity":"sha512-TnKhGrWHOSwH4YjzZC/3m4OS/AB9tda9dxp/opdE/XeElUp7/sJyn9LxJJsYJ7L7Uag9XBLNGiXYopKDSqTErQ==","signatures":[{"sig":"MEUCIFVAAKJj1KvO5rNH18k8Er/Nuy7eNnIx8Nb75mk+jeF+AiEA3RrZoi8GdXVNLqjgylEOtFlmPWrHckFZpGZFvndkU/c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4797284},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"6ca582e6073b81c547c746e899d845260afcc1a8","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"A complete anchor watch and marine safety webapp for Signal K — intelligent anchor monitoring with predictive swing radius, voice alarms (drag/AIS/grounding), AIS anti-collision with cross-session cache, shelter forecast, on-board wave measurement from IM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.3.5_1782494294612_0.3373598311133681","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.4.0":{"name":"signalk-mareas-ihm","version":"2.4.0","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.4.0","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"3202102d123e2c44e14f89af8d7a04ad79b2f74c","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.4.0.tgz","fileCount":69,"integrity":"sha512-0XYoHdmDba+NfOmZGiQtwfRbJap40G1/r+pCFXBO7DlXZEiTCxMe9GvAkRQhRzG5Xx8zmuWn6cufu21rG580Gw==","signatures":[{"sig":"MEUCIAQ+aWMTiPJeyXxfc/ut9OwTGWGJzN+WN9+sIxTToE5SAiEArx1I8xffivKh1vrtc4b4F9zVKgoRlBVt7CwDPrUAkIs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5021214},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"ac1fc3fd0dcba937560152011eec7b22185173ae","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"A complete anchor watch and marine safety webapp for Signal K — intelligent anchor monitoring with predictive swing radius, voice alarms (drag/AIS/grounding), AIS anti-collision with cross-session cache, shelter forecast, on-board wave measurement from IM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.4.0_1782949953449_0.25867838270798393","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.5.0":{"name":"signalk-mareas-ihm","version":"2.5.0","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.5.0","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"50c188d8b36d80039e32327b12183fb18296ea77","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.5.0.tgz","fileCount":69,"integrity":"sha512-udAKH+e1J0Po8uJq0ccTUWDVo+QJu4Rullg1OCZph3UY3aMbnUWfA+m00NiG59HbeITqZaR9I9V+1OD8XyPmXw==","signatures":[{"sig":"MEYCIQDeX6ntnZVNjwQtBXEvifqfjagJCbG+HUCxQFBluFtadQIhAJGoiW9tCNqaOCMxiJtdCxa8ep/LuXKY2Zvo33roWvae","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5085095},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"bc63b59d6b2ed6ace63953a4a40d977c7391c51b","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"A complete anchor watch and marine safety webapp for Signal K — intelligent anchor monitoring with predictive swing radius, voice alarms (drag/AIS/grounding), AIS anti-collision with cross-session cache, shelter forecast, on-board wave measurement from IM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.5.0_1783041659799_0.3475317271974716","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.5.1":{"name":"signalk-mareas-ihm","version":"2.5.1","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.5.1","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"cf355377eeef8cefbe3010eca3acebba4bb34d97","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.5.1.tgz","fileCount":69,"integrity":"sha512-DLtw6GCGs5qV3Tsi5TYJgRy5Eg387wKun8q9ARO1lzsJJhUUs3V7lzDQxtTka0jGhKtSE2ujshrcmqNGrr1z6g==","signatures":[{"sig":"MEYCIQDmM4WOrbJBvgI9sRNg62DsrZTkcR8d/rkKd1MN4lmJOAIhAKvbhRK2Y5yqbiRj/SZSOLqPuF7cq7R2QIHNnbOvV6Ot","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5155510},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"4ec0d9e9dbc66316fb9f070bbfe3f5c383063c36","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"A complete anchor watch and marine safety webapp for Signal K — intelligent anchor monitoring with predictive swing radius, voice alarms (drag/AIS/grounding), AIS anti-collision with cross-session cache, shelter forecast, on-board wave measurement from IM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.5.1_1783121904618_0.8451780907362119","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.5.2":{"name":"signalk-mareas-ihm","version":"2.5.2","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.5.2","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"0053c498c6acf0b1a51f2e0d5b233fe3d4e7d42e","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.5.2.tgz","fileCount":69,"integrity":"sha512-NopQAdukskSWpO/M2yc0QelSoHRbU/Z8IFYuy5PXxrYmttegpURMsTURA17AALK1bNffM8ldMAFk8HdUKoLtbw==","signatures":[{"sig":"MEQCIEGyEdO+dyCjGr6/TN5xHOLbtq0Szr0cmjXf8Eil8IKkAiAHlPznhxgnMJ36DH5BXUe1GM760XBFVGmTw1TQgKSOqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5184679},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"436b27f77f495aade717cf1010cb5ab80d409f9e","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"A complete anchor watch and marine safety webapp for Signal K — intelligent anchor monitoring with predictive swing radius, voice alarms (drag/AIS/grounding), AIS anti-collision with cross-session cache, shelter forecast, on-board wave measurement from IM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.5.2_1783214573047_0.1348433640438853","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.5.3":{"name":"signalk-mareas-ihm","version":"2.5.3","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.5.3","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"cbeeb01fb9bbaf237a5ab40f0d4ffc8a84047102","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.5.3.tgz","fileCount":69,"integrity":"sha512-E1VH1avLlT2CeL144qvx3aGzXoi56Ig0JCc/V8H/330dIgCTBuy+yPc2EjiYnhofSjCobDBNxXPPxcSDtXiLGg==","signatures":[{"sig":"MEUCIGRr3OBYhrCvCeGrsNdzRFsbR9QMdW+8aZRA9gqzA1nYAiEAyw7K0rSEuKogmvoE8E1mktaLKjdxbqD4ftn1QRWu8wk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5208250},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"1773f6e40ca725b02cb292a61c5d6bbb10e3d7e0","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"A complete anchor watch and marine safety webapp for Signal K — intelligent anchor monitoring with predictive swing radius, voice alarms (drag/AIS/grounding), AIS anti-collision with cross-session cache, shelter forecast, on-board wave measurement from IM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.5.3_1783271536182_0.550421381273343","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.5.4":{"name":"signalk-mareas-ihm","version":"2.5.4","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.5.4","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"c8c8c78444ed1961794feceb8a14929d818e3175","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.5.4.tgz","fileCount":69,"integrity":"sha512-ThU7iUNUx5Tm4UVKeAFtSXjY4MzCAVzsMN/kSej9sf4IIUTdE5zLqvMQD8AQdOaf9+IKv3AL3ZNA2Ieic5Q8nA==","signatures":[{"sig":"MEYCIQCw4sbH/YHPExFwOd2+noTf/UDCyMTg3HXUztqH0VEzjQIhAN8XZtiupnEUtkf0PSm/QvprgB4gfOdQ7EO1YaUFFNU8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5301314},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"9d24c77514164bef5281b52755c00da305703c31","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"A complete anchor watch and marine safety webapp for Signal K — intelligent anchor monitoring with predictive swing radius, voice alarms (drag/AIS/grounding), AIS anti-collision with cross-session cache, shelter forecast, on-board wave measurement from IM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.5.4_1783298565530_0.9664471760001514","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.6.0":{"name":"signalk-mareas-ihm","version":"2.6.0","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","harmonic-constants","harmonic-analysis","tidal-constituents","openwatersio","ticon-4","noaa-tides","global-tides","worldwide-tides","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.6.0","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"edb5a3276628a1680dfae2311e3a2b3c7a8dda03","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.6.0.tgz","fileCount":71,"integrity":"sha512-AVuoiHzbufoqpx/fhDYGMVzp2OyE6qDqMgkWUIRfV+p4ge76aUcxv2vizsUGHSBgroMH97W050YrGtP74YZZlQ==","signatures":[{"sig":"MEYCIQDjwtaR/NllE+MtRnmM1jzuLMXzQX/3Q3aUIL5Q9CvHpwIhAMZNiAzaoaaoDWbS2TxxlTaNhzwxvVbvEwrD91Hx4Jmd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5693829},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"9b880f379c6ce0121fd4460eea6f0e93763cc5ec","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"A complete anchor watch and marine safety webapp for Signal K — intelligent anchor monitoring with predictive swing radius, voice alarms (drag/AIS/grounding), AIS anti-collision with cross-session cache, shelter forecast, on-board wave measurement from IM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.6.0_1783556000808_0.10138905350095828","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.6.1":{"name":"signalk-mareas-ihm","version":"2.6.1","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.6.1","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"7027be310b1e65bf68e1bbff88f87c7808beb859","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.6.1.tgz","fileCount":71,"integrity":"sha512-WPMRrF4+L5mmbrt8B6b0W3f1PWlBI098Ld3OYy8X2cAMhRECiA8xN9FQ/xwcxRsjViGuCU4Mbn16EH8lTViE6A==","signatures":[{"sig":"MEUCIH1o15lkxFbDobHHxpu3LHWC7yc0LyED2bKxeV6sJKPWAiEArxzEBJ4q0CgNZ0kqGsJMtUeEs6LUvMNzydGd4vVtYBc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5843551},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"fabe8e16af1b6a2a933936f0c4f9e5ea9107dfa4","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"deprecated":"Superseded by 2.7.0 (same content — 2.6.1 was published with the wrong SemVer bump)","repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"A complete anchor watch and marine safety webapp for Signal K — intelligent anchor monitoring with predictive swing radius, voice alarms (drag/AIS/grounding), AIS anti-collision with cross-session cache, shelter forecast, on-board wave measurement from IM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.6.1_1784146406543_0.15255890267271321","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.7.0":{"name":"signalk-mareas-ihm","version":"2.7.0","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.7.0","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"73952c69dbfa050f6c3d46a6f735b30f5721b42b","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.7.0.tgz","fileCount":71,"integrity":"sha512-AzyJ8Xw/dhwzv/0I2sSqFnPKUYcPCcEN3OfWGQkPrdp+rXdVGf5bMBA6mhvnRDB3Jbuf9ja1IBg1gYD+cbLaWQ==","signatures":[{"sig":"MEQCIF/SY/1JOeNHow29iDT12YYxSLZMxEleFeHRTKwEEyaPAiADFQDG46bzkTt1t+PhX0BW7AgM+SDzizvPFPUPcMYuvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5843551},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"b9363ef3b022541039f836f85c7e9f4b89ad79a1","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"A complete anchor watch and marine safety webapp for Signal K — intelligent anchor monitoring with predictive swing radius, voice alarms (drag/AIS/grounding), AIS anti-collision with cross-session cache, shelter forecast, on-board wave measurement from IM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.7.0_1784146556241_0.042151174058759455","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.8.0":{"name":"signalk-mareas-ihm","version":"2.8.0","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.8.0","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"43f8b015c4591b836fc5a7e1ae331cc531c6347c","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.8.0.tgz","fileCount":71,"integrity":"sha512-o8Vs/JVSBw4u0SDrk/Eywa3G4yY+UGH/DBTF1uhuJw4l83KxCUi9/WWdYjUzYd5uv9wmv0kCndyCwtS7D85vjA==","signatures":[{"sig":"MEUCIQChJ8ra5GuApJWjanDky+GqjvKdU7BATJN0ynB+crFIPgIgB/uBG3UWCSZEmnXlRny9F8gI/YMoNrywaARmX3yO8fQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5953821},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"8ac72c1085509cbc011d2ac6008c7507fc72f842","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"A complete anchor watch and marine safety webapp for Signal K — intelligent anchor monitoring with predictive swing radius, voice alarms (drag/AIS/grounding), AIS anti-collision with cross-session cache, shelter forecast, on-board wave measurement from IM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.8.0_1784334811366_0.8638444495319078","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.9.0":{"name":"signalk-mareas-ihm","version":"2.9.0","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.9.0","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"5a1fe961a871d2e11978b26f99210a5119b18ac1","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.9.0.tgz","fileCount":72,"integrity":"sha512-aI3JNYZwO6O0P3TvpaMr1iOMSOIhaMLVdUrQ7wDrs3OXTKTBbLj/YRBTBa25n9+aNhdiSm96AjbQThJuwHkJrA==","signatures":[{"sig":"MEUCIQCZ6uQrIX+ms7V/+kV2OQjUfttMDquHd3CzjII7SCLBAgIgN4ELxp2e5ajgteZypwVzxYZYkOes2rBzVspvLKWr5P8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6140874},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"bd3ab422d7737ae115507c21b4c217fd744253ea","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"A complete anchor watch and marine safety webapp for Signal K — intelligent anchor monitoring with predictive swing radius, voice alarms (drag/AIS/grounding), AIS anti-collision with cross-session cache, shelter forecast, on-board wave measurement from IM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.21.1","neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.9.0_1784582323991_0.47415116580224437","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.10.0":{"name":"signalk-mareas-ihm","version":"2.10.0","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.10.0","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"82bc2ddff5dc0170b19a5264e6730d0163e633ad","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.10.0.tgz","fileCount":74,"integrity":"sha512-C04M4QG4BaR+cVYxdMkv8eFQoXODsa7atQVlsOe1VsE4AClaKeE+/bjm8V6oV30r7RLQ2cepH8lUG2F+Xv5i7g==","signatures":[{"sig":"MEUCIAejXtuti9wmp2p23pu8CEkFksPJi+zl6fotsYHZZ+z/AiEA3WD10RmtFSRmEydzixzaXohixsNuwyg4Qw+7B2DWKi8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6253854},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"a56b6afb70013dfe38a579ae5e662c17df1cade6","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"A complete anchor watch and marine safety webapp for Signal K — intelligent anchor monitoring with predictive swing radius, voice alarms (drag/AIS/grounding), AIS anti-collision with cross-session cache and triple online engine (aisstream.io + aishub.net ","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.21.1","neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.10.0_1784654022668_0.29762761396570747","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.10.1":{"name":"signalk-mareas-ihm","version":"2.10.1","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.10.1","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"456ae68e1e989c312e6cf9f85022eceaefc56d1f","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.10.1.tgz","fileCount":76,"integrity":"sha512-WzEaIcqWk7rLigUG5qqpCGFW73BpRAK4p3Y50yjcuCaujE7qIIDn5U0z8GFqXhha9oAW1M5RvIsnbbBnwR6DGA==","signatures":[{"sig":"MEUCIQDM3Df7XeIAbNXvjcZUXiXcQzKwkK9PL2UVEPhCnNLLvAIgIWlN7FAlxuMi/xmk7OCis6TaWBQfkoPB1sjospBs3Sc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6267603},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"b16ddcb67993f9d8d9e7132a6e930f8df234d496","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Anchor watch + AIS anti-collision (triple online: aisstream/aishub/aisfriends) + shelter forecast + worldwide tides + on-board IMU waves for Signal K. Setup wizard, multi-user PIN, multi-layer charts. Runs on OpenPlotter / Raspberry Pi.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.21.1","neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.10.1_1784844303046_0.19362954289601708","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.10.2":{"name":"signalk-mareas-ihm","version":"2.10.2","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.10.2","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"c382f541c8589d145d4969d4466f5319e6383b2d","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.10.2.tgz","fileCount":76,"integrity":"sha512-hZhlngNj/3kAnEcVaz30BL6RCqEbjOm2i+KJxIZqVk/I+pKIEnTm9grfzTTTJcHXBfA6D109ifJdPrnphKwyVA==","signatures":[{"sig":"MEUCIHYzOYTB38phCAa16+/LMCSaYvSWOcqK6PgxTZIT/bWuAiEAwf1ElC92t2XA7NjhTG9dkC43/61x0KVfcf22hTLMGhg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6291528},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"b7c0ee7888e0e44fdaae2f769619a36f8fd84092","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Anchor watch + AIS anti-collision (triple online: aisstream/aishub/aisfriends) + shelter forecast + worldwide tides + on-board IMU waves for Signal K. Setup wizard, multi-user PIN, multi-layer charts. Runs on OpenPlotter / Raspberry Pi.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.21.1","neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.10.2_1784914247317_0.10410370073006958","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.10.3":{"name":"signalk-mareas-ihm","version":"2.10.3","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.10.3","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"e8088f0b0a955b72dfdcd20728e4d4b2de6020cd","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.10.3.tgz","fileCount":76,"integrity":"sha512-K7bJup+jodxev9wHh4QQwNXxMR/vs5rvUZHGnEWFB1+HXkLLQ3zXtEbtXyA7C8Sy8sfqGP029AtAEj0VwMRrRg==","signatures":[{"sig":"MEQCIGbKOAY6g7PqkGnZFeEPOPpUT/cA2MlZYGAr++ovBdlbAiBQlkOL55vnS+/R+WOEzY5B7JuyZUkJD2XeyG58BH/a2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6308800},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"9101aee42e589e63c91f66ef82784666c65388f9","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Anchor watch + AIS anti-collision (triple online: aisstream/aishub/aisfriends) + shelter forecast + worldwide tides + on-board IMU waves for Signal K. Setup wizard, multi-user PIN, multi-layer charts. Runs on OpenPlotter / Raspberry Pi.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.21.1","neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.10.3_1785087876223_0.8626792972079245","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.10.4":{"name":"signalk-mareas-ihm","version":"2.10.4","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.10.4","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"6b4edc64fb8d387e724715bfe32d8d8bfb309875","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.10.4.tgz","fileCount":76,"integrity":"sha512-XruRLzxGId54KqF2HI1VpqoQ1blPGA2l3xCSnzsctxpHEzJZ5XRUUx5vRh+nFMcam6sdEHW+h+xkNEcwE/H6qg==","signatures":[{"sig":"MEQCIFGoMwCJpbmf/Ma9il1rC14ZAMJBoztNRYRfUKJ3YFznAiA6Q2y/XnYlpidaEmulH3PbdFGId5oFSRpXGUfGpJSbQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6322386},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"36db939fb3e3caf466c2901b033eab751ddf70a3","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Anchor watch + AIS anti-collision (triple online: aisstream/aishub/aisfriends) + shelter forecast + worldwide tides + on-board IMU waves for Signal K. Setup wizard, multi-user PIN, multi-layer charts. Runs on OpenPlotter / Raspberry Pi.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.21.1","neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.10.4_1785091273147_0.5435152302798496","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.11.0":{"name":"signalk-mareas-ihm","version":"2.11.0","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.11.0","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"d5f7470fbf57d28c40c55af890a95872acff7bf5","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.11.0.tgz","fileCount":76,"integrity":"sha512-o7cHYyN7Xdz/3hRV2jKzNi/34X5sE9jxvlev1LQY2UaBeFoeQ8V0WPeik33OJss6r3d7Pjw5Gr0KQlo4tRBdRw==","signatures":[{"sig":"MEQCIBhYdpHVDXZwMJ5b8W4fd7YrVwUTV8ELKkRpiWpRISoRAiAslyWteXkxeKIx4Hrfpcc6KzWCKZ+O1h7otBSZz5lyGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6456976},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"c13c5d31bc47537479fb6b1c9e057ff3caa44c7c","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Anchor watch + AIS anti-collision (triple online: aisstream/aishub/aisfriends) + shelter forecast + worldwide tides + on-board IMU waves for Signal K. Setup wizard, multi-user PIN, multi-layer charts. Runs on OpenPlotter / Raspberry Pi.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.21.1","neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.11.0_1785531737023_0.9608466811781797","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.11.1":{"name":"signalk-mareas-ihm","version":"2.11.1","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.11.1","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"4f06ffebed28752ae02cb94d0fb996164f009a40","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.11.1.tgz","fileCount":76,"integrity":"sha512-hzZVOl51U1J81UWwGYVkTNu8JrbzBcsSjag9HqR1IUgR6ufmJi2YVH9HC9fuHHaAhslGYHSrvUNG4S3T9cbZhA==","signatures":[{"sig":"MEUCIQDrG1KEi+aTYxUqn1M9JaHBO0t1brbzwN+G+k/emD+9DgIgIP0jTHRorfxX/3Xue+nr45oqrkIGpHptUIwmPIhQcKQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6512329},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"64b0ad850be62af8326a83388e829901c360c303","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Anchor watch + AIS anti-collision (triple online: aisstream/aishub/aisfriends) + shelter forecast + worldwide tides + on-board IMU waves + live rain radar (RainViewer) + worldwide port search for Signal K. National chart layers preconfigured for Spain IHM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.21.1","neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.11.1_1785542532192_0.2754827797920423","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.11.2":{"name":"signalk-mareas-ihm","version":"2.11.2","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.11.2","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"ba13f5dafa6b8c8fae95047eb9ddd49a9717fa8f","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.11.2.tgz","fileCount":76,"integrity":"sha512-eW5X1I58Hxjr5B6yLI6TWWJgYcarO6HIuDjSt5zzlqKYpPK5xbXuTIRymnSGO2iRj6/cjFPhwpze+l9LvDYWCA==","signatures":[{"sig":"MEYCIQCi+27gzSQks7w/l5fftOwrHMMthKETwmPBWS29kCMD2QIhAI0h1Jg45/sNW2SoBzwy8N9INkLp0XUGxYho8Cv8W6WE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6588637},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"747901ff7364c8c3e0ccdae5b8cfba67507e22cf","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Anchor watch + AIS anti-collision (triple online: aisstream/aishub/aisfriends) + shelter forecast + worldwide tides + on-board IMU waves + live rain radar (RainViewer) + worldwide port search for Signal K. National chart layers preconfigured for Spain IHM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.21.1","neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.11.2_1785597017495_0.026142534352830316","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.11.3":{"name":"signalk-mareas-ihm","version":"2.11.3","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.11.3","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"8e122420bd34e75440eb0375e0a9c64be4d2fa7d","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.11.3.tgz","fileCount":76,"integrity":"sha512-BsvW24juChn5fe73jWUSrL+fS59SV1uAeWH4DidxMuMD6R/DK6pRuyxRc85su34g6id7e7Mn0va79ALlLyVEQg==","signatures":[{"sig":"MEYCIQDYWWUdcIezN98IXN8YXOVBw86p5jlb/7ooeOTG+7BfOAIhAMY2RGPaPopsc0l8Cyl4ZWSEuQtIWter4jjqdNP/ZUAg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6670345},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"eb60b6afedb997f3de5b641e5be840cc0e65d516","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Anchor watch + AIS anti-collision (triple online: aisstream/aishub/aisfriends) + shelter forecast + worldwide tides + on-board IMU waves + live rain radar (RainViewer) + worldwide port search for Signal K. National chart layers preconfigured for Spain IHM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.21.1","neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.11.3_1785856373562_0.3686286623371742","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.11.4":{"name":"signalk-mareas-ihm","version":"2.11.4","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.11.4","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"9e273cac069b3e9bcc5c0a03ec1a9efc117dab7a","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.11.4.tgz","fileCount":76,"integrity":"sha512-rb/zeR+vNjEFYxPkFzO32Q/Cv1AYbxEAWnaJpMd+PykuKyAozfJWWbsyYT0StO458zCDwMB/OE00klLYldouIQ==","signatures":[{"sig":"MEUCIQCws9OBsERj/cds0VDULTj/yQsTaP1G+hgC4fjDWotfuQIgZAWPOwvaYKyHQOULeU4ejVjVHE4m5Bavhzyh9tn1zTQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6683183},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"9b6664042da6ac376f0ee93504df64b2430f88eb","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Anchor watch + AIS anti-collision (triple online: aisstream/aishub/aisfriends) + shelter forecast + worldwide tides + on-board IMU waves + live rain radar (RainViewer) + worldwide port search for Signal K. National chart layers preconfigured for Spain IHM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.21.1","neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.11.4_1786890704377_0.9249947221801422","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.11.5":{"name":"signalk-mareas-ihm","version":"2.11.5","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.11.5","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"f0c95de5cd9ba451d946c7374e0d499b42e35edc","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.11.5.tgz","fileCount":76,"integrity":"sha512-miRL8e4hZ4nktr3CPH26W2inEi4+dvrfw7wCAQnN5JwZrpUFY0lzIqvHnzbHoC4fjYzEp+qfga3UO/RWBJQ5KA==","signatures":[{"sig":"MEQCIA25ZyM+myIAEdsIw8l2SDniwR84ZEoJ6nGnViAwkFwZAiB+yV3htWaGtZaYOXRINX1T8eTz3TolPw7gu6l/LY8s3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6701060},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"8c791d2fa86a5ad4180b1c0dc7aa4207386df808","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Anchor watch + AIS anti-collision (triple online: aisstream/aishub/aisfriends) + shelter forecast + worldwide tides + on-board IMU waves + live rain radar (RainViewer) + worldwide port search for Signal K. National chart layers preconfigured for Spain IHM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.21.1","neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.11.5_1786895383905_0.6093820487075992","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.11.6":{"name":"signalk-mareas-ihm","version":"2.11.6","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.11.6","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"a041ebf6c772851aa4bcca23e608e06270cc9d8e","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.11.6.tgz","fileCount":76,"integrity":"sha512-GADvIfDEh5jUgg97PLuOib+LN5hnsl9aahQVTW/DSOHRo6RtdMirBqgWUhitdY207L3TcFgpiEqSg7L6c4dsgA==","signatures":[{"sig":"MEQCIFf2m5+M86AtjBYmgdVNghg2JRdXXKwjEeQSK2HGeu5EAiACyPnKz3fHRVVKhKVjdJwgNbzMMCzxD0txaWCtfOQwPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6762651},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"1f6a661d59dec332a2a3c0ff34f31d5d3cb514ec","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Anchor watch + AIS anti-collision (triple online: aisstream/aishub/aisfriends) + shelter forecast + worldwide tides + on-board IMU waves + live rain radar (RainViewer) + worldwide port search for Signal K. National chart layers preconfigured for Spain IHM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.21.1","neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.11.6_1786903997971_0.24121973686889442","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.11.7":{"name":"signalk-mareas-ihm","version":"2.11.7","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.11.7","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"72e0c085de5c47d0c5870a63da73558d592bab90","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.11.7.tgz","fileCount":80,"integrity":"sha512-w4TwOjAeg1hqx90+PJQK40IBl/WsV3oZtYidH3r3hn1bKzF5cuTbQ0V89LFZzipkb196OI5JwtxybMOSvrGpLg==","signatures":[{"sig":"MEUCIGqVEr0rACRtSpruCyd5WAhheKwWy5rROXBUGyynDvMkAiEAz13I5jl4FMLNQC8C7ePvmyrlynz5LTl4Ra2R7EJ86UE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6799202},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"4e3c8e2b5c274980e2e15fa2f3745fc9a9934c73","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"aitonos","email":"tradesolutions@gmail.com"},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"11.12.1","description":"Anchor watch + AIS anti-collision (triple online: aisstream/aishub/aisfriends) + shelter forecast + worldwide tides + on-board IMU waves + live rain radar (RainViewer) + worldwide port search for Signal K. National chart layers preconfigured for Spain IHM","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.21.1","neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.11.7_1788723229068_0.9627376118075834","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.11.8":{"name":"signalk-mareas-ihm","version":"2.11.8","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","_id":"signalk-mareas-ihm@2.11.8","maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"},{"url":"https://github.com/s991116","name":"s991116"}],"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"cb4c0d6fd44965f1832172e04283f968cee1b228","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.11.8.tgz","fileCount":80,"integrity":"sha512-X37DGgxAs6RsY0j63Gdj/bwoH6ciELxQx+VSgkCGDfU/r1hDrdi3VrYHgc1kxWKu9DfsFUYvX4vrJ/rY37cCcQ==","signatures":[{"sig":"MEYCIQD071mX4xaCK3SLY82ufSTYHkWSSlcROoTOB7jOIBJixQIhAJsqmIWAEtNlP0S7pk9AJZ+sPREYftmaWU34IEcL+JV9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-mareas-ihm@2.11.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6799792},"main":"./dist/index.js","type":"module","exports":"./dist/index.js","gitHead":"8a78008a20efeee28432d04b8af8cb62fc325f01","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:96ea0fcf-194e-454f-8241-a974c9543c3d"}},"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"12.0.2","description":"Anchor watch + AIS anti-collision (triple online: aisstream/aishub/aisfriends) + shelter forecast + worldwide tides + on-board IMU waves + live rain radar (RainViewer) + worldwide port search for Signal K. National chart layers preconfigured for Spain IHM","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.21.1","neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-mareas-ihm_2.11.8_1788962361601_0.1884323919323132","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":true},"2.12.0":{"_id":"signalk-mareas-ihm@2.12.0","bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"dist":{"shasum":"94f631927d787f0576aa31d35a94d6cd3a4fc5a8","tarball":"https://registry.npmjs.org/signalk-mareas-ihm/-/signalk-mareas-ihm-2.12.0.tgz","fileCount":80,"integrity":"sha512-HRNUJhB9hHN387XsXnfFAYY3/uEp6PhkbJnOWXriPtUqq5lCfwlkxGHUZccaJSe4BmlHzuQ82ok5VijfyAcrdw==","signatures":[{"sig":"MEYCIQDO5SYgy6JeSsmyHruonK3qzyBTA58HOq955Yh2Y9jZVwIhALyQZ0eP77I23Ykrwr2VwnjZ6XXbJuWTIj0kusXw7GpG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICJL1vNH+zAu+rdTu0PD5J8YTaKF/cAXY9n3v8xV+MUZAiEAsZ9YYu1F6d3uhcY99nJZ71lOHo3TodhA+izUQpwApvM="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-mareas-ihm@2.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6851615},"main":"./dist/index.js","name":"signalk-mareas-ihm","type":"module","author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"exports":"./dist/index.js","gitHead":"48f77de2da0551256e6f5035ac444da915a8c7d8","license":"Apache-2.0","scripts":{"dev":"vite","lint":"eslint .","test":"node --test tests/*.test.js","build":"tsc -b && node scripts/copy-static.mjs && vite build","prepack":"npm run build","preview":"vite preview"},"signalk":{"webapp":"./public","appIcon":"./icon.svg","displayName":"AnchorWatch Pro: Smart Anchoring, AIS & Tides","screenshots":["./screenshots/01_main.jpg","./screenshots/02_mobile.jpg","./screenshots/03_mobile.jpg","./screenshots/04_mobile.jpg","./screenshots/05_mobile.jpg","./screenshots/06_mobile.jpg"]},"version":"2.12.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:96ea0fcf-194e-454f-8241-a974c9543c3d"}},"homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"_npmVersion":"12.1.0","description":"Anchor watch + AIS anti-collision (triple online: aisstream/aishub/aisfriends) + shelter forecast + worldwide tides + on-board IMU waves + live rain radar (RainViewer) + worldwide port search for Signal K. National chart layers preconfigured for Spain IHM","directories":{},"maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"_nodeVersion":"22.23.2","contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"},{"url":"https://github.com/s991116","name":"s991116"},{"url":"https://github.com/ABS0lute-1","name":"ABS0lute-1"}],"dependencies":{"ws":"^8.21.1","neaps":"^0.7.0","leaflet":"^1.9.4","pdf-parse":"^1.1.1","better-sqlite3":"^11.0.0","moment-timezone":"^0.6.2","@signalk/server-api":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","react":"^19.1.0","eslint":"^9.21.0","globals":"^17.6.0","react-dom":"^19.1.0","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/node":"^26.0.0","tailwindcss":"^4.1.3","@types/react":"^19.0.12","signalk-server":"^2.13.5","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.1.3","typescript-eslint":"^8.24.1","@vitejs/plugin-react":"^5.0.2","eslint-plugin-react-hooks":"^7.0.1","@react-hook/resize-observer":"^2.0.2","eslint-plugin-react-refresh":"^0.5.3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/signalk-mareas-ihm_2.12.0_1790179732829_0.735643550711254"},"signalk-plugin-enabled-by-default":true}},"time":{"created":"2026-02-13T17:03:44.215Z","modified":"2026-09-23T16:08:53.336Z","1.0.0":"2026-02-13T17:03:44.561Z","1.1.0":"2026-02-15T00:24:19.360Z","1.1.1":"2026-02-15T23:54:47.374Z","1.2.0":"2026-02-19T00:07:12.933Z","1.2.1":"2026-02-20T14:34:28.451Z","1.3.0":"2026-03-08T22:28:50.703Z","1.3.1":"2026-03-16T20:20:39.334Z","2.0.0":"2026-05-22T21:40:00.965Z","2.0.1":"2026-05-22T21:44:10.602Z","2.0.2":"2026-05-23T13:48:09.989Z","2.1.0":"2026-06-01T23:42:12.298Z","2.1.1":"2026-06-03T12:55:52.366Z","2.1.2":"2026-06-08T23:41:46.188Z","2.1.3":"2026-06-08T23:50:25.994Z","2.1.4":"2026-06-09T00:04:59.253Z","2.1.5":"2026-06-09T00:25:43.135Z","2.1.6":"2026-06-10T00:27:07.148Z","2.1.7":"2026-06-10T00:40:02.368Z","2.1.8":"2026-06-10T00:56:45.646Z","2.1.9":"2026-06-10T01:02:14.673Z","2.1.10":"2026-06-10T22:08:55.533Z","2.1.11":"2026-06-12T22:03:28.666Z","2.2.0":"2026-06-20T13:51:58.890Z","2.2.1":"2026-06-20T15:09:56.667Z","2.3.0":"2026-06-22T20:45:13.968Z","2.3.1":"2026-06-23T00:11:13.987Z","2.3.2":"2026-06-24T23:19:01.039Z","2.3.3":"2026-06-25T00:44:50.940Z","2.3.4":"2026-06-26T06:33:57.803Z","2.3.5":"2026-06-26T17:18:14.827Z","2.4.0":"2026-07-01T23:52:33.642Z","2.5.0":"2026-07-03T01:21:00.052Z","2.5.1":"2026-07-03T23:38:24.838Z","2.5.2":"2026-07-05T01:22:53.260Z","2.5.3":"2026-07-05T17:12:16.371Z","2.5.4":"2026-07-06T00:42:45.727Z","2.6.0":"2026-07-09T00:13:21.046Z","2.6.1":"2026-07-15T20:13:26.863Z","2.7.0":"2026-07-15T20:15:56.483Z","2.8.0":"2026-07-18T00:33:31.646Z","2.9.0":"2026-07-20T21:18:44.267Z","2.10.0":"2026-07-21T17:13:42.933Z","2.10.1":"2026-07-23T22:05:03.290Z","2.10.2":"2026-07-24T17:30:47.529Z","2.10.3":"2026-07-26T17:44:36.468Z","2.10.4":"2026-07-26T18:41:13.380Z","2.11.0":"2026-07-31T21:02:17.269Z","2.11.1":"2026-08-01T00:02:12.467Z","2.11.2":"2026-08-01T15:10:17.686Z","2.11.3":"2026-08-04T15:12:53.847Z","2.11.4":"2026-08-16T14:31:44.611Z","2.11.5":"2026-08-16T15:49:44.129Z","2.11.6":"2026-08-16T18:13:18.203Z","2.11.7":"2026-09-06T19:33:49.299Z","2.11.8":"2026-09-09T13:59:21.879Z","2.12.0":"2026-09-23T16:08:52.986Z"},"bugs":{"url":"https://github.com/Aitonos/signalk-mareas-ihm/issues"},"author":{"url":"https://github.com/Aitonos","name":"Aitonos"},"license":"Apache-2.0","homepage":"https://github.com/Aitonos/signalk-mareas-ihm#readme","keywords":["signalk","signal-k","signalk-webapp","signalk-node-server-plugin","signalk-category-weather","signalk-category-utility","signalk-category-instruments","signalk-category-ais","signalk-category-notifications","signalk-category-chart-plotters","signalk-plugin","anchor","anchor-watch","anchor-alarm","drag-alarm","anchor-drag","dragging","ais","ais-alarm","ais-collision","collision-avoidance","shelter","shelter-forecast","anchorage","anchorage-forecast","exposure","swing-radius","scope","chain","snubber","rode","depth","depth-calculator","sounder","echo-sounder","bathymetry","grounding-alarm","weather","weather-forecast","marine-weather","open-meteo","tide","tides","tide-prediction","tide-predictions","wms","enc","s-52","mbtiles","nautical-charts","marine-charts","chartplotter","chart-plotter","leaflet","openseamap","esri","marine","nautical","navigation","boat","yacht","sailing","cruising","liveaboard","safety","marine-safety","alarm","voice-alarm","tts","favourite-anchorages","multi-device","sse","real-time","ihm-spain","spain-tides","neaps","neaps-tides","neaps-tide-database","harmonic-constants","harmonic-analysis","harmonic-tide-prediction","tidal-constituents","openwatersio","openwaters","ticon-4","noaa-tides","global-tides","worldwide-tides","worldwide-tide-predictions","tide-atlas","lat-datum","chart-datum","signalk-tides-bridge","signalk-tides-integration","offline-tides","setup-wizard","onboarding-wizard","station-picker","city-search","geocoding"],"repository":{"url":"git+https://github.com/Aitonos/signalk-mareas-ihm.git","type":"git"},"description":"Anchor watch + AIS anti-collision (triple online: aisstream/aishub/aisfriends) + shelter forecast + worldwide tides + on-board IMU waves + live rain radar (RainViewer) + worldwide port search for Signal K. National chart layers preconfigured for Spain IHM","contributors":[{"url":"Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores","name":"Derivado de signalk-tides"},{"url":"https://github.com/s991116","name":"s991116"},{"url":"https://github.com/ABS0lute-1","name":"ABS0lute-1"}],"maintainers":[{"name":"aitonos","email":"tradesolutions@gmail.com"}],"readme":"# AnchorWatch Pro: Smart Anchoring, AIS & Tides\n\n**A complete anchor watch and marine safety webapp for Signal K.**\nIntelligent anchor monitoring, voice alarms, AIS anti-collision with cross-session cache, shelter forecast, on-board wave measurement and IHM Spain tides — running on your OpenPlotter / Raspberry Pi.\n\n**User-friendly UI designed for fingers in sunlight** — from the bridge Pi to the phone in the cockpit, the whole viewer adapts to your screen, keeping comfortable controls and readable text.\n\n🇬🇧 [English](#english) · 🇪🇸 [Español](#espanol)\n\n---\n\n## English\n\n### What you get\n\nA single Signal K plugin that turns your boat computer into a serious **anchor watch manager** with everything a cruiser actually needs:\n\n- ⚓ **Smart anchor watch** with predictive swing radius (tide + weather over the next 12 h) and automatic disarm when you leave under engine.\n- 🚢 **AIS anti-collision system** with cross-session cache, list filterable by name/MMSI, configurable radius slider, cross-device favorites, vesselfinder integration and drag detection on neighbouring boats.\n- 🌐 **Real-time multi-device sync** via SSE — phone, tablet and chartplotter all show the same state.\n- 🎙️ **Voice alarms** for drift, AIS collision and grounding (natural OGG voices, not synth).\n- 🏔️ **Shelter forecast** — 16-sector wind rose with automatic detection from OSM coastline + breakwaters, A-F grade + 0-100% protection score, 12 h strip, real-time downgrade from on-board vane/IMU.\n- 🌊 **On-board wave measurement** — 24 h history from your IMU (intensity, period, height by 5-minute bins).\n- 📊 **Anchoring calculator** — chain, scope, depth, swing prediction.\n- 🗺️ **Multi-layer chart viewer** — world bathymetry + Esri Satellite + OpenStreetMap + OpenSeaMap seamarks + offline MBTiles + Signal K registered charts, all with adjustable transparency. Plus **configurable national hydrographic chart layers** via a backend tile proxy (CORS + 30-day disk cache):\n  - **Free, ready to use (preconfigured)**: 🇪🇸 Spain (IHM ENC S-52), 🇫🇷 France (IGN Cartes littorales), 🇺🇸 USA (NOAA ENC), 🇳🇴 Norway (Kartverket), 🇫🇮 Finland (Traficom Merikarttasarja) and 🇨🇦 Canada (CHS NONNA bathymetry).\n  - **Restricted, bring your own URL / API key**: 🇵🇹 Portugal (IH ENC — free registration required) and 🇫🇷 France SHOM RASTER (paid subscription + INSPIRE key). The config modal in the app shows a hint per service explaining where to request the URL and links the official portal.\n- 🌧️ **Live rain radar** — RainViewer overlay with animated timeline (~2 h of past frames + ~30 min nowcast, play/pause + slider), adjustable opacity, no API key. Enabling radar temporarily extends the map's min-zoom so you can zoom out enough to see a continent-wide cloud pattern.\n- 🔍 **Worldwide port search** — sidebar button opens a search modal (OpenStreetMap Nominatim, prioritises marina / harbour / dock / bay); one click flies to the port and disables the boat auto-follow so the camera stays where you sent it.\n- 🌅 **Multi-source worldwide tides** with automatic engine selection by proximity: IHM Spain official (>70 stations) → [`signalk-tides`](https://github.com/openwatersio/signalk-tides) if installed → **NEAPS** harmonic-constants engine embedded (~7600 stations NOAA + TICON-4) → Open-Meteo as last resort.\n- 🌤️ **Weather forecast** via Open-Meteo (ICON, GFS, ECMWF, Arome, GEM, JMA).\n- 🌀 **Built-in shortcuts** to Windy, Windregatta.com, KIP, SK Freeboard.\n- 📱 **Works on any screen** — from a phone in hand to the big bridge monitor. The viewer reorders itself and buttons stay the right size for finger-touch use.\n- 🇬🇧 🇪🇸 **Fully bilingual UI** (English / Spanish) — switch live from the menu.\n- 👥 **Multi-user PIN control** — protect boat actions (drop/lift anchor, alarms, settings) with a master PIN + optional guest PINs (charter crew, family, etc.) with per-user notes and optional expiry. Read stays open.\n- 🔗 **Standard SignalK vocabulary** — publishes canonical `navigation.anchor.*` and `notifications.navigation.anchor` in parallel to our own paths, so any anchor watch app in your SK environment sees and reacts to our anchor state. WilhelmSK iOS/iPadOS push works out of the box (all critical alarms carry `method:[\"push\"]`).\n- 🚢 **Triple online AIS engine** (aisstream.io + aishub.net + aisfriends.com) — three independent optional feeds to configure in any combination when you have no VHF AIS receiver, or to extend VHF coverage. Symmetric dedup priority: VHF ▶ aisstream (real-time WebSocket) ▶ aishub/aisfriends (peer polling 1/min). Every accepted target is republished to the SignalK `vessels.*` tree so any consumer in your environment sees them alongside your VHF ones. Source badge (VHF/AS/AH/AF) shown next to each vessel name in the AIS list.\n- 🌊 **Shy tide provider** — auto-yields the `/signalk/v2/api/resources/tides` path if another tide plugin (opentide, signalk-tides, tidal-currents) is enabled on your server, so you can install this alongside them without conflicts. Configurable per user preference (auto / always publish / never publish).\n\nRuns on **Raspberry Pi** (OpenPlotter), **any Linux box** or **macOS / Windows** with Signal K Server.\n\n### ⭐ Why this plugin\n\nMost anchor watch apps are paid, closed source, single-device and tied to a vendor's hardware. This one:\n\n- Is **free and open source** (Apache 2.0).\n- Runs **on your existing Signal K server** — no extra hardware.\n- Shows the **same alarm on every device** (phone, tablet, chartplotter, Pi screen).\n- Uses your **boat's real sensors** (anemometer, depth, IMU) when available; falls back to forecast when not.\n- Has a **user-friendly UI** that scales from the phone to a 4K bridge monitor — readable text, finger-sized controls, no clutter.\n- Handles **edge cases** real cruisers hit: cross-session AIS data loss, anchor drag false positives when motoring out, GPS dropout, audio autoplay blocks, multiple AIS targets in zone, snooze + un-snooze, etc.\n\n### Key features in detail\n\n#### Anchor watch\n- **Predictive swing radius** combining depth, chain deployed and tide cycle for the actual swing area over the next 12 h — not a static circle.\n- **Two chain calculation methods**: classic ratio and the Vicente method (15 + 2 × depth).\n- **Drag detection** with audible siren that bypasses user mute for safety.\n- **Auto-disarm when leaving under engine**: if SOG stays above 3 kt for 30 s the watch disarms automatically. No more sirens when you forgot to lift in the app.\n- **GPS track** with time-gradient colouring so you can see exactly where the boat has been.\n- **Favourite anchorages** saved with a custom name (or auto-named from geolocation), synced across all your devices via the backend.\n\n#### AIS anti-collision system\n- **Persistent vessel database** for the last 72 h — name, length, beam, type, callsign, IMO. Boats appearing in the viewer already have their data filled in, no waiting for the next AIS static packet (which can take up to 6 minutes).\n- **5-minute ghost cache** — when a target loses VHF reception briefly, it stays visible on the map with a discrete X mark indicating \"estimated data\".\n- **Configurable radius slider** (0.5–50 km) controls what you see on the map and in the list.\n- **5-criteria sorting**: by distance, name, favourites first, MMSI or vessel type.\n- **Filter box** by name/MMSI with \"no results\" feedback.\n- **★ Favourites** persisted in the backend, synced across devices.\n- **🔍 vesselfinder button** per row — opens vesselfinder.com in a new tab with IMO + MMSI.\n- **Voice alarm** when a target enters your swing zone; 30 s grace before voice starts.\n- **Per-target ACK** with timestamp; silencing one boat doesn't disable the alarm for others.\n- **Drag detection on neighbours** — if an ACKed boat resumes motion towards you (>0.5 kn + closing >5 m/min), the alarm re-engages.\n- **Click-to-focus**: click any target → the map centres on it, auto-follows it and displays its distance next to the blue selection ring. Click the X on the ring to release.\n- **Vessel-type emoji**: list and popup show ⛵ sailing / 📦 cargo / 🛢️ tanker / 🛳️ passenger etc. at a glance.\n- **Anchor estimation** for other boats via track centroid analysis.\n\n#### Shelter forecasting\n- **16-sector wind rose** with automatic open/sheltered detection from OpenStreetMap coastline + man-made breakwaters/piers/groynes.\n- **A–F grade** + **0–100 % protection score** computed from forecast wind in exposed sectors.\n- **12 h strip** with per-hour grade and peak wind.\n- **24 h wave history** from on-board IMU (5-minute bins, autoscaling vertical axis up to 2 m).\n- **Real-time downgrade**: if the measured wind on the anemometer is higher than the forecast in an exposed sector, the grade is downgraded automatically.\n\n#### Tides\n- **Automatic multi-source engine** chosen by proximity to the boat, with graceful fallback:\n  1. **IHM Spain official** (>70 harbours) — highest priority when within Spanish waters.\n  2. **[`signalk-tides`](https://github.com/openwatersio/signalk-tides)** — if the openwatersio plugin is installed we call it as a bridge, so its own datum and station catalogue win.\n  3. **NEAPS harmonic-constants engine** *(embedded, ~7 600 stations)* — [openwatersio/neaps](https://github.com/openwatersio/neaps) + `@neaps/tide-database` (NOAA ~3 400 US + TICON-4 ~4 200 worldwide). Sub-minute time resolution, mm-level height accuracy, all computed locally (no network needed). Extremes are rebased to LAT (Lowest Astronomical Tide) computed over 365 d so heights match the harbour's \"zero\" as published by IHM/NOAA.\n  4. **Open-Meteo global** (FES2014) — last-resort fallback when no NEAPS station is within 80 km.\n- **Setup wizard** with Auto / Manual mode picker and **city-search** station selector: type \"Sydney\" or \"San Francisco\" and the wizard geocodes it, finds the nearest predictable NEAPS station and shows the distance; if no station is within 100 km it offers Open-Meteo automatically.\n- **Manual station override** persists across restarts; the backend serves as the single source of truth.\n- **Interactive tide curve** with cursor, peaks and 2-month offline cache.\n- **No API key required** for any tide source.\n\n#### Weather forecast\n- **Open-Meteo** integrated (free, no API key, no rate limit issues).\n- **Multiple models**: ICON (DWD), GFS (NOAA), ECMWF, Météo-France Arome, GEM, JMA.\n- **Sea temperature, wave height, period and direction** when available.\n- **48 h hourly table** + collapsible plain-language summary.\n\n#### Audio & alarms\n- **Per-language voice clips (OGG)** — natural, no robotic synth.\n- **Snooze 5 min** for AIS (anchor drag is never snoozable for safety).\n- **60 s user-mute window** — if you mute manually, even anchor drag cannot override for 60 s.\n- **Visibility-aware**: when phone screen wakes from sleep, the audio context resumes automatically.\n- **Vibration fallback** on Android when autoplay policy blocks audio.\n\n#### Charts & layers\n- **Base layers**: Esri Satellite, Bing Hybrid, Esri Clarity, Google Satellite, OpenStreetMap.\n- **Bathymetry overlay** and **OpenSeaMap** seamarks always available.\n- **National hydrographic charts by country** (configurable panel, WMS / WMTS / XYZ, backend proxy with 30-day disk cache):\n  - ✅ **Free & preconfigured** (green ✓ badge, one-click enable): 🇪🇸 Spain IHM ENC S-52, 🇫🇷 France IGN \"Cartes littorales\", 🇺🇸 USA NOAA ENC, 🇳🇴 Norway Kartverket, 🇫🇮 Finland Traficom Merikarttasarja A public, 🇨🇦 Canada CHS NONNA 10 bathymetry.\n  - ⚠ **Restricted / bring your own URL** (warning badge, click the ⚙ to configure): 🇵🇹 Portugal IH ENC (free registration with the Portuguese Hydrographic Institute) and 🇫🇷 France SHOM RASTER MARINE (paid subscription + INSPIRE key). The config modal in the app shows a bilingual hint per service — where to request access, what URL format is expected, whether an API key is needed, and links to the official portal.\n  - Each activated country layer routes through the plugin's own tile proxy that resolves CORS, caches tiles on disk for 30 days and normalises WMS 1.1.x / 1.3.x quirks.\n- **🌧 Live rain radar** — RainViewer overlay (past + nowcast frames) with adjustable opacity, no API key required.\n- **MBTiles offline** — drop your `.mbtiles` files in a folder and they show up automatically.\n- **Signal K registered charts** — any chart you've registered with Signal K appears as a layer.\n- **Per-layer opacity slider** with default values you can tweak.\n- **🔍 Worldwide port search** from the sidebar (OpenStreetMap Nominatim, prioritises marina / harbour / dock / bay), one click flies the map to the port and disables auto-follow so you stay put.\n\n#### Home Automation / KIP / Freeboard\n- **KIP buttons** for drop/lift and toggle alarms — open Freeboard-SK with one tap from the side bar.\n- **REST endpoints** for Alexa, Google Home, Node-RED, MQTT bridges, custom dashboards.\n- **`/toggle` endpoint** for single-button remote controls.\n\n#### User control (multi-user PIN, new in 2.4.0)\n- **Master + Guests** model. First PIN created becomes the master (manages the layer + everyday use). The master can add guest PINs at any time.\n- **Public read stays open**. Only mutating actions (drop/lift anchor, alarms, settings, PIN management) require a valid PIN. Anyone browsing the map or tides sees the same data as before.\n- **Optional expiry per guest** with quick-buttons: no expiry, +1 day, +7, +30, +90, +1 year. Charter crew gets a PIN that dies on Sunday, family gets a permanent one.\n- **Notes** and **PIN visible to master** — the master opens the guest card and sees their current PIN in plain text (the file lives on the owner's Pi, treated as boat-local).\n- **Active users list** shows each open session with device (OS · browser), IP and remaining minutes/hours/days. The master can revoke any guest session remotely.\n- **Master session persistent** (1 year cookie TTL) — the owner does not have to re-enter PIN every 30 minutes. Guest sessions match the PIN's expiry.\n- **Zero Signal K account setup required**. No `/admin/#/security` fiddling; everything is inside the plugin.\n\n### URLs\n\n| URL | What it does |\n|-----|----------|\n| `/signalk-mareas-ihm/` | Landing — choose Tides or Anchor Watch |\n| `/signalk-mareas-ihm/mareas` | Tides view (direct) |\n| `/signalk-mareas-ihm/visorfondeo` | Anchor Watch viewer (direct) |\n| `/signalk-mareas-ihm/mobile` | Mobile-first viewer (recommended on phones) |\n\n### Home Automation — REST endpoints\n\n```bash\n# One-button drop or lift (auto detects current anchor state)\ncurl -X POST http://openplotter.local:3000/signalk-mareas-ihm/api/anchor-watch/toggle\n\n# Drop anchor at current GPS\ncurl -X POST http://openplotter.local:3000/signalk-mareas-ihm/api/anchor-watch/drop\n\n# Lift anchor\ncurl -X POST http://openplotter.local:3000/signalk-mareas-ihm/api/anchor-watch/lift\n\n# Simple JSON status (for monitoring / dashboards)\ncurl http://openplotter.local:3000/signalk-mareas-ihm/api/anchor-watch/simple\n```\n\n### Minimum requirements\n\nThe plugin is ESM-only and uses modern features. Older stacks will not load it (`ERR_REQUIRE_ESM`).\n\n| Component | Minimum | Notes |\n|---|---|---|\n| **OpenPlotter** | **V4** | V3 ships SK 1.x, which cannot load ESM plugins. |\n| **Signal K Server** | **≥ 2.0** | 1.x uses `require()` for plugins → `ERR_REQUIRE_ESM`. |\n| **Node.js** | **≥ 20** | LTS. |\n| **System locale** | **UTF-8 (e.g. `es_ES.UTF-8`)** | A non-UTF-8 locale causes RTIMULib/pypilot to misparse gyro values and returns spurious 10-15° roll noise (breaks wave engine). Verify with `locale`. |\n| Emoji font (opt.) | `fonts-noto-color-emoji` | Without it, buttons show empty squares on Chromium/Pi. `sudo apt install fonts-noto-color-emoji`. |\n| Voice engine | `espeak` | Mandatory for voice alarms. Usually already installed on OpenPlotter. |\n\n⚠ **Do NOT enable `@signalk/set-system-time`** (ships with Signal K, sometimes on by default in OpenPlotter with internet). It runs `date -u -s` every 60 s with 1 s resolution and corrupts the IMU Kalman filter → phantom \"strong\" waves in port and jerky attitude. Disable in **SK → Server → Plugin Config → Set System Time → OFF**.\n\n### Quick install\n\nFrom the **Signal K Appstore**: search `signalk-mareas-ihm` and click install.\n\nOr from the command line:\n\n```bash\ncd ~/.signalk\nnpm install signalk-mareas-ihm@latest --save\nsudo systemctl restart signalk\n```\n\nThen open: `http://your-pi.local:3000/signalk-mareas-ihm/`\n\n### Tested on\n\n- Raspberry Pi 4 / 5 with OpenPlotter V4 — primary target.\n- Linux x64, macOS, Windows 11.\n- Firefox, Chrome, Safari on iOS / Android.\n\n### Disclaimer\n\nThis is a navigation aid, **not** a replacement for proper anchor watch with eyes on the boat. The author takes no responsibility for dragging, collision, grounding or any other incident. Use at your own risk.\n\n### Contributing & support\n\nIssues, PRs and feature requests welcome at the [GitHub repo](https://github.com/Aitonos/signalk-mareas-ihm).\n\n### Acknowledgements\n\n- **[@jeyrb](https://github.com/jeyrb)** — reported that other anchor watch apps in the SignalK ecosystem share the canonical vocabulary `navigation.anchor.*` and `notifications.navigation.anchor`, and that this plugin was living in its own custom namespace. That report drove the 2.8.0 interop work: canonical anchor paths are now published in parallel, notifications are auto-mirrored to standard SK paths, and every critical alarm carries `method:[\"push\"]` for WilhelmSK iOS/iPadOS push. Thank you.\n- **[@andmayfi92](https://github.com/andmayfi92)** — reported that when running outside our tide coverage area we were silently overwriting the `/signalk/v2/api/resources/tides` output of other tide plugins (opentide etc.) with our own empty response. That drove the 2.9.0 \"shy provider\" behaviour: we now detect other tide providers on the server and yield by default. Thank you.\n- **[@s991116](https://github.com/s991116)** — reported that Telegram push messages were hardcoded in Spanish regardless of the language setting, and delivered [PR #26](https://github.com/Aitonos/signalk-mareas-ihm/pull/26) with the fix: `sendTelegram` / `formatTelegramMessage` extracted to `src/telegram.ts` so the POST stays language-agnostic and the copy follows boat-global `_currentLang` (ES/EN), plus characterization tests. Landed in 2.10.1. Thank you.\n- **[@ABS0lute-1](https://github.com/ABS0lute-1)** — reported [issue #27](https://github.com/Aitonos/signalk-mareas-ihm/issues/27): the wave direction arrow on the overview page always pointed from the North even though the Shelter forecast popup showed the correct direction; Ctrl+F5 rendered it right for about half a second before snapping back. The precise \"half a second correct, then wrong\" observation pointed straight at a polling callback overwriting a good value. Root cause was a missing type check that let `null` from the on-board wave engine (when it rejects due to no motion) silently overwrite the Open-Meteo forecast. Fixed in 2.10.4 by extracting a single `_effectiveWaveDirDeg` helper used by both the overview map overlay and the Shelter popup, so the two views stay coherent by construction. Thank you.\n- **Pablo** (OpenPlotter testing partner) — two reports on consecutive days, both diagnosed with precision that pointed straight at the culprit:\n  1. `navigation.anchor.position` was being re-emitted as `null` every ~6 s while the boat was not anchored, causing `@meri-imperiumi/signalk-autostate` (and any other subscriber) to interpret each null delta as an \"anchor just lifted\" event and flip the boat state from \"moored\" to \"underway\" continuously. Fixed in 2.10.2: canonical anchor paths only emitted on state transitions (drop/lift), then silence.\n  2. Follow-up: 2.10.2 still emitted a single `null` at plugin startup (our state flag was `null` on boot and got treated as needing a clear), and Pablo also reported that `environment.tide.tendency` had unexpectedly switched from `\"Subiendo\"` to `\"Rising\"` — the value tracked the UI language of the webapp instead of being a stable SK canonical enum. Both fixed in 2.10.3: startup silent on the canonical bus, and tide paths (`tendency`, `flow.strength`, `flow.direction`) publish canonical enums (`rising`/`falling`/`slack`, `gentle`/`moderate`/`strong`, `flood`/`ebb`/`slack`) with new `*Localized` sibling paths for dashboards that want the human string. Thank you.\n\n### License\n\nApache 2.0. Derived from `signalk-tides` (Brandon Keepers, Joachim Bakke, Scott Bender and contributors).\n\n---\n\n<a id=\"espanol\"></a>\n\n## Español\n\nPlugin de Signal K que convierte tu OpenPlotter / Raspberry Pi en un **gestor avanzado de fondeo y seguridad marina**: vigilancia inteligente del ancla, alarmas de voz, sistema AIS anti-colisión con cache persistente entre sesiones, previsión de abrigo, medición de olas a bordo y mareas oficiales del IHM de España.\n\n**Interfaz user-friendly diseñada para usar con dedos a la luz del sol** — del Pi del puente al móvil en la bañera, todo el visor se adapta a tu pantalla manteniendo controles cómodos y textos legibles.\n\n### Qué te llevas\n\nUn único plugin de Signal K que convierte el ordenador del barco en un **gestor avanzado de fondeo** con todo lo que un navegante de verdad necesita:\n\n- ⚓ **Vigilancia inteligente del ancla** con radio de borneo predictivo (marea + meteo en próximas 12 h) y auto-desarme al salir a motor.\n- 🚢 **Sistema AIS anti-colisión** con cache persistente entre sesiones, lista filtrable por nombre/MMSI, slider de radio configurable, favoritos cross-device, integración vesselfinder y detección de garreo en barcos vecinos.\n- 🌐 **Sincronización multi-dispositivo en tiempo real** vía SSE — móvil, tablet y chartplotter muestran el mismo estado.\n- 🎙️ **Alarmas de voz** para garreo, colisión AIS y varada (voces naturales OGG, no sintéticas).\n- 🏔️ **Previsión de abrigo** — rosa de 16 sectores con auto-detección desde costa OSM + escolleras, grado A-F + 0-100% protección, strip 12 h, degradación en tiempo real por veleta/IMU.\n- 🌊 **Medición de olas a bordo** — historial 24 h desde el IMU (intensidad/período/altura por bin de 5 min).\n- 📊 **Calculadora de fondeo** — cadena, scope, sonda, predicción de borneo.\n- 🗺️ **Visor de cartas multicapa** — Batimetría mundial + Esri Satélite + OpenStreetMap + OpenSeaMap señalización marítima + MBTiles offline + cartas registradas en Signal K, con transparencias ajustables. Además **capas hidrográficas nacionales configurables** vía proxy backend (CORS + caché 30 días en disco):\n  - **Libres, listas para usar (preconfiguradas)**: 🇪🇸 España (IHM ENC S-52), 🇫🇷 Francia (IGN Cartes littorales), 🇺🇸 EE.UU. (NOAA ENC), 🇳🇴 Noruega (Kartverket), 🇫🇮 Finlandia (Traficom Merikarttasarja) y 🇨🇦 Canadá (CHS batimetría NONNA).\n  - **Restringidas, tú traes URL / clave API**: 🇵🇹 Portugal (IH ENC — registro gratuito requerido) y 🇫🇷 Francia SHOM RASTER (suscripción de pago + clave INSPIRE). El modal de configuración de la app incluye una pista por servicio explicando dónde solicitar la URL y enlaza al portal oficial.\n- 🌧️ **Radar de lluvia en vivo** — overlay RainViewer con timeline animado (~2 h de frames pasados + ~30 min de previsión, play/pause + slider), opacidad ajustable, sin API key. Al activar el radar el min-zoom del mapa se extiende temporalmente para poder alejar lo suficiente y ver un patrón de nubes a escala continental.\n- 🔍 **Búsqueda mundial de puertos** — botón en la sidebar que abre un modal (OpenStreetMap Nominatim, prioriza marina / harbour / dock / bay); un clic vuela al puerto y desactiva el auto-follow del barco para que la cámara no rebote de vuelta.\n- 🌅 **Mareas mundiales multi-fuente** con selección automática de motor por proximidad: IHM España oficial (>70 estaciones) → [`signalk-tides`](https://github.com/openwatersio/signalk-tides) si está instalado → motor de **NEAPS** por constantes armónicas embebido (~7600 estaciones NOAA + TICON-4) → Open-Meteo como último recurso.\n- 🌤️ **Previsión meteo** Open-Meteo (ICON, GFS, ECMWF, Arome, GEM, JMA).\n- 🌀 **Atajos integrados** a Windy, Windregatta.com, KIP, SK Freeboard.\n- 📱 **Versátil en cualquier pantalla** — desde el móvil en mano hasta el monitor grande del puente. El visor se reordena solo y los botones se mantienen del tamaño adecuado para tocar sin equivocarte.\n- 🇬🇧 🇪🇸 **UI bilingüe** con cambio en vivo desde el menú.\n- 👥 **Control de usuarios por PIN** — protege las acciones del barco (echar/levar, alarmas, configuración) con un PIN maestro + PINs de invitado opcionales (tripulación de charter, familia, etc.) con notas y caducidad opcional. La lectura queda abierta.\n- 🔗 **Vocabulario estándar de SignalK** — publica los paths canónicos `navigation.anchor.*` y `notifications.navigation.anchor` en paralelo a los nuestros propios, para que cualquier app de anchor watch de tu entorno SK vea y reaccione a nuestro estado de fondeo. El push nativo iOS/iPadOS de WilhelmSK funciona directamente (todas las alarmas críticas llevan `method:[\"push\"]`).\n- 🚢 **Motor AIS online triple** (aisstream.io + aishub.net + aisfriends.com) — tres feeds independientes opcionales para combinar como quieras cuando no tienes receptor AIS por VHF, o para extender la cobertura del VHF. Dedupe simétrica con prioridad: VHF ▶ aisstream (WebSocket en tiempo real) ▶ aishub/aisfriends (peer polling 1/min). Cada target aceptado se republica al árbol `vessels.*` de SignalK para que cualquier consumidor de tu entorno lo vea junto a los del VHF. Badge de fuente (VHF/AS/AH/AF) detrás del nombre en el listado AIS.\n- 🌊 **Proveedor de mareas \"tímido\"** — cede automáticamente el path `/signalk/v2/api/resources/tides` si hay otro plugin de mareas (opentide, signalk-tides, tidal-currents) activo en tu server, para que puedas instalarlo junto a ellos sin conflictos. Configurable por preferencia del usuario (auto / siempre publicar / nunca publicar).\n\nFunciona en **Raspberry Pi** (OpenPlotter), **cualquier Linux** o **macOS / Windows** con Signal K Server.\n\n### ⭐ Por qué este plugin\n\nLa mayoría de apps de anchor watch son de pago, código cerrado, un solo dispositivo y atadas al hardware del fabricante. Esta:\n\n- Es **libre y open source** (Apache 2.0).\n- Corre en tu **Signal K Server existente** — sin hardware extra.\n- Muestra la **misma alarma en todos los dispositivos** (móvil, tablet, plotter, pantalla del Pi).\n- Usa los **sensores reales del barco** (veleta, sonda, IMU) cuando están; cae a previsión si no.\n- Tiene **UI user-friendly** que escala del móvil al monitor 4K del puente — textos legibles, controles del tamaño del dedo, sin desorden visual.\n- Maneja los **casos límite** que sufre el navegante real: pérdida de datos AIS entre sesiones, falso positivo de garreo al salir motorizado, caída de GPS, bloqueo de autoplay del navegador, múltiples targets AIS en zona, snooze + un-snooze, etc.\n\n### Funcionalidades en detalle\n\n#### Vigilancia de fondeo\n- **Radio de borneo predictivo**: combina sonda, cadena largada y ciclo de marea para predecir el área real de borneo en las próximas 12 h — no un círculo estático.\n- **Dos métodos de cálculo de cadena**: ratio clásico y método Vicente (15 + 2 × sonda).\n- **Detección de garreo** con sirena audible que bypassa el mute del usuario por seguridad.\n- **Auto-desarme al salir a motor**: si el SOG se mantiene >3 kn durante 30 s, la vigilancia se desarma sola. No más sirenas cuando olvidas \"levar\" en la app.\n- **Track GPS** con coloreado por gradiente temporal para ver exactamente por dónde ha pasado el barco.\n- **Fondeos favoritos** guardados con nombre personalizado (o auto-nombrados por geolocalización), sincronizados entre todos tus dispositivos vía backend.\n\n#### Sistema AIS anti-colisión\n- **Base de datos persistente de barcos** durante las últimas 72 h — nombre, eslora, manga, tipo, callsign, IMO. Los barcos aparecen ya con sus datos sin esperar al próximo paquete AIS estático (que tarda hasta 6 minutos).\n- **Cache fantasma de 5 minutos** — cuando un target pierde recepción VHF brevemente, sigue visible en el mapa con una X discreta indicando \"datos estimados\".\n- **Slider de radio configurable** (0.5–50 km) controla qué barcos ves en mapa y en lista.\n- **5 criterios de ordenación**: distancia, nombre, favoritos primero, MMSI o tipo de barco.\n- **Caja de filtro** por nombre/MMSI con feedback \"Sin resultados\".\n- **★ Favoritos** persistidos en el backend, sincronizados entre dispositivos.\n- **🔍 Botón vesselfinder** por fila — abre vesselfinder.com en una pestaña nueva con IMO + MMSI.\n- **Alarma de voz** cuando un target entra en tu zona de borneo; 30 s de gracia antes de que arranque la voz.\n- **ACK por target** con timestamp; silenciar un barco no desactiva la alarma para otros.\n- **Detección de garreo en vecinos** — si un barco ya ACKeado reanuda movimiento hacia ti (>0.5 kn + acercamiento >5 m/min), la alarma se reactiva.\n- **Click-to-focus**: click en cualquier target → el mapa lo centra, lo sigue y muestra su distancia junto al aro azul de selección. Click en la X del aro para soltar.\n- **Emoji por tipo**: lista y popup muestran ⛵ velero / 📦 carga / 🛢️ tanque / 🛳️ pasaje, etc. a primera vista.\n- **Estimación del ancla** de otros barcos vía análisis de centroide del track.\n\n#### Previsión de abrigo\n- **Rosa de 16 sectores** con detección automática abierto/abrigado desde la línea de costa de OpenStreetMap + escolleras/muelles man-made.\n- **Grado A-F** + **% de protección 0-100** calculado desde el viento previsto en sectores expuestos.\n- **Strip de 12 h** con grado por hora y viento pico.\n- **Historial de olas 24 h** desde el IMU a bordo (bins de 5 minutos, eje vertical autoescalable hasta 2 m).\n- **Degradación en tiempo real**: si el viento medido por la veleta es mayor que el previsto en un sector expuesto, el grado baja automáticamente.\n\n#### Mareas\n- **Motor multi-fuente automático** elegido por proximidad al barco, con degradado limpio:\n  1. **IHM España oficial** (>70 puertos) — máxima prioridad dentro de aguas españolas.\n  2. **[`signalk-tides`](https://github.com/openwatersio/signalk-tides)** — si el plugin de openwatersio está instalado lo llamamos como puente, respetando su datum y su catálogo de estaciones.\n  3. **Motor NEAPS por constantes armónicas** *(embebido, ~7 600 estaciones)* — [openwatersio/neaps](https://github.com/openwatersio/neaps) + `@neaps/tide-database` (NOAA ~3 400 EE.UU. + TICON-4 ~4 200 mundiales). Resolución sub-minuto en tiempo, precisión milimétrica en altura, todo local (sin red). Los extremos se referencian al LAT (Lowest Astronomical Tide) calculado sobre 365 d, así las alturas coinciden con el \"cero\" del puerto que publica IHM/NOAA.\n  4. **Open-Meteo global** (FES2014) — último recurso cuando no hay estación NEAPS a menos de 80 km.\n- **Wizard de configuración** con selector Auto/Manual y **búsqueda por ciudad** para la estación: escribe \"Sídney\" o \"San Francisco\" y el asistente geocodifica, busca la estación NEAPS predecible más cercana y muestra la distancia; si ninguna está a menos de 100 km ofrece Open-Meteo automáticamente.\n- **Override manual de estación** persistente entre reinicios; el backend es la fuente de verdad.\n- **Curva de marea interactiva** con cursor, picos y caché offline de 2 meses.\n- **Sin API key** para ninguna fuente de mareas.\n\n#### Previsión meteo\n- **Open-Meteo** integrado (gratis, sin API key, sin problemas de rate limit).\n- **Múltiples modelos**: ICON (DWD), GFS (NOAA), ECMWF, Météo-France Arome, GEM, JMA.\n- **Temperatura del mar, altura, período y dirección de ola** cuando están disponibles.\n- **Tabla horaria 48 h** + resumen colapsable en lenguaje claro.\n\n#### Audio y alarmas\n- **Clips de voz por idioma (OGG)** — naturales, no síntesis robótica.\n- **Snooze 5 min** para AIS (garreo nunca es snoozable por seguridad).\n- **Ventana mute-usuario 60 s** — si silencias manualmente, ni el garreo crítico puede reactivar el audio durante 60 s.\n- **Consciente de visibilidad**: cuando la pantalla del móvil despierta, el audio se reanuda automáticamente.\n- **Vibración fallback** en Android cuando la política de autoplay bloquea el audio.\n\n#### Cartas y capas\n- **Capas base**: Satélite Esri, Bing Hybrid, Esri Clarity, Google Satélite, OpenStreetMap.\n- **Batimetría** y **OpenSeaMap** (señalización marítima) siempre disponibles.\n- **Cartas hidrográficas nacionales por país** (panel configurable, WMS / WMTS / XYZ, proxy backend con caché 30 días en disco):\n  - ✅ **Libres y preconfiguradas** (badge verde ✓, un clic para activar): 🇪🇸 España IHM ENC S-52, 🇫🇷 Francia IGN \"Cartes littorales\", 🇺🇸 EE.UU. NOAA ENC, 🇳🇴 Noruega Kartverket, 🇫🇮 Finlandia Traficom Merikarttasarja A public, 🇨🇦 Canadá CHS batimetría NONNA 10.\n  - ⚠ **Restringidas / tú traes URL** (badge de aviso, pulsa ⚙ para configurar): 🇵🇹 Portugal IH ENC (registro gratuito en el Instituto Hidrográfico portugués) y 🇫🇷 Francia SHOM RASTER MARINE (suscripción de pago + clave INSPIRE). El modal de configuración de la app muestra una pista bilingüe por servicio — dónde solicitar el acceso, qué formato de URL se espera, si hace falta clave API, y enlace al portal oficial.\n  - Cada capa nacional activada pasa por el proxy de teselas del propio plugin: resuelve CORS, cachea 30 días en disco y normaliza las diferencias entre WMS 1.1.x y 1.3.x.\n- **🌧 Radar de lluvia en vivo** — overlay RainViewer (frames pasados + previsión) con opacidad ajustable, sin API key.\n- **MBTiles offline** — pon tus archivos `.mbtiles` en una carpeta y aparecen automáticamente.\n- **Cartas registradas en Signal K** — cualquier carta registrada con Signal K aparece como capa.\n- **Slider de opacidad por capa** con valores por defecto editables.\n- **🔍 Búsqueda mundial de puertos** desde la sidebar (OpenStreetMap Nominatim, prioriza marina / harbour / dock / bay), un clic vuela el mapa al puerto y desactiva el auto-follow para que la cámara no rebote al barco.\n\n#### Domótica / KIP / Freeboard\n- **Botones KIP** para echar/levar y conmutar alarmas — abre Freeboard-SK con un toque desde la sidebar.\n- **Endpoints REST** para Alexa, Google Home, Node-RED, puentes MQTT, dashboards a medida.\n- **Endpoint `/toggle`** para mandos remotos de un solo botón.\n\n#### Control de usuarios (multi-PIN, nuevo en 2.4.0)\n- Modelo **Maestro + Invitados**. El primer PIN creado es el maestro (gestiona el control + uso normal). El maestro puede añadir PINs de invitado en cualquier momento.\n- **La lectura pública sigue abierta**. Sólo las acciones que mutan estado (echar/levar, alarmas, configuración, gestión de PINs) requieren PIN válido. Quien sólo mira el mapa o las mareas ve los mismos datos que antes.\n- **Caducidad opcional por invitado** con botones rápidos: sin caducidad, +1 día, +7, +30, +90, +1 año. A la tripulación del charter le pones un PIN que caduca el domingo; a la familia uno permanente.\n- **Notas** y **PIN visible al maestro** — el maestro abre la ficha del invitado y ve su PIN en claro (el fichero vive en la Pi del propio armador, tratado como local del barco).\n- **Lista de usuarios activos** muestra cada sesión con dispositivo (OS · navegador), IP y minutos/horas/días restantes. El maestro puede revocar cualquier sesión de invitado desde su terminal.\n- **Sesión del maestro persistente** (cookie TTL 1 año) — el armador no re-introduce PIN cada 30 minutos. Las sesiones de invitado se ajustan a la caducidad de su PIN.\n- **Cero setup de cuentas Signal K**. No hay que tocar `/admin/#/security`; todo vive dentro del plugin.\n\n### URLs\n\n| URL | Función |\n|-----|---------|\n| `/signalk-mareas-ihm/` | Landing — Mareas o Anchor Watch |\n| `/signalk-mareas-ihm/mareas` | Vista mareas (directo) |\n| `/signalk-mareas-ihm/visorfondeo` | Anchor Watch viewer (directo) |\n| `/signalk-mareas-ihm/mobile` | Vista mobile-first (recomendada en móviles) |\n\n### Domótica — endpoints REST\n\n```bash\n# Echar o levar con un botón (auto-detecta el estado actual)\ncurl -X POST http://openplotter.local:3000/signalk-mareas-ihm/api/anchor-watch/toggle\n\n# Echar ancla en GPS actual\ncurl -X POST http://openplotter.local:3000/signalk-mareas-ihm/api/anchor-watch/drop\n\n# Levar ancla\ncurl -X POST http://openplotter.local:3000/signalk-mareas-ihm/api/anchor-watch/lift\n\n# Estado JSON simple (para monitorización / dashboards)\ncurl http://openplotter.local:3000/signalk-mareas-ihm/api/anchor-watch/simple\n```\n\n### Requisitos mínimos\n\nEl plugin es ESM puro y usa features modernas. Stacks antiguos no lo cargarán (`ERR_REQUIRE_ESM`).\n\n| Componente | Mínimo | Notas |\n|---|---|---|\n| **OpenPlotter** | **V4** | V3 viene con SK 1.x que no puede cargar plugins ESM. |\n| **Signal K Server** | **≥ 2.0** | 1.x usa `require()` para plugins → `ERR_REQUIRE_ESM`. |\n| **Node.js** | **≥ 20** | LTS. |\n| **Locale del sistema** | **UTF-8 (p. ej. `es_ES.UTF-8`)** | Un locale no-UTF-8 hace que RTIMULib/pypilot parseen mal los valores del giróscopo y devuelvan ruido de 10-15° en el roll (rompe el motor de olas). Comprueba con `locale`. |\n| Fuente emoji (opc.) | `fonts-noto-color-emoji` | Sin ella, los botones salen como cuadrados vacíos en Chromium/Pi. `sudo apt install fonts-noto-color-emoji`. |\n| Motor de voz | `espeak` | Obligatorio para las alarmas de voz. Suele estar ya instalado en OpenPlotter. |\n\n⚠ **NO actives `@signalk/set-system-time`** (viene con Signal K, a veces activado por defecto en OpenPlotter con internet). Ejecuta `date -u -s` cada 60 s con resolución de 1 s y corrompe el filtro de Kalman del IMU → \"olas fuertes\" fantasma en puerto y saltos de attitude. Desactívalo en **SK → Server → Plugin Config → Set System Time → OFF**.\n\n### Instalación rápida\n\nDesde el **Appstore de Signal K**: busca `signalk-mareas-ihm` y pulsa instalar.\n\nO desde la línea de comandos:\n\n```bash\ncd ~/.signalk\nnpm install signalk-mareas-ihm@latest --save\nsudo systemctl restart signalk\n```\n\nDespués abre: `http://tu-pi.local:3000/signalk-mareas-ihm/`\n\n### Probado en\n\n- Raspberry Pi 4 / 5 con OpenPlotter V4 — objetivo principal.\n- Linux x64, macOS, Windows 11.\n- Firefox, Chrome, Safari en iOS / Android.\n\n### Aviso legal\n\nEs una **ayuda a la navegación**, NO un sustituto del anchor watch con vigilancia humana. El autor no se responsabiliza de garreos, colisiones, varadas ni ningún otro incidente. Uso bajo tu propia responsabilidad.\n\n### Solución de problemas frecuentes\n\n**El uso de RAM del Pi sube lento durante días hasta que el sistema queda irresponsivo.** Bug conocido de versiones anteriores a la 2.11.4 (issue #37): el republish AIS publicaba un delta inválido (`path:\"name\"` con un string plano en vez del objeto que espera SignalK), generando miles de errores por hora y reteniendo closures que el garbage collector no podía liberar. Actualiza a **2.11.4 o superior** desde el SignalK App Store; RSS del plugin debe estabilizarse por debajo de 500 MB.\n\n**El widget de IMU, olas, roll o pitch en el visor se queda a cero aunque hay datos en el bus SignalK.** Si el peer que publica los datos (típicamente el plugin oficial de pypilot en localhost o remoto) se cayó y volvió mientras este plugin ya estaba corriendo, el auto-detect de fuentes IMU solo se ejecutaba al arrancar el plugin y no volvía a rescatar. Arreglado en **2.11.4** con un watchdog automático que reintenta cada 60 s. Como remedio manual mientras actualizas: `curl -X POST http://<pi>:3000/signalk-mareas-ihm/api/imu/scan`.\n\n**El AIS online (aisstream / AIShub / AIS Friends) deja de recibir mensajes después de un rato.** Antes de 2.11.5 los tres clientes reintentaban con intervalo fijo aunque el server devolviera HTTP 429 (rate limit), lo que hacía que la ventana rate-limit del server se auto-perpetuase y el cliente quedara silencioso durante días. Arreglado en **2.11.5** con backoff exponencial 60 s → 30 min y jitter ±20 % al detectar 429/403/503. Puedes verificar el estado con `GET /signalk-mareas-ihm/api/diagnostic`: si `rateLimitBackoffActive` es `true`, sabes que el server está aplicándote rate limit y cuándo será el próximo intento.\n\n**Cómo reportar un bug con evidencia.** Abre el panel de alarmas (🔔) en el visor → botón \"🐛 Capturar diagnóstico\" al final del panel → \"Descargar JSON\". Adjunta ese fichero al [issue de GitHub](https://github.com/Aitonos/signalk-mareas-ihm/issues/new). Datos sensibles (GPS, PIN, tokens Telegram, MMSI propio) ya vienen enmascarados; datos técnicos íntegros. El JSON incluye uptime del plugin, uso de RAM, estado IMU, estadísticas de los clientes AIS online, ping a servicios externos, plugins SK cargados, y últimos valores de paths SK relevantes.\n\n### Contribuir y soporte\n\nIssues, PRs y peticiones de funcionalidad en el [repo de GitHub](https://github.com/Aitonos/signalk-mareas-ihm).\n\n### Agradecimientos\n\n- **[@jeyrb](https://github.com/jeyrb)** — reportó que otras apps de anchor watch del ecosistema SignalK comparten el vocabulario canónico `navigation.anchor.*` y `notifications.navigation.anchor`, y que este plugin vivía en su propio namespace. Ese reporte fue el que dio pie al trabajo de interop de la 2.8.0: los paths canónicos de fondeo se publican en paralelo, las notificaciones se espejan automáticamente a los paths estándar SK, y toda alarma crítica lleva `method:[\"push\"]` para el push nativo iOS/iPadOS de WilhelmSK. Gracias.\n- **[@andmayfi92](https://github.com/andmayfi92)** — reportó que al ejecutarse fuera de nuestra área de cobertura de mareas estábamos sobreescribiendo silenciosamente el output de `/signalk/v2/api/resources/tides` de otros plugins (opentide etc.) con nuestra respuesta vacía. Eso dio pie al comportamiento \"proveedor tímido\" de la 2.9.0: ahora detectamos otros proveedores de mareas en el server y cedemos por defecto. Gracias.\n- **[@s991116](https://github.com/s991116)** — reportó que los mensajes de Telegram estaban hardcoded en castellano independientemente del idioma configurado, y aportó el [PR #26](https://github.com/Aitonos/signalk-mareas-ihm/pull/26) con el fix: `sendTelegram` / `formatTelegramMessage` extraídos a `src/telegram.ts` para que el POST quede agnóstico del idioma y el texto siga el `_currentLang` boat-global (ES/EN), más tests de caracterización. Integrado en 2.10.1. Gracias.\n- **[@ABS0lute-1](https://github.com/ABS0lute-1)** — reportó el [issue #27](https://github.com/Aitonos/signalk-mareas-ihm/issues/27): la flecha de dirección de olas en el visor de fondeo siempre apuntaba viniendo del Norte, aunque el popup de Previsión de Abrigo mostraba la dirección correcta; Ctrl+F5 la dibujaba bien durante medio segundo y luego saltaba al Norte. La observación precisa de \"medio segundo bien y luego mal\" apuntó directamente a un callback de polling pisando un valor bueno. Causa raíz: faltaba un type check y un `null` del motor de olas del barco (cuando rechaza por no haber movimiento) sobreescribía silenciosamente el forecast de Open-Meteo. Arreglado en 2.10.4 extrayendo un único helper `_effectiveWaveDirDeg` usado tanto por el overlay del mapa como por el popup Shelter, de modo que ambas vistas quedan coherentes por construcción. Gracias.\n- **Pablo** (partner de testing OpenPlotter) — dos reportes en días consecutivos, ambos diagnosticados con precisión que apuntó directo al culpable:\n  1. `navigation.anchor.position` se re-emitía como `null` cada ~6 s mientras el barco no estaba fondeado, causando que `@meri-imperiumi/signalk-autostate` (y cualquier otro suscriptor) interpretara cada delta null como un evento \"acaban de levar\" y el estado del barco pasase de \"amarrado\" a \"navegando\" continuamente. Arreglado en 2.10.2: paths canónicos del ancla emitidos solo en transiciones de estado (drop/lift), después silencio.\n  2. Follow-up: 2.10.2 seguía emitiendo un único `null` al arrancar el plugin (nuestro flag de estado valía `null` al boot y se trataba como \"necesita limpieza\"), y Pablo también reportó que `environment.tide.tendency` había pasado inesperadamente de `\"Subiendo\"` a `\"Rising\"` — el valor seguía el idioma UI de la webapp en vez de ser un enum canónico SK estable. Ambos arreglados en 2.10.3: arranque silencioso en el bus canónico, y los paths de marea (`tendency`, `flow.strength`, `flow.direction`) publican enums canónicos (`rising`/`falling`/`slack`, `gentle`/`moderate`/`strong`, `flood`/`ebb`/`slack`) con nuevos paths hermanos `*Localized` para dashboards que quieran el string humano. Gracias.\n\n### Licencia\n\nApache 2.0. Derivado de `signalk-tides` (Brandon Keepers, Joachim Bakke, Scott Bender y contribuidores).\n","readmeFilename":"README.md"}