{"_id":"signalk-virtual-weather-sensors","_rev":"40-9657be267ffb71a885420d202c950743","name":"signalk-virtual-weather-sensors","dist-tags":{"latest":"1.14.0"},"versions":{"1.0.0":{"name":"signalk-virtual-weather-sensors","version":"1.0.0","keywords":["signalk-node-server-plugin","signalk-category-weather","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","iot"],"author":{"name":"Signal K Community"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.0.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"3820109b416e19827e8103e850b8c2ed3e143087","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.0.0.tgz","fileCount":28,"integrity":"sha512-m7UmAsJnr984PcAtDkT8XpeU1zGpTpVSQZa9sJQYqahK1Wzzv3kh1CQ4wgQLGvh84XJOdq5thm6N4/SgtfJaOg==","signatures":[{"sig":"MEQCIFqVEzerRlI6QHUupnGxE8dLgNWICNKVM5gGsSehHLPzAiBN0N5i6CbZrbXCpF/ttnBOKsNd+Nx6hnlBsmJu2Fo6Dw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":432523},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"944f9906bbf6aa9425ddec1a9542eb9a17d3bc94","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle","clean":"rm -rf dist/","format":"biome format --write .","prepare":"husky || true","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build && npm run test:run","security-audit":"npm audit --audit-level=moderate"},"signalk":{"displayName":"Signal K Virtual Weather Sensors","compatibility":{"nmea2000":true,"signalkVersion":"^2.0.0"},"supportedVersions":"^2.0.0"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"appstore":{"id":"signalk-virtual-weather-sensors","tier":"free","category":"weather","verified":false,"screenshots":[],"compatibility":{"node":">=20.0.0","signalkVersion":"^2.0.0"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"11.6.1","description":"Signal K plugin that provides comprehensive weather data from AccuWeather API with calculated wind values and NMEA2000-compatible environmental measurements","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.24.1","rxjs":"^7.8.2","es-toolkit":"^1.28.1","node-fetch":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","husky":"^9.1.7","vitest":"^3.2.4","esbuild":"^0.24.2","@vitest/ui":"^3.2.4","typescript":"^5.7.3","@types/node":"^22.10.2","lint-staged":"^15.2.11","@biomejs/biome":"^2.2.5","@signalk/server-api":"^2.3.0","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.0.0_1760330097072_0.6183549471974545","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.0.1":{"name":"signalk-virtual-weather-sensors","version":"1.0.1","keywords":["signalk-node-server-plugin","signalk-category-weather","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","iot"],"author":{"name":"Signal K Community"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.0.1","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"a2dbb44752c51812c165de478d21233b686fa8e2","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.0.1.tgz","fileCount":28,"integrity":"sha512-RMCVPQ/UUzaAjMxTS8+z2/9H6fje7IFc3BPPUylLPBJXIJpSqvKgjl+p/wdYeERRhwvBlo/BRtG7FtyzkEq9CQ==","signatures":[{"sig":"MEUCIBTvqbLe+8JoRU0mCTqCnoxrmSua6d3lzVLn96Qv58ahAiEA1zg7Ma/7QRZGOcMbJg8dMYLdEI3oDUWskjPuc2+4wHU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":433246},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"025855ddc7492424c9094c0c20724fd16edee70f","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle","clean":"rm -rf dist/","format":"biome format --write .","prepare":"husky || true","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build && npm run test:run","security-audit":"npm audit --audit-level=moderate"},"signalk":{"displayName":"Signal K Virtual Weather Sensors","compatibility":{"nmea2000":true,"signalkVersion":"^2.0.0"},"supportedVersions":"^2.0.0"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"appstore":{"id":"signalk-virtual-weather-sensors","tier":"free","category":"weather","verified":false,"screenshots":[],"compatibility":{"node":">=20.0.0","signalkVersion":"^2.0.0"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"11.6.1","description":"Signal K plugin that provides comprehensive weather data from AccuWeather API with calculated wind values and NMEA2000-compatible environmental measurements","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.24.1","rxjs":"^7.8.2","es-toolkit":"^1.28.1","node-fetch":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","husky":"^9.1.7","vitest":"^3.2.4","esbuild":"^0.24.2","@vitest/ui":"^3.2.4","typescript":"^5.7.3","@types/node":"^22.10.2","lint-staged":"^15.2.11","@biomejs/biome":"^2.2.5","@signalk/server-api":"^2.3.0","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.0.1_1760375151759_0.09065711086822725","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.1.0":{"name":"signalk-virtual-weather-sensors","version":"1.1.0","keywords":["signalk-node-server-plugin","signalk-category-weather","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","iot"],"author":{"name":"Signal K Community"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.1.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"3ce7f79901fdd2be684b1d35b3adf905f47b131a","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.1.0.tgz","fileCount":30,"integrity":"sha512-umPw4wxJb1kwSfyIYRAIokDGvAAzt0TAjemZJL0aEdBT1avgMua0hUppH4KJh4px+ghUTaqaHrjIYYH9/biFRw==","signatures":[{"sig":"MEUCIQCGMMUzT+Gp98lzVfq9TIAaeGDTFRRukWkIQePVxdECHgIgfSub4oMn2jAs2IW0QnniYWxji458rHZ1LWgHWBgKe5k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":470992},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"4a180db44bd3e2c6954639d41ac99ffecc1ba650","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle","clean":"rm -rf dist/","format":"biome format --write .","prepare":"husky || true","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build && npm run test:run","security-audit":"npm audit --audit-level=moderate"},"signalk":{"displayName":"Signal K Virtual Weather Sensors","compatibility":{"nmea2000":true,"signalkVersion":"^2.0.0"},"supportedVersions":"^2.0.0"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"appstore":{"id":"signalk-virtual-weather-sensors","tier":"free","category":"weather","verified":false,"screenshots":[],"compatibility":{"node":">=20.0.0","signalkVersion":"^2.0.0"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"11.11.0","description":"Signal K plugin that provides comprehensive weather data from AccuWeather API with calculated wind values and NMEA2000-compatible environmental measurements","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"_nodeVersion":"24.14.1","dependencies":{"rxjs":"^7.8.2","es-toolkit":"^1.44.0","node-fetch":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","vitest":"^4.0.17","esbuild":"^0.27.2","@vitest/ui":"^4.0.17","typescript":"^5.9.3","@types/node":"^25.0.9","lint-staged":"^16.2.7","@biomejs/biome":"^2.3.11","@signalk/server-api":"^2.10.2","@vitest/coverage-v8":"^4.0.17"},"optionalDependencies":{"@rollup/rollup-win32-x64-msvc":"^4.55.2"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.1.0_1775271320754_0.9994168685636919","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.1.1":{"name":"signalk-virtual-weather-sensors","version":"1.1.1","keywords":["signalk-node-server-plugin","signalk-category-weather","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","iot"],"author":{"name":"Signal K Community"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.1.1","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"ceb693236b884ddfb99b8ed525ae6deb9933ff13","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.1.1.tgz","fileCount":30,"integrity":"sha512-uP8wONqRLW7P5mQsoGpAKqxmHDfsARukSsBGncPEPBHw7Bx9r5eB+wZgZHYeizyIzSRyAndhvtKOxWH8PlYz8g==","signatures":[{"sig":"MEUCIBi4KxAhrCeFUsY6X+WVEOD6qBPnsHGvrl2JcWsW94LaAiEAug+NK2h382RgpDwSzIUAA/qAL9ohHY6iNYBlVfyyWCg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":471000},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"1cd31eee478bb7afea07e27cc717458e9344241c","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle","clean":"rm -rf dist/","format":"biome format --write .","prepare":"husky || true","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build && npm run test:run","security-audit":"npm audit --audit-level=moderate"},"signalk":{"displayName":"Signal K Virtual Weather Sensors","compatibility":{"nmea2000":true,"signalkVersion":"^2.0.0"},"supportedVersions":"^2.0.0"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"appstore":{"id":"signalk-virtual-weather-sensors","tier":"free","category":"weather","verified":false,"screenshots":[],"compatibility":{"node":">=20.0.0","signalkVersion":"^2.0.0"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"11.11.0","description":"Signal K plugin that provides comprehensive weather data from AccuWeather API with calculated wind values and NMEA2000-compatible environmental measurements","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"_nodeVersion":"24.14.1","dependencies":{"rxjs":"^7.8.2","es-toolkit":"^1.44.0","node-fetch":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","vitest":"^4.0.17","esbuild":"^0.27.2","@vitest/ui":"^4.0.17","typescript":"^5.9.3","@types/node":"^25.0.9","lint-staged":"^16.2.7","@biomejs/biome":"^2.3.11","@signalk/server-api":"^2.10.2","@vitest/coverage-v8":"^4.0.17"},"optionalDependencies":{"@rollup/rollup-win32-x64-msvc":"^4.55.2"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.1.1_1775271595203_0.7883326879706687","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.2.0":{"name":"signalk-virtual-weather-sensors","version":"1.2.0","keywords":["signalk-node-server-plugin","signalk-category-weather","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","iot"],"author":{"name":"Signal K Community"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.2.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"9f25f5853cb8103d34d0eb564c0bbb20ec7d1d4e","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.2.0.tgz","fileCount":28,"integrity":"sha512-wa/Q1/8fBc/s46vWSD3zCioUX271UZ1PgsOfJ5P1UYh4whyUz3TNhVez92frP+zjhAlkUqZzqvyhDj94WGgK1Q==","signatures":[{"sig":"MEQCIHJnshFYXNoslJ/yNeSjv9j3S4GXpDkKJbSzQRDRYNNoAiAIaW3cQNF0LlrARnsi5IIAtmwjzZ0Rdmw10kwDbt8ZVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":404216},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"889d4ae2b5c2e2638a3b130494aa99300e6bec77","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle","clean":"rm -rf dist/","format":"biome format --write .","prepare":"husky || true","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build && npm run test:run","security-audit":"npm audit --audit-level=moderate"},"signalk":{"displayName":"Signal K Virtual Weather Sensors","compatibility":{"nmea2000":true,"signalkVersion":"^2.0.0"},"supportedVersions":"^2.0.0"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"appstore":{"id":"signalk-virtual-weather-sensors","tier":"free","category":"weather","verified":false,"screenshots":[],"compatibility":{"node":">=20.0.0","signalkVersion":"^2.0.0"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"11.11.0","description":"Signal K plugin that provides comprehensive weather data from AccuWeather API with calculated wind values and NMEA2000-compatible environmental measurements","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"_nodeVersion":"24.14.1","dependencies":{"rxjs":"^7.8.2","es-toolkit":"^1.44.0","node-fetch":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","vitest":"^4.0.17","esbuild":"^0.27.2","@vitest/ui":"^4.0.17","typescript":"^5.9.3","@types/node":"^25.0.9","lint-staged":"^16.2.7","@biomejs/biome":"^2.3.11","@signalk/server-api":"^2.10.2","@vitest/coverage-v8":"^4.0.17"},"optionalDependencies":{"@rollup/rollup-win32-x64-msvc":"^4.55.2"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.2.0_1775675562486_0.5848201201752579","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.2.1":{"name":"signalk-virtual-weather-sensors","version":"1.2.1","keywords":["signalk-node-server-plugin","signalk-category-weather","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","iot"],"author":{"name":"Signal K Community"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.2.1","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"c2aabe1dadbae8cc4a3b65e0aa28daef4800599b","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.2.1.tgz","fileCount":28,"integrity":"sha512-12t/nSgdr6X01H+Gw0ejxThIrj/88ell0DEe0wUmSWAJwupFRUcdOFnfXaXxtTZD7KCbTZEO8LkfAVlSsSOGVw==","signatures":[{"sig":"MEUCIBggJqWtMYdVggF9ZEzCxuqKYIMqfjtKgCFQuHmCzo0qAiEAkY0GyK2yV7S6bMD8f3TCXxIJWmqzmkK6aeOQXsxQ8TI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":408368},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"2ce73566f482925dca5b1208dec5ded381cd74c4","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle","clean":"rm -rf dist/","format":"biome format --write .","prepare":"husky || true","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build && npm run test:run","security-audit":"npm audit --audit-level=moderate"},"signalk":{"displayName":"Signal K Virtual Weather Sensors","compatibility":{"nmea2000":true,"signalkVersion":"^2.0.0"},"supportedVersions":"^2.0.0"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"appstore":{"id":"signalk-virtual-weather-sensors","tier":"free","category":"weather","verified":false,"screenshots":[],"compatibility":{"node":">=20.0.0","signalkVersion":"^2.0.0"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"11.11.0","description":"Signal K plugin that provides comprehensive weather data from AccuWeather API with calculated wind values and NMEA2000-compatible environmental measurements","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"_nodeVersion":"24.14.1","dependencies":{"es-toolkit":"^1.44.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","vitest":"^4.0.17","esbuild":"^0.27.2","@vitest/ui":"^4.0.17","typescript":"^5.9.3","@types/node":"^25.0.9","lint-staged":"^16.2.7","@biomejs/biome":"^2.3.11","@signalk/server-api":"^2.10.2","@vitest/coverage-v8":"^4.0.17"},"optionalDependencies":{"@rollup/rollup-win32-x64-msvc":"^4.55.2"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.2.1_1776537133496_0.033616871263860704","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.2.2":{"name":"signalk-virtual-weather-sensors","version":"1.2.2","keywords":["signalk-node-server-plugin","signalk-category-weather","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","iot"],"author":{"name":"Signal K Community"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.2.2","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"2ba548b4c2e01a2471fce306431f6c39facf9f09","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.2.2.tgz","fileCount":28,"integrity":"sha512-LtMcljos68y54s8O/i73U1pSKLNOgdk4gXu4BeohmO74LhT1RQMH/B1iULMqElvEeLwf5pdCp5gMO9DsiHnCcg==","signatures":[{"sig":"MEUCIAtxYYedAg7tbVbMTQVhUsC8MBDdCtVHPoAhr1MF7aO6AiEA/fuyx9DbQ8mpIk5RlYMg879Km5SyMIUatYut/m7EQDI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":400611},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"5a97cc151683f0072973afd816287ef4a705b812","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle","clean":"rm -rf dist/","format":"biome format --write .","prepare":"husky || true","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build && npm run test:run","security-audit":"npm audit --audit-level=moderate"},"signalk":{"displayName":"Signal K Virtual Weather Sensors","compatibility":{"nmea2000":true,"signalkVersion":"^2.0.0"},"supportedVersions":"^2.0.0"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"appstore":{"id":"signalk-virtual-weather-sensors","tier":"free","category":"weather","verified":false,"screenshots":[],"compatibility":{"node":">=20.0.0","signalkVersion":"^2.0.0"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"11.11.0","description":"Signal K plugin that provides comprehensive weather data from AccuWeather API with calculated wind values and NMEA2000-compatible environmental measurements","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"_nodeVersion":"24.14.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","vitest":"^4.0.17","esbuild":"^0.27.2","@vitest/ui":"^4.0.17","typescript":"^5.9.3","@types/node":"^25.0.9","lint-staged":"^16.2.7","@biomejs/biome":"^2.3.11","@signalk/server-api":"^2.10.2","@vitest/coverage-v8":"^4.0.17"},"optionalDependencies":{"@rollup/rollup-win32-x64-msvc":"^4.55.2"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.2.2_1776628107604_0.9764202265627047","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.2.3":{"name":"signalk-virtual-weather-sensors","version":"1.2.3","keywords":["signalk-node-server-plugin","signalk-category-weather","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","iot"],"author":{"name":"Signal K Community"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.2.3","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"caaa30f593023f6fa714966a43219c2125625429","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.2.3.tgz","fileCount":28,"integrity":"sha512-SepNeIOUHZ9GopY9/RwUF8suyVBImMZxvW40bWiq4hcF/Ktl1D/SYwwOGDgfl/NdWWVSJ+cLJkXbGt+YVV7OMQ==","signatures":[{"sig":"MEYCIQCPSzn52g8MUJBfMSSlX3ezExwHRKRiW9aicG4WEUCn4AIhAN7EW17Hh00ZFFuDTrHpKjOzy1s89AO3+BndYG58duO3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":412494},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"94ae02364c1fe2af173fbf051e5da15e7b56516b","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle","clean":"rm -rf dist/","format":"biome format --write .","prepare":"husky || true","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build && npm run test:run","security-audit":"npm audit --audit-level=moderate"},"signalk":{"displayName":"Signal K Virtual Weather Sensors","compatibility":{"nmea2000":true,"signalkVersion":"^2.0.0"},"supportedVersions":"^2.0.0"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"appstore":{"id":"signalk-virtual-weather-sensors","tier":"free","category":"weather","verified":false,"screenshots":[],"compatibility":{"node":">=20.0.0","signalkVersion":"^2.0.0"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"11.12.1","description":"Signal K plugin that provides comprehensive weather data from AccuWeather API with calculated wind values and NMEA2000-compatible environmental measurements","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"_nodeVersion":"24.15.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","vitest":"^4.0.17","esbuild":"^0.27.2","@vitest/ui":"^4.0.17","typescript":"^5.9.3","@types/node":"^25.0.9","lint-staged":"^16.2.7","@biomejs/biome":"^2.3.11","@signalk/server-api":"^2.10.2","@vitest/coverage-v8":"^4.0.17"},"optionalDependencies":{"@rollup/rollup-win32-x64-msvc":"^4.55.2"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.2.3_1777831426073_0.5338185988481761","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.3.0":{"name":"signalk-virtual-weather-sensors","version":"1.3.0","keywords":["signalk-node-server-plugin","signalk-category-weather","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","iot"],"author":{"name":"Signal K Community"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.3.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"8cc7300b5688624f5a461686dbe0c037d322a5b9","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.3.0.tgz","fileCount":28,"integrity":"sha512-dpwbutx5Ws65q05aKf+q0/rdt5lZdd7dfSVholT668e90RZS6ZbVyqWqliHJp4KOsthV55mMQ2/L1kBk4sknAQ==","signatures":[{"sig":"MEUCIQCDeugHiwOTbHV3ooIrDZ+TdwU7vDR1T6TYGd+lzwpYzAIgCp+96adNIVjlQHmtuZ6P2A34xE4HH1si1xdFF9Wn62A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":409276},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"gitHead":"56a9f30d5ff36becb445dcfdb26bbe0dbb7b90e9","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle","check":"biome check .","clean":"rm -rf dist/","format":"biome format --write .","prepack":"npm run build","prepare":"husky || true","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","typecheck":"tsc --noEmit","type-check":"tsc --noEmit","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate"},"signalk":{"displayName":"Signal K Virtual Weather Sensors","compatibility":{"nmea2000":true,"signalkVersion":"^2.0.0"},"supportedVersions":"^2.0.0"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"appstore":{"id":"signalk-virtual-weather-sensors","tier":"free","category":"weather","verified":false,"screenshots":[],"compatibility":{"node":">=20.0.0","signalkVersion":"^2.0.0"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"11.12.1","description":"Signal K plugin that provides comprehensive weather data from AccuWeather API with calculated wind values and NMEA2000-compatible environmental measurements","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","vitest":"^4.0.17","esbuild":"^0.28.0","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@types/node":"^25.0.9","lint-staged":"^16.2.7","@biomejs/biome":"^2.3.11","@signalk/server-api":"^2.10.2","@vitest/coverage-v8":"^4.0.17"},"optionalDependencies":{"@rollup/rollup-win32-x64-msvc":"^4.55.2"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.3.0_1778035388004_0.6492112035950945","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.3.2":{"name":"signalk-virtual-weather-sensors","version":"1.3.2","keywords":["signalk-node-server-plugin","signalk-category-weather","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","iot"],"author":{"name":"Signal K Community"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.3.2","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"f230afebe3b407f87f014f384bd1f113bcdcbcb9","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.3.2.tgz","fileCount":26,"integrity":"sha512-FrvVJLX0KyLmETIQDxZHRLRFQFzFtSA6mtUV0IZpwb7BuUssjupGYIe1oNp0v+VdhYQjS+C1sgcw3U04O6qdFg==","signatures":[{"sig":"MEYCIQCOTOK6bhRBLuSDKpOP76cpIs60YDAgUamdHVEns63tbgIhAL6E9bUsDNJJOPcNQUUBpouhTcLQk94M/ilg79I5T8gz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":401916},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"gitHead":"6388ef17590490f5f29b989c1ac8bf01f0bb4e21","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle","clean":"rm -rf dist/","format":"biome format --write .","prepack":"npm run build","prepare":"husky || true","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate"},"signalk":{"displayName":"Signal K Virtual Weather Sensors","supportedVersions":[">=2.0.0"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"appstore":{"id":"signalk-virtual-weather-sensors","category":"weather","screenshots":[]},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"11.12.1","description":"Signal K plugin that provides comprehensive weather data from AccuWeather API with calculated wind values and NMEA2000-compatible environmental measurements","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","vitest":"^4.0.17","esbuild":"^0.28.0","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@types/node":"^20.18.0","lint-staged":"^16.2.7","@biomejs/biome":"^2.3.11","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.0.17"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.3.2_1778302276344_0.6432447685774227","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.4.0":{"name":"signalk-virtual-weather-sensors","version":"1.4.0","keywords":["signalk-node-server-plugin","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","iot"],"author":{"name":"Signal K Community"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.4.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"fcc8b232ed37c48ad8d47bf7d1624466d158ac98","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.4.0.tgz","fileCount":26,"integrity":"sha512-rAUZ601KYo+WAsnV33rD10S0bx5nnSt2VzoUuJ73SL3Wg2oWTsWHIdSYbKs7ZAcDhjzNWMHB4oXMLEzv9zEzNw==","signatures":[{"sig":"MEUCIGZjTCSdTqNEtP5EUI0bYsAoFo+pSW+8qDUD8LdccTVvAiEAgSnrIBe9xNCW7GbHiVmMc7NRKDuZFm1PVgT7HKazLak=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":430021},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"1ab34fa4522d3b8e1d73313cb1b9f4b0a4d96dd1","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle","clean":"rm -rf dist/","format":"biome format --write .","prepack":"npm run build","prepare":"husky || true","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate"},"signalk":{"displayName":"Signal K Virtual Weather Sensors"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"11.12.1","description":"Signal K plugin that provides comprehensive weather data from AccuWeather API with calculated wind values and NMEA2000-compatible environmental measurements","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.21.0","husky":"^9.1.7","vitest":"^4.0.17","esbuild":"^0.28.0","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@types/node":"^20.18.0","ajv-formats":"^3.0.1","lint-staged":"^16.2.7","ajv-draft-04":"^1.0.0","@biomejs/biome":"^2.4.15","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.0.17","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.4.0_1778467837934_0.3988325954791667","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.4.1":{"name":"signalk-virtual-weather-sensors","version":"1.4.1","keywords":["signalk-node-server-plugin","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","iot"],"author":{"name":"Signal K Community"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.4.1","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"2a00670421620257f0f69803938171dffd891f77","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.4.1.tgz","fileCount":26,"integrity":"sha512-t6RzFdZeNRNrljqVNCLXwBgKc8Ivnw3iH/sfITamBNZZzX9Wa5jQjrJtVZuRveGKlghz0mix15Ov7TMtsOzK2w==","signatures":[{"sig":"MEUCIE4+vdXzoQNvUAsWDP5lqD5zEwN0hDFxx3MNjaT6JHHMAiEAkPo5v2aYjYdMhNBpqQSeZFILdss3szxXgddre9l82Yg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":430986},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"8b457180dfa3a608e3e94180ec925dd35103313e","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle","clean":"rm -rf dist/","format":"biome format --write .","prepack":"npm run build","prepare":"husky || true","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate"},"signalk":{"displayName":"Signal K Virtual Weather Sensors"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin that provides comprehensive weather data from AccuWeather API with calculated wind values and NMEA2000-compatible environmental measurements","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.21.0","husky":"^9.1.7","vitest":"^4.0.17","esbuild":"^0.28.0","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@types/node":"^25.6.2","ajv-formats":"^3.0.1","lint-staged":"^17.0.4","ajv-draft-04":"^1.0.0","@biomejs/biome":"^2.4.15","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.0.17","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.4.1_1778500345919_0.701030217818015","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.4.2":{"name":"signalk-virtual-weather-sensors","version":"1.4.2","keywords":["signalk-node-server-plugin","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","iot"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.4.2","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"eb2cc14282cf772f37de33dd80efab1bd421f099","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.4.2.tgz","fileCount":31,"integrity":"sha512-lE1ELuMVW9//jSJII+8Q1htaVMyZd35BEuf0lj65hE+fMW6vO5baGxz+NPrC17rUzMV6SmaXQvOw7UiqrZU1wg==","signatures":[{"sig":"MEUCIQCjPvFttd1YKd9lyg/izWqWXAfOFidvzBzhKt/fKu91YAIgJpgmqpBFkioLVnZq2y1veEi088bgtpceOZfa6YJPG4E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":502014},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"a7394a0f7ee58b9d5ece5c58293f3c9bcf0779b5","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle","clean":"rm -rf dist/","format":"biome format --write .","prepack":"npm run build","prepare":"husky || true","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"Virtual Weather Sensors"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin that provides comprehensive weather data from AccuWeather API with calculated wind values and NMEA2000-compatible environmental measurements","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.21.0","husky":"^9.1.7","vitest":"^4.0.17","esbuild":"^0.28.0","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@types/node":"^25.6.2","ajv-formats":"^3.0.1","lint-staged":"^17.0.4","ajv-draft-04":"^1.0.0","@biomejs/biome":"^2.4.15","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.0.17","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.4.2_1778599513444_0.14618605151458275","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.4.3":{"name":"signalk-virtual-weather-sensors","version":"1.4.3","keywords":["signalk-node-server-plugin","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","iot"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.4.3","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"150a7c7f53ad9eac321b1e377cc3a8c4656dc55c","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.4.3.tgz","fileCount":35,"integrity":"sha512-JlSq6VAjO5WFNHtW1nKBTttuLA6PAmWaTAqVwGXsHiyieqc/BHZI40eFgotaGaVV/u2pEViHzGnn+gGLTlnSlQ==","signatures":[{"sig":"MEQCIAHKJZt5RnSmaWUm6kHm+5qN6SBNoJRkNpnOD/TxzIX1AiB++omBtllWxZzjMKUrkaOp92vovUpddoeLiipQHhvjlg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":563755},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"a5013ba515074bbae4d64c7ade235fadf7653857","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle","clean":"rm -rf dist/","format":"biome format --write .","prepack":"npm run build","prepare":"husky || true","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"Virtual Weather Sensors"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin that provides comprehensive weather data from AccuWeather API with calculated wind values and NMEA2000-compatible environmental measurements","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.21.0","husky":"^9.1.7","vitest":"^4.0.17","esbuild":"^0.28.0","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@types/node":"^25.6.2","ajv-formats":"^3.0.1","lint-staged":"^17.0.4","ajv-draft-04":"^1.0.0","@biomejs/biome":"^2.4.15","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.0.17","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.4.3_1778604383044_0.5617106462792671","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.4.4":{"name":"signalk-virtual-weather-sensors","version":"1.4.4","keywords":["signalk-node-server-plugin","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","iot"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.4.4","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"1032b615cddb52e257a025d3aeb79314ba643f02","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.4.4.tgz","fileCount":35,"integrity":"sha512-vIE4Gr3+oxC/YfhdXpLbiTM+y8qzPeTkpC8UNItegxaOogtunjSzyHggMZBnx2a94H87q/3AA1TuN0cV+bQ43w==","signatures":[{"sig":"MEYCIQDdcehS85NPUsoZKp3ymImJECfUnHny11dzAinLXneqigIhAMv1LNxT5ezMvut7MNU2oY6uyIfeA6TkVtC39ABHah5Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":564709},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d5a050f59117a83b24e801fd5efbb47e2f250595","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle","clean":"rm -rf dist/","format":"biome format --write .","prepack":"npm run build","prepare":"husky || true","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"Virtual Weather Sensors"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin that provides comprehensive weather data from AccuWeather API with calculated wind values and NMEA2000-compatible environmental measurements","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.21.0","husky":"^9.1.7","vitest":"^4.0.17","esbuild":"^0.28.0","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@types/node":"^25.6.2","ajv-formats":"^3.0.1","lint-staged":"^17.0.4","ajv-draft-04":"^1.0.0","@biomejs/biome":"^2.4.15","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.0.17","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.4.4_1778605184531_0.13157195710857916","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.5.0":{"name":"signalk-virtual-weather-sensors","version":"1.5.0","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","iot"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.5.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"008c29a7668f5d3a7bed07dbea111abdea1a2c7d","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.5.0.tgz","fileCount":40,"integrity":"sha512-FzONbpOPaunpIu1VklrKaWX5tjectomW/8h5lCOpPJPoEzsBT5SXSSzPtl4EpoQwoCFFXREPXAO47B6bNiGZTA==","signatures":[{"sig":"MEUCIEzhvqUQUoBStTtMMLOjKkPooN76U6b1y6hNtSklB6e5AiEAkrzo1eqXRbhhSPLQDFhytZDSIy59xym4i84e2ssxM2U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":605296},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c76c9e90ea2983deb3abb5e8f2ec54e1b7792193","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel","clean":"rm -rf dist/ public/","format":"biome format --write .","prepack":"npm run build","prepare":"husky || true","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:panel":"webpack","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"Virtual Weather Sensors"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin that provides comprehensive weather data from AccuWeather API with calculated wind values and NMEA2000-compatible environmental measurements","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.4","vitest":"^4.0.17","esbuild":"^0.28.0","webpack":"^5.105.4","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.6.2","ajv-formats":"^3.0.1","lint-staged":"^17.0.4","webpack-cli":"^7.0.2","ajv-draft-04":"^1.0.0","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","@babel/preset-react":"^7.28.5","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.0.17","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.5.0_1778607178671_0.02603771296743629","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.5.1":{"name":"signalk-virtual-weather-sensors","version":"1.5.1","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","iot"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.5.1","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"af49d218e3399014044be945917f4e5a0f5f5ab9","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.5.1.tgz","fileCount":40,"integrity":"sha512-gwv7NpvWL7c1zSi8HjPXdmdhMAzTFuovA7uhaVSDCCO3qHR1x4W48hbn9Pbn8qgGAc5Ib3CMPpvrU+FZ3uWczw==","signatures":[{"sig":"MEQCIC50z0SgHrG6ZGV3tLqPr4Nt8Z71DQsbS9s7i0AryGAvAiB+dImJr1qaoG6nETYZFfQstc+/fB04l/dhGdBQBrWngA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":611661},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ff95bc84e6cb3dfdbcbc899068a563eecdba1c75","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel","clean":"rm -rf dist/ public/","format":"biome format --write .","prepack":"npm run build","prepare":"husky || true","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:panel":"webpack","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"Virtual Weather Sensors"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin that provides comprehensive weather data from AccuWeather API with calculated wind values and NMEA2000-compatible environmental measurements","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.4","vitest":"^4.0.17","esbuild":"^0.28.0","webpack":"^5.105.4","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.6.2","ajv-formats":"^3.0.1","lint-staged":"^17.0.4","webpack-cli":"^7.0.2","ajv-draft-04":"^1.0.0","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","@babel/preset-react":"^7.28.5","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.0.17","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.5.1_1778619134787_0.3431093206443152","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.5.2":{"name":"signalk-virtual-weather-sensors","version":"1.5.2","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","iot"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.5.2","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"f625124cb4309e7cb75a0c3a60d33c4974cd5107","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.5.2.tgz","fileCount":40,"integrity":"sha512-Nq+1CcI+LHVr6ftCNEvWyjvFdCtFPw68C6V2cMxhw8WprTR8PQCW8jr9K94oAt4GWTSMSpRGKhbqpwGJ22P2iA==","signatures":[{"sig":"MEUCIHyo/sHEq1P+dXSfLUgGdTzagVJhikrc8R97Ve8J2o3PAiEA5qa6JSwewkvSoGAPeGETTwsx0oA9hvK3jE668B0qP9A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":652934},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"028ff55b8ff01b5aa67d50a6402f20fe6ef7bf71","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel","clean":"rm -rf dist/ public/","format":"biome format --write .","prepack":"npm run build","prepare":"husky || true","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:panel":"webpack","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"Virtual Weather Sensors"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin that provides comprehensive weather data from AccuWeather API with calculated wind values and NMEA2000-compatible environmental measurements","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","vitest":"^4.1.6","esbuild":"^0.28.0","webpack":"^5.106.2","@vitest/ui":"^4.1.6","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.7.0","ajv-formats":"^3.0.1","lint-staged":"^17.0.4","webpack-cli":"^7.0.2","ajv-draft-04":"^1.0.0","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","@babel/preset-react":"^7.28.5","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.1.6","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.5.2_1778632346805_0.22094322052039383","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.5.3":{"name":"signalk-virtual-weather-sensors","version":"1.5.3","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","iot"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.5.3","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"8948c93296e0e210c9522e90e0497cfc54f16fe4","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.5.3.tgz","fileCount":40,"integrity":"sha512-Qjz2Q0Q3/cEqeMY6wQ5IlzSL+N51hNiRjTm2k5WtOs5mzt3MbIm8xydyYzzhOmiPS0FmacKlPw4hfqo7g1XGfA==","signatures":[{"sig":"MEUCIF/05ia2EGoMLsmynjOqpijAfQL128fyNOZy5Hu/vPOAAiEA9bXbq6fDBw7sQC+SyXJk19+cHex2XEbwmTQrtvpjdqo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636495},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ce81ead6efcc782a838532779312e506b6edbea8","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel","clean":"rm -rf dist/ public/","format":"biome format --write .","prepack":"npm run build","prepare":"husky || true","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:panel":"webpack","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"Virtual Weather Sensors"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin that provides comprehensive weather data from AccuWeather API with calculated wind values and NMEA2000-compatible environmental measurements","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","vitest":"^4.1.6","esbuild":"^0.28.0","webpack":"^5.106.2","@vitest/ui":"^4.1.6","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.7.0","ajv-formats":"^3.0.1","lint-staged":"^17.0.4","webpack-cli":"^7.0.2","ajv-draft-04":"^1.0.0","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","@babel/preset-react":"^7.28.5","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.1.6","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.5.3_1778909665571_0.5045977384414764","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.6.0":{"name":"signalk-virtual-weather-sensors","version":"1.6.0","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.6.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"9ba2f59fdc3712f2dcdd0e1a3f41e21290218cb8","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.6.0.tgz","fileCount":40,"integrity":"sha512-MK5DtWH/OGXHAP2ipVxFu2wH7TZ+VA/ZEawE9I0tG50LEqWKectv0VTG5ymwKzipzpH1y6B2fBPvNM66paBBCQ==","signatures":[{"sig":"MEQCIFYkv/DzIGgx9T0hVb5MEOvxkg/ZktNrHtdR0/4SOLzQAiA/02m0zZTXodxzoYT7s7q9NtIS0at+G3y2T8CBYisXPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":648914},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"398c9eef4fc0a973ade9d500ead9a6fc3f9ff9a2","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel","clean":"rm -rf dist/ public/","format":"biome format --write .","prepack":"npm run build","prepare":"husky || true","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:panel":"webpack","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"Virtual Weather Sensors"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin: AccuWeather marine weather as 24+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","vitest":"^4.1.6","esbuild":"^0.28.0","webpack":"^5.106.2","@vitest/ui":"^4.1.6","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.7.0","ajv-formats":"^3.0.1","lint-staged":"^17.0.4","webpack-cli":"^7.0.2","ajv-draft-04":"^1.0.0","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","@babel/preset-react":"^7.28.5","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.1.6","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.6.0_1778949922624_0.9504048060313897","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.6.1":{"name":"signalk-virtual-weather-sensors","version":"1.6.1","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.6.1","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"d915a271636d6f3db013c102a37fe592666f56c4","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.6.1.tgz","fileCount":40,"integrity":"sha512-S6e5qd9Vj6I/pIpggsWWwjnOnStfsCPonxro6h6fjmWMML2llnxksP53qEGqUM6C0ZlmkXwma3BeFQ6bCKiV9Q==","signatures":[{"sig":"MEUCIQDejieKdeA4dRRPN559gZQb17jLEPu8UozBn3UY5c7kHAIgH2eYItK8kc1Mz1ujkpKA9+1z94ZFbDMO2rz5OM9UHSA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":642628},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"26a4fc3a930b6f0089adbbf44be8fa31df4f01d3","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel","clean":"rm -rf dist/ public/","format":"biome format --write .","prepack":"npm run build","prepare":"husky || true","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:panel":"webpack","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"Virtual Weather Sensors"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin: AccuWeather marine weather as 24+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","vitest":"^4.1.6","esbuild":"^0.28.0","webpack":"^5.106.2","@vitest/ui":"^4.1.6","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.7.0","ajv-formats":"^3.0.1","lint-staged":"^17.0.4","webpack-cli":"^7.0.2","ajv-draft-04":"^1.0.0","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","@babel/preset-react":"^7.28.5","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.1.6","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.6.1_1779214816771_0.4275458663111473","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.6.2":{"name":"signalk-virtual-weather-sensors","version":"1.6.2","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.6.2","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"bf04a0a97266bcd14cb1ce67257789a85b158730","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.6.2.tgz","fileCount":40,"integrity":"sha512-Efxn+slhHeqMNCRjhQ2Ff3zSIGyOrXJdUt4Wy5E9LgX8m3DYbOAwXxtzYLugOjL/KkDgsRS/btXzqtOSEizflQ==","signatures":[{"sig":"MEUCIA57txDuOYjr9MlkQ8XTdN0Q5RfEcGCivcDIbQg+i5cNAiEA262CEfoxn/98ijXiJP7WTvpip1ShNU21xLdCcyd4w3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":652552},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f6b64230c52e9395795646edecb62ac55a01d1e4","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel","clean":"rm -rf dist/ public/","format":"biome format --write .","prepack":"npm run build","prepare":"husky || true","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:panel":"webpack","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"Virtual Weather Sensors"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"11.12.1","description":"Signal K plugin: AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.22.3","husky":"^9.1.7","react":"^19.2.6","vitest":"^4.1.7","esbuild":"^0.28.0","webpack":"^5.107.0","@vitest/ui":"^4.1.7","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.9.1","ajv-formats":"^3.0.1","lint-staged":"^17.0.5","webpack-cli":"^7.0.2","ajv-draft-04":"^1.0.0","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","@babel/preset-react":"^7.28.5","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.1.7","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.6.2_1779367201440_0.5794434661667849","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.6.3":{"name":"signalk-virtual-weather-sensors","version":"1.6.3","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.6.3","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"d0da0a28c677c868d932074184cc8fdd7c6aa3e7","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.6.3.tgz","fileCount":40,"integrity":"sha512-HwN7ZZNiXUu2HJ98Z/bwiVhUatgaZxLMO1Qy30fPKBmZWTXVx/LkmDHfm3A1QtgAC4UC8Pv0yh0+n0k5tKy9jw==","signatures":[{"sig":"MEUCIQCESHsH6FG403WgIxaE/cbWbM2l9y+eV6olyKeIL8wsMgIgbi5VVbwWXK/IIgMjy+NYMmVg+Ow1ISh/PdRRXg7Rn9s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.6.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":657839},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"e3458f9b3187319af31b2afb353c7a4ea2223582","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel","clean":"rm -rf dist/ public/","format":"biome format --write .","prepack":"npm run build","prepare":"husky || true","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:panel":"webpack","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"Virtual Weather Sensors"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin: AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.22.3","husky":"^9.1.7","react":"^19.2.6","vitest":"^4.1.7","esbuild":"^0.28.0","webpack":"^5.107.0","@vitest/ui":"^4.1.7","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.9.1","ajv-formats":"^3.0.1","lint-staged":"^17.0.5","webpack-cli":"^7.0.2","ajv-draft-04":"^1.0.0","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","@babel/preset-react":"^7.28.5","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.1.7","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.6.3_1779480690127_0.8709382581288583","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.6.4":{"name":"signalk-virtual-weather-sensors","version":"1.6.4","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.6.4","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"7620ac2ae49d876ff230b647a7e66d3306c43752","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.6.4.tgz","fileCount":40,"integrity":"sha512-nCVDA1TtKQVLWPLzdBFoM/YGwTKbBpZKTYC2XPO1LcDF8lFDStPXsDR2564QWHNtrTmf6Idu9EagOU6+FJbqQg==","signatures":[{"sig":"MEUCIQCuh8SQL7HtXosHTy8y30ZIlnN2rI2SUolhHtpmuBI19gIgXyIkK0q1rg0gmD+hho5ZFcANwUuTdhQ1ljKZI6i2Bq4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.6.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":682971},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"7840ae7cc50f1b5182bfa1cd7bd2467e40e507f0","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel","clean":"rm -rf dist/ public/","format":"biome format --write .","prepack":"npm run build","prepare":"husky || true","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","type-check":"tsc --noEmit","build:panel":"webpack","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"Virtual Weather Sensors"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin: AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.22.3","husky":"^9.1.7","react":"^19.2.6","vitest":"^4.1.7","esbuild":"^0.28.0","webpack":"^5.107.0","@vitest/ui":"^4.1.7","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.9.1","ajv-formats":"^3.0.1","lint-staged":"^17.0.5","webpack-cli":"^7.0.2","ajv-draft-04":"^1.0.0","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","@babel/preset-react":"^7.28.5","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.1.7","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.6.4_1779682156562_0.16144930220168896","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.7.0":{"name":"signalk-virtual-weather-sensors","version":"1.7.0","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.7.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"298295b44a6c7f25df9e2757331b6a75cb223d04","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.7.0.tgz","fileCount":46,"integrity":"sha512-Qy8Yw1Uz8GJ7XzZvskRhpvy9mll73aQEOPwo1Fsnmakacs5UZKZuupQwzLPyuHWe9ILDuExfFfMMlU1YGFoHnw==","signatures":[{"sig":"MEYCIQCJBgRz+++9Ol52MjW/q0E910Hp6F0pZb0f6hVJqLR/3AIhAKSkjnldmKiA8WL25ouRsFpXQ6wT2V2uCgXU2+sAVRCe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":859228},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"de651ff3ce8b11147a8b805ebf2d9755db7c1569","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest run","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel","clean":"rm -rf dist/ public/","format":"biome format --write .","prepack":"npm run build","prepare":"husky || true","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","test:watch":"vitest","type-check":"tsc --noEmit","build:panel":"webpack","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"Virtual Weather Sensors","screenshots":["assets/screenshots/config-panel-status.png","assets/screenshots/config-panel-notifications.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"11.12.1","description":"Signal K plugin: AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.22.3","husky":"^9.1.7","react":"^19.2.6","vitest":"^4.1.7","esbuild":"^0.28.0","webpack":"^5.107.0","@vitest/ui":"^4.1.7","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.9.1","ajv-formats":"^3.0.1","lint-staged":"^17.0.5","webpack-cli":"^7.0.2","ajv-draft-04":"^1.0.0","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","@babel/preset-react":"^7.28.5","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.1.7","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.7.0_1780003799374_0.15073488544573643","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.7.1":{"name":"signalk-virtual-weather-sensors","version":"1.7.1","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.7.1","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"26989a6b283ea9e7a90423e47ff24dd2dc9d56ca","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.7.1.tgz","fileCount":46,"integrity":"sha512-HW1Hu3ZOB9yHMe3sWRWm9JtjEv+WfwOAxSUJKVgAZikc67a8MgupwjKZniixK7Q9ij1+stWwP3hqTBQsakKiTw==","signatures":[{"sig":"MEUCIBDcHAKokRUUX1kNRc68sk0+AkBFWwUWNi00gwTLJFSVAiEA3TvhnAWmZbnqewtb0B9BzHG05gwVxkNzPG6mE+tyNw8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":865090},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"5bef66619a4dd7d892f4bc4f23b81b5d4e247286","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest run","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel","clean":"rm -rf dist/ public/","format":"biome format --write .","prepack":"npm run build","prepare":"husky || true","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","test:watch":"vitest","type-check":"tsc --noEmit","build:panel":"webpack","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"Virtual Weather Sensors","screenshots":["assets/screenshots/config-panel-status.png","assets/screenshots/config-panel-notifications.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin: AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.22.3","husky":"^9.1.7","react":"^19.2.6","vitest":"^4.1.7","esbuild":"^0.28.0","webpack":"^5.107.0","@vitest/ui":"^4.1.7","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.9.1","ajv-formats":"^3.0.1","lint-staged":"^17.0.5","webpack-cli":"^7.0.2","ajv-draft-04":"^1.0.0","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","@babel/preset-react":"^7.28.5","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.1.7","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.7.1_1780022467524_0.4084798546973387","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.7.2":{"name":"signalk-virtual-weather-sensors","version":"1.7.2","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.7.2","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"fe4833e3d861560d4c888819f40e40816cbe12ed","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.7.2.tgz","fileCount":46,"integrity":"sha512-NEzme4zgsIBSR2xAr6AGsxdgLX43PDyDyAcEm+tlsDpd3IYjVv1z8LZPaESk68F2PeoFtooOOf0x6jppPqGHCA==","signatures":[{"sig":"MEUCIGnPLbWe+50UW8RoXUr90MfyY5MJ/ME/nmFw1h77BKvmAiEAgst7VaWzwu9dJITSZZ/KmuUykHP+Y4r+Xl6u5t28Vi4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":879464},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"536db9767cf6e38ee337597899a05640c69472e2","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest run","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel","clean":"node scripts/clean.mjs","hooks":"husky","format":"biome format --write .","prepack":"npm run build","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","test:watch":"vitest","type-check":"tsc --noEmit","build:panel":"webpack","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-nmea2000-emitter-cannon"],"displayName":"Virtual Weather Sensors","screenshots":["assets/screenshots/config-panel-status.png","assets/screenshots/config-panel-notifications.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin: AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.22.3","husky":"^9.1.7","react":"^19.2.6","vitest":"^4.1.7","esbuild":"^0.28.0","webpack":"^5.107.0","@vitest/ui":"^4.1.7","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.9.1","ajv-formats":"^3.0.1","lint-staged":"^17.0.5","webpack-cli":"^7.0.2","ajv-draft-04":"^1.0.0","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","@babel/preset-react":"^7.28.5","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.1.7","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.7.2_1780200570708_0.6410678098942824","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.8.0":{"name":"signalk-virtual-weather-sensors","version":"1.8.0","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.8.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"1654a1487247f59481f1e590f70dcd52a2eafb1f","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.8.0.tgz","fileCount":50,"integrity":"sha512-6cw2M+ne76flqgWCCgbEJaeFBxVU+pnMF7hLlfVZC+jQGH8i5H3qn0oq/ImT5Xa6rSaG2/xmmr5snxCr4W2fPA==","signatures":[{"sig":"MEYCIQDpPFB2IF0lzoaL1TEStnOWBl+pBqXZcfzy+4jxps91+QIhAPjtr7i8AnNYutNo7to9ODc1R/j66NYOq2aKM9SikoyM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":951974},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"935836189c6a5c27d5c59b837919a34aa5b96ee4","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest run","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel","clean":"node scripts/clean.mjs","hooks":"husky","format":"biome format --write .","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","test:watch":"vitest","type-check":"tsc --noEmit && npm run type-check:panel","build:panel":"webpack","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate","type-check:panel":"tsc -p tsconfig.panel.json --noEmit"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-nmea2000-emitter-cannon","signalk-binnacle"],"displayName":"Virtual Weather Sensors","screenshots":["assets/screenshots/config-panel-status.png","assets/screenshots/config-panel-notifications.png","assets/screenshots/config-panel-night.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin: AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.22.3","husky":"^9.1.7","react":"^19.2.6","vitest":"^4.1.7","esbuild":"^0.28.0","webpack":"^5.107.0","@vitest/ui":"^4.1.7","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.9.1","ajv-formats":"^3.0.1","lint-staged":"^17.0.5","webpack-cli":"^7.0.2","@types/react":"^19.2.17","ajv-draft-04":"^1.0.0","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","@babel/preset-react":"^7.28.5","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.1.7","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@babel/preset-typescript":"^7.29.7","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.8.0_1781190790221_0.45012918654915657","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.9.0":{"name":"signalk-virtual-weather-sensors","version":"1.9.0","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.9.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"f8da4eadf64fce2616ec5ed54994055e8008aff7","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.9.0.tgz","fileCount":74,"integrity":"sha512-7yoUys/MGkcM6qxoDe+DiWdKbB64VxwRL6WE9Qvd2a1IMxd0IC45aC8NRFu2HBNsSMvBv1gAi/0J0AMsM34rbA==","signatures":[{"sig":"MEYCIQCc+bR4Tc2IZXRIdntP1kGNDOdqZYwu43lSbZow3kV/fgIhAKhUKsqRQ2gzQ/JQQpa2c98qreHzMi75X0LgyHu48iV/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1112381},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"fc629d8725d0d3ff3b5d0ac21d8d6cb5a09f3a75","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest run","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel","clean":"node scripts/clean.mjs","hooks":"husky","format":"biome format --write .","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","test:watch":"vitest","type-check":"tsc --noEmit && npm run type-check:panel","build:panel":"webpack","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate","type-check:panel":"tsc -p tsconfig.panel.json --noEmit"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-nmea2000-emitter-cannon","signalk-binnacle"],"displayName":"Virtual Weather Sensors","screenshots":["assets/screenshots/config-panel-status.png","assets/screenshots/config-panel-notifications.png","assets/screenshots/config-panel-night.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin: keyless Open-Meteo or AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.22.3","husky":"^9.1.7","react":"^19.2.6","vitest":"^4.1.7","esbuild":"^0.28.0","webpack":"^5.107.0","@vitest/ui":"^4.1.7","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.9.1","ajv-formats":"^3.0.1","lint-staged":"^17.0.5","webpack-cli":"^7.0.2","@types/react":"^19.2.17","ajv-draft-04":"^1.0.0","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","@babel/preset-react":"^7.28.5","@signalk/server-api":"^2.24.0","@vitest/coverage-v8":"^4.1.7","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@babel/preset-typescript":"^7.29.7","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.9.0_1781709017009_0.5474690412401695","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.9.1":{"name":"signalk-virtual-weather-sensors","version":"1.9.1","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.9.1","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"2ef71f536191774d455fe8df95d7500438a0fe15","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.9.1.tgz","fileCount":74,"integrity":"sha512-SKqiZqn8MpDAiqoA0MIOUaBILMwevrvGjBkEc70CeBjd6XrZkEg9mntFsrK8LShX8yGbrwF6ObJYEn/phN2N+g==","signatures":[{"sig":"MEQCIFQCo9mowh6SgmqejdBGnxarLcARg/yKzB0c71X7tt/RAiBmYy+ph9pwuvGgRznq8W3GolmdOjFUlg5Y51354/1leQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1123750},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"f4065e10ce024a2bff209802fa9ee32663f82082","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest run","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel","clean":"node scripts/clean.mjs","hooks":"husky","format":"biome format --write .","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","test:watch":"vitest","type-check":"tsc --noEmit && npm run type-check:panel","build:panel":"webpack","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate","type-check:panel":"tsc -p tsconfig.panel.json --noEmit"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-nmea2000-emitter-cannon","signalk-binnacle"],"displayName":"Virtual Weather Sensors","screenshots":["assets/screenshots/config-panel-status.png","assets/screenshots/config-panel-notifications.png","assets/screenshots/config-panel-night.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"qs":"^6.15.2"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin: keyless Open-Meteo or AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.22.4","husky":"^9.1.7","react":"^19.2.7","vitest":"^4.1.7","esbuild":"^0.28.1","webpack":"^5.107.2","@vitest/ui":"^4.1.7","typescript":"^6.0.3","@babel/core":"^7.29.7","@types/node":"^26.0.0","ajv-formats":"^3.0.1","lint-staged":"^17.0.8","webpack-cli":"^7.0.3","@types/react":"^19.2.17","ajv-draft-04":"^1.0.0","babel-loader":"^10.1.1","@biomejs/biome":"^2.5.0","@types/express":"^5.0.6","@babel/preset-react":"^7.29.7","@signalk/server-api":"^2.28.0","@vitest/coverage-v8":"^4.1.7","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@babel/preset-typescript":"^7.29.7","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.9.1_1782099305400_0.9460181075098595","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.10.0":{"name":"signalk-virtual-weather-sensors","version":"1.10.0","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","open-meteo","met-no","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.10.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"0bb676bdc92916f92aef23e3ac1185417a41c6ea","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.10.0.tgz","fileCount":134,"integrity":"sha512-sflhFsvAOwPqti7pNnhXFiYSJzqv/3W8i2H1NuqeDEef8Os//4s/33RK61N5qL6nrsf0RkWYJXw2hhDucrDfLQ==","signatures":[{"sig":"MEUCIQDrNq+niSpqusoL6JxsRj1jnQcusYIHEYS/fvR3Sn/GtAIgDTo+xwRHfaXpKoo0MWneU3/8++sRdKCh7FVTbcRc9oU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1325906},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"841908b317bda3d66b23499f26bc9fd7171b8652","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest run","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel","clean":"node scripts/clean.mjs","hooks":"husky","format":"biome format --write .","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","test:watch":"vitest","type-check":"tsc --noEmit && npm run type-check:panel","build:panel":"webpack","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate","type-check:panel":"tsc -p tsconfig.panel.json --noEmit"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-nmea2000-emitter-cannon","signalk-binnacle"],"displayName":"Virtual Weather Sensors","screenshots":["assets/screenshots/config-panel-status.png","assets/screenshots/config-panel-notifications.png","assets/screenshots/config-panel-night.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"qs":"^6.15.2"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin: keyless Open-Meteo, Met.no, or AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.22.4","husky":"^9.1.7","react":"^19.2.7","vitest":"^4.1.7","esbuild":"^0.28.1","webpack":"^5.107.2","@vitest/ui":"^4.1.7","typescript":"^6.0.3","@babel/core":"^8.0.1","@types/node":"^26.0.0","ajv-formats":"^3.0.1","lint-staged":"^17.0.8","webpack-cli":"^7.0.3","@types/react":"^19.2.17","ajv-draft-04":"^1.0.0","babel-loader":"^10.1.1","@biomejs/biome":"^2.5.1","@types/express":"^5.0.6","@babel/preset-react":"^8.0.1","@signalk/server-api":"^2.28.0","@vitest/coverage-v8":"^4.1.7","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@babel/preset-typescript":"^8.0.1","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.10.0_1782222167276_0.30493366990617665","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.11.0":{"name":"signalk-virtual-weather-sensors","version":"1.11.0","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","open-meteo","met-no","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.11.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"6bddb7616228ee4bd9c43aaf18243a8e9d6920b2","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.11.0.tgz","fileCount":134,"integrity":"sha512-Mo5/GBLXd3BpPsaUY2aswuD2d/PbfcyrYlDueKco5vx1gZu0RkOPS3P16KXuAxZ205CaCLP825G+EXfI1MGyqA==","signatures":[{"sig":"MEUCIQD7VE6n9REmtzVU/PfUNCGeAuLEPYjMwQriUCI/CirA2wIgWgZL0IbFyH608796j2RcXcg72DzScIKbr04jKmoHSYA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1336577},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"1560036fe221498c630e6ea47ca4bbca77879bbe","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest run","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel","clean":"node scripts/clean.mjs","hooks":"husky","format":"biome format --write .","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","test:watch":"vitest","type-check":"tsc --noEmit && npm run type-check:panel","build:panel":"webpack","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate","type-check:panel":"tsc -p tsconfig.panel.json --noEmit"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-nmea2000-emitter-cannon","signalk-binnacle","signalk-openrouter-companion"],"displayName":"Virtual Weather Sensors","screenshots":["assets/screenshots/config-panel-status.png","assets/screenshots/config-panel-notifications.png","assets/screenshots/config-panel-night.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"qs":"^6.15.2"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin: keyless Open-Meteo, Met.no, or AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.22.4","husky":"^9.1.7","react":"^19.2.7","vitest":"^4.1.7","esbuild":"^0.28.1","webpack":"^5.107.2","@vitest/ui":"^4.1.7","typescript":"^6.0.3","@babel/core":"^8.0.1","@types/node":"^26.0.0","ajv-formats":"^3.0.1","lint-staged":"^17.0.8","webpack-cli":"^7.0.3","@types/react":"^19.2.17","ajv-draft-04":"^1.0.0","babel-loader":"^10.1.1","@biomejs/biome":"^2.5.1","@types/express":"^5.0.6","@babel/preset-react":"^8.0.1","@signalk/server-api":"^2.28.0","@vitest/coverage-v8":"^4.1.7","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@babel/preset-typescript":"^8.0.1","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.11.0_1783193910752_0.979360637937718","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.12.0":{"name":"signalk-virtual-weather-sensors","version":"1.12.0","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","open-meteo","met-no","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.12.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"9b1e6c73dc42718e81aa1435cdb3e547a8d6b1d0","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.12.0.tgz","fileCount":134,"integrity":"sha512-5uvsZBdbCL/0Nm7wRl2mUou30i7UmKCupZbZEVtoWdygHrkoxnSHl6x/zogkmOzAOO78hmDjQ5m7JT5YTiDDCQ==","signatures":[{"sig":"MEYCIQCoW6IMbMwNKlWZW44eMhtq5bPtbyGrPhvAnxyJyWQU3wIhAKqeM6bLQ4q5suTtiwMrZNI0AiUmODJZiLTsqE2Mc0Hl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1357112},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"e7a2b2c61b22b9db6e257e277f00c282b907dc74","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest run","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel","clean":"node scripts/clean.mjs","hooks":"husky","format":"biome format --write .","release":"git rev-parse \"v$npm_package_version\" >/dev/null 2>&1 && { echo \"tag v$npm_package_version already exists\"; exit 1; } ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run type-check && npm run lint && npm run test:run","test:watch":"vitest","type-check":"tsc --noEmit && npm run type-check:panel","build:panel":"webpack","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","test:browser":"vitest run --config vitest.browser.config.ts","mutation-test":"stryker run","test:coverage":"vitest run --coverage","create-release":"gh release create v$npm_package_version --generate-notes","prepublishOnly":"npm run validate && npm run build","security-audit":"npm audit --audit-level=moderate","type-check:panel":"tsc -p tsconfig.panel.json --noEmit","screenshots:panel":"node scripts/capture-panel-screenshots.mjs"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-nmea2000-emitter-cannon","signalk-binnacle","signalk-openrouter-companion"],"displayName":"Virtual Weather Sensors","screenshots":["assets/screenshots/config-panel-status.png","assets/screenshots/config-panel-notifications.png","assets/screenshots/config-panel-night.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"qs":"^6.15.2"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K plugin: keyless Open-Meteo, Met.no, or AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write","biome format --write"],"*.{json,md}":["biome format --write"]},"sideEffects":false,"_nodeVersion":"20.20.2","allowScripts":{"esbuild@0.28.1":true},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.23.1","husky":"^9.1.7","react":"^19.2.7","vitest":"^4.1.10","esbuild":"^0.28.1","webpack":"^5.108.4","react-dom":"^19.2.7","@vitest/ui":"^4.1.10","playwright":"^1.61.1","typescript":"^7.0.2","@babel/core":"^8.0.1","@types/node":"^26.1.1","ajv-formats":"^3.0.1","lint-staged":"^17.0.8","webpack-cli":"^7.2.1","@types/react":"^19.2.17","ajv-draft-04":"^1.0.0","babel-loader":"^10.1.1","@biomejs/biome":"^2.5.3","@types/express":"^5.0.6","@types/react-dom":"^19.2.3","@babel/preset-react":"^8.0.1","@signalk/server-api":"^2.30.0","@vitest/coverage-v8":"^4.1.10","@stryker-mutator/core":"^9.6.1","@signalk/signalk-schema":"^1.8.2","@babel/preset-typescript":"^8.0.1","@vitest/browser-playwright":"^4.1.10","@stryker-mutator/vitest-runner":"^9.6.1","@stryker-mutator/typescript-checker":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.12.0_1783970881105_0.6824186299309241","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.13.0":{"name":"signalk-virtual-weather-sensors","version":"1.13.0","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","open-meteo","met-no","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.13.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"2fb55550a6975f3eb63bbb5b5d63aea369a4025e","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.13.0.tgz","fileCount":137,"integrity":"sha512-v0YfEwzV0TV46lgaQNeSaGDEL9Oxg8thtki/M6Ef1bh6ETtCgArqxC7do12kBGsSXLAulZLyR+p6vF1Y+LTizg==","signatures":[{"sig":"MEUCIQCS0REMbVuLpH4qgt7hPF0pYeHGFZmnO+YoWqCaHOr4rgIgP1t/oEmXhiZuR1rU8u8+Pmqeb2lhrMxBLv/W1/OS5AQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1492444},"main":"dist/index.js","type":"module","_from":"file:artifacts/signalk-virtual-weather-sensors-1.13.0.tgz","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"scripts":{"dev":"tsx watch src/index.ts","lint":"npm run lint:code && npm run lint:docs && npm run spellcheck","size":"size-limit","test":"vitest run","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel && npm run check:panel","clean":"node scripts/clean.mjs","hooks":"git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-push","format":"biome format --write .","verify":"npm run verify:fast && npm run test:coverage && npm run build && npm run size && npm run package:check && npm run audit:runtime","test:ui":"vitest --ui","ci:biome":"biome ci .","deadcode":"knip","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run verify","lint:code":"biome lint .","lint:docs":"markdownlint-cli2 \"*.md\" \".github/*.md\" \"docs/*.md\" \"docs/decisions/*.md\" \"docs/maintainers/*.md\"","audit:full":"npm audit --audit-level=high","boundaries":"node scripts/check-boundaries.mjs","spellcheck":"cspell --no-progress --show-suggestions README.md CHANGELOG.md CLAUDE.md \".github/**/*.{md,yml,yaml}\" \"docs/*.md\" \"docs/decisions/*.md\" \"docs/maintainers/*.md\"","test:watch":"vitest","type-check":"tsc --noEmit && npm run type-check:panel && npm run type-check:browser","build:panel":"node scripts/build-panel.mjs","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","check:panel":"node scripts/check-panel-bundle.mjs","verify:fast":"npm run verify:commit && npm run type-check","build:bundle":"node esbuild.config.js","ci:workflows":"node scripts/check-workflows.mjs","format:check":"biome format .","test:browser":"npm run build && npm run test:browser:built","audit:runtime":"npm audit --omit=dev --audit-level=high","mutation-test":"stryker run","package:check":"publint --pack npm --strict && node scripts/check-package.mjs","release:check":"node scripts/check-release.mjs","test:coverage":"vitest run --coverage","verify:commit":"npm run ci:biome && npm run lint:docs && npm run spellcheck && npm run ci:workflows && npm run boundaries && npm run deadcode","prepublishOnly":"npm run release:check && npm run verify:release","security-audit":"npm audit --audit-level=moderate","verify:browser":"npm run verify && npm run test:browser:built","verify:release":"npm run verify && npm run test:browser:cross:built && npm run audit:full","test:integration":"node scripts/check-signalk-integration.mjs","type-check:panel":"tsc -p tsconfig.panel.json --noEmit","screenshots:panel":"npm run build && node scripts/capture-panel-screenshots.mjs","test:browser:built":"playwright test --project=chromium","test:browser:cross":"npm run build && npm run test:browser:cross:built","type-check:browser":"tsc -p tsconfig.browser.json --noEmit","test:browser:cross:built":"node scripts/run-browser-matrix.mjs"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-nmea2000-emitter-cannon","signalk-binnacle","signalk-openrouter-companion"],"displayName":"Virtual Weather Sensors","screenshots":["assets/screenshots/config-panel-status.png","assets/screenshots/config-panel-notifications.png","assets/screenshots/config-panel-night.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"_resolved":"/home/runner/work/signalk-virtual-weather-sensors/signalk-virtual-weather-sensors/artifacts/signalk-virtual-weather-sensors-1.13.0.tgz","overrides":{"qs":"^6.15.2"},"_integrity":"sha512-v0YfEwzV0TV46lgaQNeSaGDEL9Oxg8thtki/M6Ef1bh6ETtCgArqxC7do12kBGsSXLAulZLyR+p6vF1Y+LTizg==","devEngines":{"runtime":{"name":"node","onFail":"warn","version":">=22.18"},"packageManager":{"name":"npm","onFail":"warn","version":"^11.18.0"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"size-limit":[{"name":"Plugin server bundle","path":"dist/index.js","limit":"180 kB"}],"_npmVersion":"11.18.0","description":"Signal K plugin: keyless Open-Meteo, Met.no, or AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.28.1":true},"_hasShrinkwrap":false,"packageManager":"npm@11.18.0","devDependencies":{"ajv":"^8.20.0","tsx":"^4.23.1","knip":"6.27.0","vite":"^8.1.5","react":"19.2.7","cspell":"10.0.1","vitest":"4.1.10","esbuild":"^0.28.1","publint":"0.3.21","webpack":"^5.108.4","react-dom":"19.2.7","@vitest/ui":"^4.1.10","size-limit":"12.1.0","typescript":"7.0.2","@types/node":"20.19.43","ajv-formats":"^3.0.1","webpack-cli":"^7.2.1","@types/react":"^19.2.17","ajv-draft-04":"^1.0.0","@biomejs/biome":"2.5.4","@types/express":"^5.0.6","esbuild-loader":"^4.5.0","@playwright/test":"^1.61.1","@size-limit/file":"12.1.0","@types/react-dom":"^19.2.3","markdownlint-cli2":"0.23.1","@signalk/server-api":"2.30.0","@vitest/coverage-v8":"^4.1.10","@axe-core/playwright":"^4.12.1","@vitejs/plugin-react":"^6.0.3","@stryker-mutator/core":"^9.6.1","signalk-nearlcrews-ui":"0.3.0","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0 <3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.13.0_1784320365661_0.45532712843843126","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.13.1":{"name":"signalk-virtual-weather-sensors","version":"1.13.1","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","open-meteo","met-no","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.13.1","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"d47e0822589a33a900ec645712af713a072fc7fa","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.13.1.tgz","fileCount":136,"integrity":"sha512-T55P2wQA64bXsB3eB89FKVBYSaTZ/b3dQgmchjEIOGbYLuXIn7GbfD7onF1hGNngu4EcrdJxKrR7dcISgUxBag==","signatures":[{"sig":"MEYCIQCvascU7rDN5zDk1Avwpbsx5Fx17Gexkje19EwZh95zIwIhAMCKXqAMSBQeQJFtGeupUePH8n5vRyVaRpbrEtoZax84","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.13.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1501270},"main":"dist/index.js","type":"module","_from":"file:artifacts/signalk-virtual-weather-sensors-1.13.1.tgz","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"scripts":{"dev":"tsx watch src/index.ts","lint":"npm run lint:code && npm run lint:docs && npm run spellcheck","size":"size-limit","test":"vitest run","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel && npm run check:panel","clean":"node scripts/clean.mjs","hooks":"git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-push","format":"biome format --write .","verify":"npm run verify:fast && npm run test:coverage && npm run build && npm run size && npm run package:check && npm run audit:runtime","test:ui":"vitest --ui","ci:biome":"biome ci .","deadcode":"knip","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run verify","lint:code":"biome lint .","lint:docs":"markdownlint-cli2 \"*.md\" \".github/*.md\" \"docs/*.md\" \"docs/decisions/*.md\" \"docs/maintainers/*.md\"","audit:full":"npm audit --audit-level=high","boundaries":"node scripts/check-boundaries.mjs","spellcheck":"cspell --no-progress --show-suggestions README.md CHANGELOG.md CLAUDE.md \".github/**/*.{md,yml,yaml}\" \"docs/*.md\" \"docs/decisions/*.md\" \"docs/maintainers/*.md\"","test:watch":"vitest","type-check":"tsc --noEmit && npm run type-check:panel && npm run type-check:browser","build:panel":"node scripts/build-panel.mjs","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","check:panel":"node scripts/check-panel-bundle.mjs","verify:fast":"npm run verify:commit && npm run type-check","build:bundle":"node esbuild.config.js","ci:workflows":"node scripts/check-workflows.mjs","format:check":"biome format .","test:browser":"npm run build && npm run test:browser:built","audit:runtime":"npm audit --omit=dev --audit-level=high","mutation-test":"stryker run","package:check":"publint --pack npm --strict && node scripts/check-package.mjs","release:check":"node scripts/check-release.mjs","test:coverage":"vitest run --coverage","verify:commit":"npm run ci:biome && npm run lint:docs && npm run spellcheck && npm run ci:workflows && npm run boundaries && npm run deadcode","prepublishOnly":"npm run release:check && npm run verify:release","security-audit":"npm audit --audit-level=moderate","verify:browser":"npm run verify && npm run test:browser:built","verify:release":"npm run verify && npm run test:browser:cross:built && npm run audit:full","test:integration":"node scripts/check-signalk-integration.mjs","type-check:panel":"tsc -p tsconfig.panel.json --noEmit","screenshots:panel":"npm run build && node scripts/capture-panel-screenshots.mjs","test:browser:built":"playwright test --project=chromium","test:browser:cross":"npm run build && npm run test:browser:cross:built","type-check:browser":"tsc -p tsconfig.browser.json --noEmit","test:browser:cross:built":"node scripts/run-browser-matrix.mjs"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-nmea2000-emitter-cannon","signalk-binnacle","signalk-openrouter-companion"],"displayName":"Virtual Weather Sensors","screenshots":["assets/screenshots/config-panel-status.png","assets/screenshots/config-panel-notifications.png","assets/screenshots/config-panel-night.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"_resolved":"/home/runner/work/signalk-virtual-weather-sensors/signalk-virtual-weather-sensors/artifacts/signalk-virtual-weather-sensors-1.13.1.tgz","overrides":{"qs":"^6.15.2","markdownlint-cli2":{"js-yaml":"5.2.2"}},"_integrity":"sha512-T55P2wQA64bXsB3eB89FKVBYSaTZ/b3dQgmchjEIOGbYLuXIn7GbfD7onF1hGNngu4EcrdJxKrR7dcISgUxBag==","devEngines":{"runtime":{"name":"node","onFail":"warn","version":">=22.18"},"packageManager":{"name":"npm","onFail":"warn","version":"^11.18.0"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"size-limit":[{"name":"Plugin server bundle","path":"dist/index.js","limit":"180 kB"}],"_npmVersion":"11.18.0","description":"Signal K plugin: keyless Open-Meteo, Met.no, or AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.28.1":true},"_hasShrinkwrap":false,"packageManager":"npm@11.18.0","devDependencies":{"ajv":"^8.20.0","tsx":"^4.23.1","knip":"6.29.0","vite":"^8.1.5","react":"19.2.8","cspell":"10.0.1","vitest":"4.1.10","esbuild":"^0.28.1","publint":"0.3.22","webpack":"^5.109.1","react-dom":"19.2.8","@vitest/ui":"^4.1.10","size-limit":"13.0.1","typescript":"7.0.2","@types/node":"26.1.2","ajv-formats":"^3.0.1","webpack-cli":"^7.2.1","@types/react":"^19.2.17","ajv-draft-04":"^1.0.0","@biomejs/biome":"2.5.5","@types/express":"^5.0.6","esbuild-loader":"^4.5.0","@playwright/test":"^1.62.0","@size-limit/file":"13.0.1","@types/react-dom":"^19.2.3","markdownlint-cli2":"0.23.2","@signalk/server-api":"2.30.0","@vitest/coverage-v8":"^4.1.10","@axe-core/playwright":"^4.12.1","@vitejs/plugin-react":"^6.0.4","@stryker-mutator/core":"^9.6.1","signalk-nearlcrews-ui":"0.4.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0 <3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.13.1_1785201460737_0.5771347581305546","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.13.2":{"name":"signalk-virtual-weather-sensors","version":"1.13.2","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","open-meteo","met-no","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.13.2","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"6e96f2405d3f00476fd16a36b2258c4b23f1bf5d","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.13.2.tgz","fileCount":136,"integrity":"sha512-o6k0MciWZmeQA68R5uPTWcu3BbTVILtw9ua5+/7+fvG336Z3vNqiQW+360dBSCMz3ORNhfRsPhuynzNIiih3hw==","signatures":[{"sig":"MEQCIEITHJa8phhqxINhoyYQT08GvJWsrpPEDHa/craxoymRAiABEWWg1/S8hFa81b1wRWMGPYh1wugn7iL2qh+xJaigAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.13.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1536304},"main":"dist/index.js","type":"module","_from":"file:artifacts/signalk-virtual-weather-sensors-1.13.2.tgz","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"scripts":{"dev":"tsx watch src/index.ts","lint":"npm run lint:code && npm run lint:docs && npm run spellcheck","size":"size-limit","test":"vitest run","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel && npm run check:panel","clean":"node scripts/clean.mjs","hooks":"git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-push","format":"biome format --write .","verify":"npm run verify:fast && npm run test:coverage && npm run build && npm run size && npm run package:check && npm run audit:runtime","test:ui":"vitest --ui","ci:biome":"biome ci .","deadcode":"knip","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run verify","lint:code":"biome lint .","lint:docs":"markdownlint-cli2 \"*.md\" \".github/*.md\" \"docs/*.md\" \"docs/decisions/*.md\" \"docs/maintainers/*.md\"","audit:full":"npm audit --audit-level=moderate","boundaries":"node scripts/check-boundaries.mjs","spellcheck":"cspell --no-progress --show-suggestions README.md CHANGELOG.md CLAUDE.md \".github/**/*.{md,yml,yaml}\" \"docs/*.md\" \"docs/decisions/*.md\" \"docs/maintainers/*.md\"","test:watch":"vitest","type-check":"tsc --noEmit && npm run type-check:panel && npm run type-check:browser","build:panel":"node scripts/build-panel.mjs","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","check:panel":"node scripts/check-panel-bundle.mjs","verify:fast":"npm run verify:commit && npm run type-check","build:bundle":"node esbuild.config.js","ci:workflows":"node scripts/check-workflows.mjs","format:check":"biome format .","test:browser":"npm run build && npm run test:browser:built","audit:runtime":"npm audit --omit=dev --audit-level=high","mutation-test":"stryker run","package:check":"publint --pack npm --strict && node scripts/check-package.mjs","release:check":"node scripts/check-release.mjs","test:coverage":"vitest run --coverage","verify:commit":"npm run ci:biome && npm run lint:docs && npm run spellcheck && npm run ci:workflows && npm run boundaries && npm run deadcode","prepublishOnly":"npm run release:check && npm run verify:release","security-audit":"npm audit --audit-level=moderate","verify:browser":"npm run verify && npm run test:browser:built","verify:release":"npm run verify && npm run test:browser:cross:built && npm run audit:full","test:integration":"node scripts/check-signalk-integration.mjs","type-check:panel":"tsc -p tsconfig.panel.json --noEmit","screenshots:panel":"npm run build && node scripts/capture-panel-screenshots.mjs","test:browser:built":"playwright test --project=chromium","test:browser:cross":"npm run build && npm run test:browser:cross:built","type-check:browser":"tsc -p tsconfig.browser.json --noEmit","test:browser:cross:built":"node scripts/run-browser-matrix.mjs"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-nmea2000-emitter-cannon","signalk-binnacle","signalk-openrouter-companion"],"displayName":"Virtual Weather Sensors","screenshots":["assets/screenshots/config-panel-status.png","assets/screenshots/config-panel-notifications.png","assets/screenshots/config-panel-night.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"_resolved":"/home/runner/work/signalk-virtual-weather-sensors/signalk-virtual-weather-sensors/artifacts/signalk-virtual-weather-sensors-1.13.2.tgz","overrides":{"qs":"^6.15.2","markdownlint-cli2":{"js-yaml":"5.2.2"},"@rolldown/plugin-babel":{"@babel/plugin-transform-runtime":"7.29.7"}},"_integrity":"sha512-o6k0MciWZmeQA68R5uPTWcu3BbTVILtw9ua5+/7+fvG336Z3vNqiQW+360dBSCMz3ORNhfRsPhuynzNIiih3hw==","devEngines":{"runtime":{"name":"node","onFail":"warn","version":"^22.22.2 || ^24.15.0 || >=26.0.0"},"packageManager":{"name":"npm","onFail":"error","version":">=10.9.3"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"size-limit":[{"name":"Plugin server bundle","path":"dist/index.js","limit":"180 kB"}],"_npmVersion":"11.18.0","description":"Signal K plugin: keyless Open-Meteo, Met.no, or AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.28.1":true},"_hasShrinkwrap":false,"packageManager":"npm@11.18.0","devDependencies":{"ajv":"^8.20.0","tsx":"^4.23.5","knip":"6.31.0","vite":"^8.2.0","react":"19.2.8","cspell":"10.0.1","vitest":"4.1.10","esbuild":"^0.28.1","publint":"0.3.22","webpack":"^5.109.2","react-dom":"19.2.8","@vitest/ui":"^4.1.10","size-limit":"13.0.3","typescript":"7.0.2","@types/node":"26.1.2","ajv-formats":"^3.0.1","webpack-cli":"^7.2.2","@types/react":"^19.2.18","ajv-draft-04":"^1.0.0","@biomejs/biome":"2.5.6","@types/express":"^5.0.6","esbuild-loader":"^4.5.0","@playwright/test":"^1.62.1","@size-limit/file":"13.0.3","@types/react-dom":"^19.2.4","markdownlint-cli2":"0.23.2","@signalk/server-api":"2.30.0","@vitest/coverage-v8":"^4.1.10","@axe-core/playwright":"^4.12.1","@vitejs/plugin-react":"^6.0.5","@stryker-mutator/core":"^9.6.1","signalk-nearlcrews-ui":"0.6.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0 <3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.13.2_1785721959217_0.8301220979585822","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.13.3":{"name":"signalk-virtual-weather-sensors","version":"1.13.3","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","open-meteo","met-no","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.13.3","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"2f8d67a62818083a35c11b4deee65cbf80966bce","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.13.3.tgz","fileCount":136,"integrity":"sha512-JXhyppKcHLFlBA8INTKVOxsYc4H4uSm5SlkcHnxh8mJy36svJhOfqJk2BwLZkkIAilnLtg7TB0ZsewsYKBmHzw==","signatures":[{"sig":"MEUCIQDMt44yQ2oByA3sNMHFecK/LwXQD5oUaIDumnjP83Jc7AIgWInOJBHwldiHr878WvBvfLS0zM/cKEVNv3KqD9y9cyE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.13.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1543435},"main":"dist/index.js","type":"module","_from":"file:artifacts/signalk-virtual-weather-sensors-1.13.3.tgz","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"scripts":{"dev":"tsx watch src/index.ts","lint":"npm run lint:code && npm run lint:docs && npm run spellcheck","size":"size-limit","test":"vitest run","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel && npm run check:panel","clean":"node scripts/clean.mjs","hooks":"git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-push","format":"biome format --write .","verify":"npm run verify:fast && npm run test:coverage && npm run build && npm run size && npm run package:check && npm run audit:runtime","test:ui":"vitest --ui","ci:biome":"biome ci .","deadcode":"knip","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run verify","lint:code":"biome lint .","lint:docs":"markdownlint-cli2 \"*.md\" \".github/*.md\" \"docs/*.md\" \"docs/decisions/*.md\" \"docs/maintainers/*.md\"","audit:full":"npm audit --audit-level=moderate","boundaries":"node scripts/check-boundaries.mjs","spellcheck":"cspell --no-progress --show-suggestions README.md CHANGELOG.md CLAUDE.md \".github/**/*.{md,yml,yaml}\" \"docs/*.md\" \"docs/decisions/*.md\" \"docs/maintainers/*.md\"","test:watch":"vitest","type-check":"tsc --noEmit && npm run type-check:panel && npm run type-check:browser","build:panel":"node scripts/build-panel.mjs","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","check:panel":"node scripts/check-panel-bundle.mjs","verify:fast":"npm run verify:commit && npm run type-check","build:bundle":"node esbuild.config.js","ci:workflows":"node scripts/check-workflows.mjs","format:check":"biome format .","test:browser":"npm run build && npm run test:browser:built","audit:runtime":"npm audit --omit=dev --audit-level=high","mutation-test":"stryker run","package:check":"publint --pack npm --strict && node scripts/check-package.mjs","release:check":"node scripts/check-release.mjs","test:coverage":"vitest run --coverage","verify:commit":"npm run ci:biome && npm run lint:docs && npm run spellcheck && npm run ci:workflows && npm run boundaries && npm run deadcode","prepublishOnly":"npm run release:check && npm run verify:release","security-audit":"npm audit --audit-level=moderate","verify:browser":"npm run verify && npm run test:browser:built","verify:release":"npm run verify && npm run test:browser:cross:built && npm run audit:full","test:integration":"node scripts/check-signalk-integration.mjs","type-check:panel":"tsc -p tsconfig.panel.json --noEmit","screenshots:panel":"npm run build && node scripts/capture-panel-screenshots.mjs","test:browser:built":"playwright test --project=chromium","test:browser:cross":"npm run build && npm run test:browser:cross:built","type-check:browser":"tsc -p tsconfig.browser.json --noEmit","test:browser:cross:built":"node scripts/run-browser-matrix.mjs"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-nmea2000-emitter-cannon","signalk-binnacle","signalk-openrouter-companion"],"displayName":"Virtual Weather Sensors","screenshots":["assets/screenshots/config-panel-status.png","assets/screenshots/config-panel-notifications.png","assets/screenshots/config-panel-night.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"_resolved":"/home/runner/work/signalk-virtual-weather-sensors/signalk-virtual-weather-sensors/artifacts/signalk-virtual-weather-sensors-1.13.3.tgz","overrides":{"qs":"^6.15.2","markdownlint-cli2":{"js-yaml":"5.2.2"}},"_integrity":"sha512-JXhyppKcHLFlBA8INTKVOxsYc4H4uSm5SlkcHnxh8mJy36svJhOfqJk2BwLZkkIAilnLtg7TB0ZsewsYKBmHzw==","devEngines":{"runtime":{"name":"node","onFail":"warn","version":"^22.22.2 || ^24.15.0 || >=26.0.0"},"packageManager":{"name":"npm","onFail":"error","version":">=10.9.3"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"size-limit":[{"name":"Plugin server bundle","path":"dist/index.js","limit":"180 kB"}],"_npmVersion":"11.18.0","description":"Signal K plugin: keyless Open-Meteo, Met.no, or AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.28.1":true},"_hasShrinkwrap":false,"packageManager":"npm@11.18.0","devDependencies":{"ajv":"^8.20.0","tsx":"^4.23.5","knip":"6.31.0","vite":"^8.2.0","react":"19.2.8","cspell":"10.0.1","vitest":"4.1.10","esbuild":"^0.28.1","publint":"0.3.23","webpack":"^5.109.2","react-dom":"19.2.8","@vitest/ui":"^4.1.10","size-limit":"13.0.3","typescript":"7.0.2","@types/node":"26.1.2","ajv-formats":"^3.0.1","webpack-cli":"^7.2.2","@types/react":"^19.2.18","ajv-draft-04":"^1.0.0","@biomejs/biome":"2.5.6","@types/express":"^5.0.6","esbuild-loader":"^4.5.0","@playwright/test":"^1.62.1","@size-limit/file":"13.0.3","@types/react-dom":"^19.2.4","markdownlint-cli2":"0.23.2","@signalk/server-api":"2.30.0","@vitest/coverage-v8":"^4.1.10","@axe-core/playwright":"^4.12.1","@vitejs/plugin-react":"^6.0.5","@stryker-mutator/core":"^9.6.1","signalk-nearlcrews-ui":"0.6.2","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0 <3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.13.3_1785849971042_0.7436163547385448","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.13.4":{"name":"signalk-virtual-weather-sensors","version":"1.13.4","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","open-meteo","met-no","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.13.4","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"8327aa02a0799f5f7b6634203e98b29a052c58f6","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.13.4.tgz","fileCount":137,"integrity":"sha512-ejTUmZ9dR6n7L8cgUlPBc4OY7BNsBP6+TzahTt+b1AdPMss7HkG6PQhqvwIvt8kTGlsqrXrstOwRc00/l7rkSw==","signatures":[{"sig":"MEYCIQC17NHncxIfiu978ofgVXFCB2GoIwjU6O5ntdD1bAlndwIhAOQ7fXtjOrMzWbu9qe6rpAbIoMzjrvttoq3JZ3sijC9c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.13.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1617244},"main":"dist/index.js","type":"module","_from":"file:artifacts/signalk-virtual-weather-sensors-1.13.4.tgz","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"e94438ec462807270af0de27b584f27d5b663e44","scripts":{"dev":"tsx watch src/index.ts","lint":"npm run lint:code && npm run lint:docs && npm run spellcheck","size":"size-limit","test":"vitest run","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel && npm run check:panel","clean":"node scripts/clean.mjs","hooks":"git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-push","format":"biome format --write .","verify":"npm run verify:fast && npm run test:coverage && npm run build && npm run size && npm run package:check && npm run audit:runtime","test:ui":"vitest --ui","ci:biome":"biome ci .","deadcode":"knip","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run verify","lint:code":"biome lint .","lint:docs":"markdownlint-cli2 \"*.md\" \".github/*.md\" \"docs/*.md\" \"docs/decisions/*.md\" \"docs/maintainers/*.md\"","audit:full":"npm audit --audit-level=moderate","boundaries":"node scripts/check-boundaries.mjs","spellcheck":"cspell --no-progress --show-suggestions README.md CHANGELOG.md CLAUDE.md \".github/**/*.{md,yml,yaml}\" \"docs/*.md\" \"docs/decisions/*.md\" \"docs/maintainers/*.md\"","test:watch":"vitest","type-check":"tsc --noEmit && npm run type-check:panel && npm run type-check:browser","build:panel":"node scripts/build-panel.mjs","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","check:panel":"node scripts/check-panel-bundle.mjs","verify:fast":"npm run verify:commit && npm run type-check","build:bundle":"node esbuild.config.js","ci:workflows":"node scripts/check-workflows.mjs","format:check":"biome format .","test:browser":"npm run build && npm run test:browser:built","audit:runtime":"npm audit --omit=dev --audit-level=high","mutation-test":"stryker run","package:check":"publint --pack npm --strict && node scripts/check-package.mjs","release:check":"node scripts/check-release.mjs","test:coverage":"vitest run --coverage","verify:commit":"npm run ci:biome && npm run lint:docs && npm run spellcheck && npm run ci:workflows && npm run boundaries && npm run deadcode","prepublishOnly":"npm run release:check && npm run verify:release","security-audit":"npm audit --audit-level=moderate","verify:browser":"npm run verify && npm run test:browser:built","verify:release":"npm run verify && npm run test:browser:cross:built && npm run audit:full","test:integration":"node scripts/check-signalk-integration.mjs","type-check:panel":"tsc -p tsconfig.panel.json --noEmit","screenshots:panel":"npm run build && node scripts/capture-panel-screenshots.mjs","test:browser:built":"playwright test --project=chromium","test:browser:cross":"npm run build && npm run test:browser:cross:built","type-check:browser":"tsc -p tsconfig.browser.json --noEmit","test:browser:cross:built":"node scripts/run-browser-matrix.mjs"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-nmea2000-emitter-cannon","signalk-binnacle","signalk-openrouter-companion"],"displayName":"Virtual Weather Sensors","screenshots":["assets/screenshots/00-admin-hero.png","assets/screenshots/config-panel-status.png","assets/screenshots/config-panel-notifications.png","assets/screenshots/config-panel-night.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"_resolved":"/home/runner/work/signalk-virtual-weather-sensors/signalk-virtual-weather-sensors/artifacts/signalk-virtual-weather-sensors-1.13.4.tgz","overrides":{"qs":"^6.15.2","markdownlint-cli2":{"js-yaml":"5.2.2"}},"_integrity":"sha512-ejTUmZ9dR6n7L8cgUlPBc4OY7BNsBP6+TzahTt+b1AdPMss7HkG6PQhqvwIvt8kTGlsqrXrstOwRc00/l7rkSw==","devEngines":{"runtime":{"name":"node","onFail":"warn","version":"^22.22.2 || ^24.15.0 || ^26.0.0"},"packageManager":{"name":"npm","onFail":"warn","version":">=12.0.2 <13.0.0"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"size-limit":[{"name":"Plugin server bundle","path":"dist/index.js","limit":"180 kB"}],"_npmVersion":"12.0.2","description":"Signal K plugin: keyless Open-Meteo, Met.no, or AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","allowScripts":{"esbuild@0.28.2":true},"_hasShrinkwrap":false,"packageManager":"npm@12.0.2","devDependencies":{"ajv":"^8.20.0","tsx":"^4.23.12","knip":"6.32.2","vite":"^8.2.1","react":"19.2.8","cspell":"10.0.1","vitest":"4.1.10","esbuild":"^0.28.2","publint":"0.3.23","webpack":"^5.109.2","react-dom":"19.2.8","@vitest/ui":"^4.1.10","size-limit":"13.0.3","typescript":"7.0.2","@types/node":"26.2.0","ajv-formats":"^3.0.1","webpack-cli":"^7.2.2","@types/react":"^19.2.18","ajv-draft-04":"^1.0.0","@biomejs/biome":"2.5.8","@types/express":"^5.0.6","esbuild-loader":"^4.5.0","@playwright/test":"^1.62.1","@size-limit/file":"13.0.3","@types/react-dom":"^19.2.4","markdownlint-cli2":"0.23.2","@signalk/server-api":"2.31.0","@vitest/coverage-v8":"^4.1.10","@axe-core/playwright":"^4.13.0","@vitejs/plugin-react":"^6.0.5","@stryker-mutator/core":"^9.6.1","signalk-nearlcrews-ui":"0.7.1","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^9.6.1"},"peerDependencies":{"@signalk/server-api":">=2.24.0 <3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.13.4_1786564041744_0.21189972323265582","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.13.5":{"name":"signalk-virtual-weather-sensors","version":"1.13.5","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","open-meteo","met-no","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"author":{"name":"Nearl Crews"},"license":"Apache-2.0","_id":"signalk-virtual-weather-sensors@1.13.5","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"dist":{"shasum":"c6c7c7e2b8f3ff648f89290317596b0c09809e5f","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.13.5.tgz","fileCount":138,"integrity":"sha512-ebrbmZtVO47UmnydgXTh8PZRBbURC281qXwG4dgSrvxt3bE7oan4YFnLDCo+0KKoP01DhkBYGLwFHk6lYJrQKQ==","signatures":[{"sig":"MEUCIQDhhw79DDhlmlxuGonuE6uL4cKe9y+DW/jcQ7FPnhoMsAIgaZq3kWE7vw/uE99c/q4SJEOlZCT0NuP+ArLhc1JLI6g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.13.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1663628},"main":"dist/index.js","type":"module","_from":"file:artifacts/signalk-virtual-weather-sensors-1.13.5.tgz","types":"dist/index.d.ts","engines":{"node":">=20.18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"5cc458f63658bf290c9b7c041ee782b2cdf32a14","scripts":{"dev":"tsx watch src/index.ts","lint":"npm run lint:code && npm run lint:docs && npm run spellcheck","size":"size-limit","test":"vitest run","build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel && npm run check:panel","clean":"node scripts/clean.mjs","hooks":"git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-push","format":"biome format --write .","verify":"npm run verify:fast && npm run test:coverage && npm run build && npm run size && npm run package:check && npm run audit:runtime","test:ui":"vitest --ui","ci:biome":"biome ci .","deadcode":"knip","licenses":"node scripts/generate-third-party-notices.mjs","lint:fix":"biome check --write .","test:run":"vitest run","validate":"npm run verify","lint:code":"biome lint .","lint:docs":"markdownlint-cli2 \"*.md\" \".github/*.md\" \"docs/*.md\" \"docs/decisions/*.md\" \"docs/maintainers/*.md\"","audit:full":"npm audit --audit-level=moderate","boundaries":"node scripts/check-boundaries.mjs","spellcheck":"cspell --no-progress --show-suggestions README.md CHANGELOG.md CLAUDE.md \".github/**/*.{md,yml,yaml}\" \"docs/*.md\" \"docs/decisions/*.md\" \"docs/maintainers/*.md\"","test:watch":"vitest","type-check":"tsc --noEmit && npm run type-check:panel && npm run type-check:browser","build:panel":"node scripts/build-panel.mjs","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","check:panel":"node scripts/check-panel-bundle.mjs","verify:fast":"npm run verify:commit && npm run type-check","build:bundle":"node esbuild.config.js","ci:workflows":"node scripts/check-workflows.mjs","format:check":"biome format .","test:browser":"npm run build && npm run test:browser:built","audit:runtime":"npm audit --omit=dev --audit-level=high","mutation-test":"stryker run","package:check":"publint --pack npm --strict && node scripts/check-package.mjs && node scripts/generate-third-party-notices.mjs --check","release:check":"node scripts/check-release.mjs","test:coverage":"vitest run --coverage","verify:commit":"npm run ci:biome && npm run lint:docs && npm run spellcheck && npm run ci:workflows && npm run boundaries && npm run deadcode","prepublishOnly":"npm run release:check && npm run verify:release","security-audit":"npm audit --audit-level=moderate","verify:browser":"npm run verify && npm run test:browser:built","verify:release":"npm run verify && npm run test:browser:cross:built && npm run audit:full","test:integration":"node scripts/check-signalk-integration.mjs","type-check:panel":"tsc -p tsconfig.panel.json --noEmit","screenshots:panel":"npm run build && node scripts/capture-panel-screenshots.mjs","test:browser:built":"playwright test --project=chromium","test:browser:cross":"npm run build && npm run test:browser:cross:built","type-check:browser":"tsc -p tsconfig.browser.json --noEmit","test:browser:cross:built":"node scripts/run-browser-matrix.mjs"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-nmea2000-emitter-cannon","signalk-binnacle","signalk-openrouter-companion"],"displayName":"Virtual Weather Sensors","screenshots":["assets/screenshots/00-admin-hero.png","assets/screenshots/config-panel-status.png","assets/screenshots/config-panel-notifications.png","assets/screenshots/config-panel-night.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"_resolved":"/home/runner/work/signalk-virtual-weather-sensors/signalk-virtual-weather-sensors/artifacts/signalk-virtual-weather-sensors-1.13.5.tgz","overrides":{"qs":"^6.15.2","markdownlint-cli2":{"js-yaml":"5.2.2"}},"_integrity":"sha512-ebrbmZtVO47UmnydgXTh8PZRBbURC281qXwG4dgSrvxt3bE7oan4YFnLDCo+0KKoP01DhkBYGLwFHk6lYJrQKQ==","devEngines":{"runtime":{"name":"node","onFail":"warn","version":"^22.22.2 || ^24.15.0 || ^26.0.0"},"packageManager":{"name":"npm","onFail":"warn","version":">=12.0.2 <13.0.0"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git","type":"git"},"size-limit":[{"name":"Plugin server bundle","path":"dist/index.js","limit":"180 kB"}],"_npmVersion":"12.0.2","description":"Signal K plugin: keyless Open-Meteo, Met.no, or AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","allowScripts":{"esbuild@0.28.2":true},"_hasShrinkwrap":false,"packageManager":"npm@12.0.2","devDependencies":{"ajv":"^8.20.0","tsx":"^4.23.12","knip":"6.32.2","vite":"^8.2.2","react":"19.2.8","cspell":"10.1.0","vitest":"4.1.11","esbuild":"^0.28.2","publint":"0.3.24","webpack":"^5.109.2","react-dom":"19.2.8","@vitest/ui":"^4.1.11","size-limit":"13.0.3","typescript":"7.0.2","@types/node":"^20.19.43","ajv-formats":"^3.0.1","webpack-cli":"^7.2.2","@types/react":"^19.2.18","ajv-draft-04":"^1.0.0","@biomejs/biome":"2.5.10","@types/express":"^5.0.6","esbuild-loader":"^4.5.0","@playwright/test":"^1.62.1","@size-limit/file":"13.0.3","@types/react-dom":"^19.2.5","markdownlint-cli2":"0.23.2","@signalk/server-api":"2.31.1","@vitest/coverage-v8":"^4.1.11","@axe-core/playwright":"^4.13.0","@vitejs/plugin-react":"^6.1.0","@stryker-mutator/core":"^10.0.0","signalk-nearlcrews-ui":"0.8.2","@signalk/signalk-schema":"^1.8.2","@stryker-mutator/vitest-runner":"^10.0.0"},"peerDependencies":{"@signalk/server-api":">=2.24.0 <3"},"_npmOperationalInternal":{"tmp":"tmp/signalk-virtual-weather-sensors_1.13.5_1787551848302_0.926884201070836","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.14.0":{"name":"signalk-virtual-weather-sensors","version":"1.14.0","description":"Signal K plugin: keyless Open-Meteo, Met.no, or AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","open-meteo","met-no","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"signalk-plugin-enabled-by-default":false,"signalk":{"displayName":"Virtual Weather Sensors","appIcon":"./assets/icons/icon-192.png","screenshots":["assets/screenshots/00-admin-hero.png","assets/screenshots/config-panel-status.png","assets/screenshots/config-panel-notifications.png","assets/screenshots/config-panel-night.png"],"recommends":["signalk-nmea2000-emitter-cannon","signalk-binnacle","signalk-openrouter-companion","signalk-synthetic-values"]},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"sideEffects":false,"author":{"name":"Nearl Crews"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git"},"bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","funding":{"type":"buymeacoffee","url":"https://www.buymeacoffee.com/nearlcrews"},"engines":{"node":">=20.18"},"devEngines":{"runtime":{"name":"node","version":"^22.22.2 || ^24.15.0 || ^26.0.0","onFail":"warn"},"packageManager":{"name":"npm","version":">=10.9.3","onFail":"warn"}},"packageManager":"npm@12.0.2","type":"module","peerDependencies":{"@signalk/server-api":">=2.24.0 <3"},"overrides":{"markdownlint-cli2":{"js-yaml":"5.2.2"},"qs":"^6.15.2","vitest":{"@types/node":"$@types/node"},"@vitest/coverage-v8":{"@types/node":"$@types/node"},"@vitest/ui":{"@types/node":"$@types/node"},"smol-toml":"1.8.0"},"devDependencies":{"@axe-core/playwright":"^4.13.0","@biomejs/biome":"2.5.13","@playwright/test":"^1.63.0","@signalk/server-api":"2.32.0","@signalk/signalk-schema":"^1.8.2","@size-limit/file":"13.1.1","@stryker-mutator/core":"^10.0.0","@stryker-mutator/vitest-runner":"^10.0.0","@types/express":"^5.0.6","@types/node":"^20.19.43","@types/react":"^19.2.18","@types/react-dom":"^19.2.7","@vitejs/plugin-react":"^6.1.1","@vitest/coverage-v8":"^5.0.0","@vitest/ui":"^5.0.0","ajv":"^8.20.0","ajv-draft-04":"^1.0.0","ajv-formats":"^3.0.1","cspell":"10.3.1","esbuild":"^0.28.2","esbuild-loader":"^4.5.0","knip":"6.35.1","markdownlint-cli2":"0.23.2","publint":"0.3.24","react":"19.3.0","react-dom":"19.3.0","signalk-nearlcrews-ui":"0.11.1","size-limit":"13.1.1","tsx":"^4.23.13","typescript":"7.0.2","vite":"^8.2.2","vitest":"5.0.0","webpack":"^5.111.0","webpack-cli":"^7.2.3"},"scripts":{"build":"npm run clean && npm run build:types && npm run build:bundle && npm run build:panel && npm run check:panel","build:types":"tsc --noEmit false --declaration --emitDeclarationOnly --outDir dist","build:bundle":"node esbuild.config.js","build:panel":"node scripts/build-panel.mjs","check:panel":"node scripts/check-panel-bundle.mjs && snui-check-consumer --root . --remote public/remoteEntry.js --baseline scripts/panel-size-baseline.json","dev":"tsx watch src/index.ts","test":"node scripts/run-unit-tests.mjs","test:watch":"vitest","test:ui":"vitest --ui","test:browser":"npm run build && npm run test:browser:built","test:browser:built":"playwright test --project=chromium","test:browser:cross":"npm run build && npm run test:browser:cross:built","test:browser:cross:built":"node scripts/run-browser-matrix.mjs","test:integration":"node scripts/check-signalk-integration.mjs","check:runtime":"node scripts/check-plugin-runtime.mjs","screenshots:panel":"npm run build && node scripts/capture-panel-screenshots.mjs","test:coverage":"node scripts/run-unit-tests.mjs --coverage","test:run":"node scripts/run-unit-tests.mjs","mutation-test":"stryker run","type-check":"tsc --noEmit && npm run type-check:panel && npm run type-check:browser","type-check:panel":"tsc -p tsconfig.panel.json --noEmit","type-check:browser":"tsc -p tsconfig.browser.json --noEmit","lint":"npm run lint:code && npm run lint:docs && npm run spellcheck","lint:code":"biome lint .","lint:docs":"markdownlint-cli2 \"*.md\" \".github/*.md\" \"docs/*.md\" \"docs/decisions/*.md\" \"docs/maintainers/*.md\"","spellcheck":"cspell --no-progress --show-suggestions README.md CHANGELOG.md CLAUDE.md \".github/**/*.{md,yml,yaml}\" \"docs/*.md\" \"docs/decisions/*.md\" \"docs/maintainers/*.md\"","ci:biome":"biome ci .","ci:workflows":"node scripts/check-workflows.mjs","boundaries":"node scripts/check-boundaries.mjs","deadcode":"knip","lint:fix":"biome check --write .","format":"biome format --write .","format:check":"biome format .","clean":"node scripts/clean.mjs","size":"size-limit","licenses":"node scripts/generate-third-party-notices.mjs","package:check":"node scripts/test-unit-test-toolchain.mjs && publint --pack npm --strict && node scripts/check-package.mjs && node scripts/generate-third-party-notices.mjs --check","validate":"npm run verify","verify:commit":"npm run ci:biome && npm run lint:docs && npm run spellcheck && npm run ci:workflows && npm run boundaries && npm run deadcode","verify:fast":"npm run verify:commit && npm run type-check","verify":"npm run verify:fast && npm run test:coverage && npm run build && npm run check:runtime && npm run size && npm run package:check && npm run audit:runtime","verify:browser":"npm run verify && npm run test:browser:built","verify:release":"npm run verify && npm run test:browser:cross:built && npm run audit:full","audit:runtime":"npm audit --omit=dev --audit-level=high","audit:full":"npm audit --audit-level=moderate","release:check":"node scripts/check-release.mjs","prepublishOnly":"npm run release:check && npm run verify:release","hooks":"git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-push"},"size-limit":[{"name":"Plugin server bundle","path":"dist/index.js","limit":"45 kB"}],"allowScripts":{"esbuild@0.28.2":true},"gitHead":"aac53687f2c35f4b994a84a5c6ac91a893c9f44d","_id":"signalk-virtual-weather-sensors@1.14.0","_integrity":"sha512-P0czohh/U+DTwbuxes1EMYxyjFFY0AKu5osQbxLs8WYak//2l9x8l3cFByB+EjmqstazHS627a6Lrvp9K1A77A==","_resolved":"/home/runner/work/signalk-virtual-weather-sensors/signalk-virtual-weather-sensors/artifacts/signalk-virtual-weather-sensors-1.14.0.tgz","_from":"file:artifacts/signalk-virtual-weather-sensors-1.14.0.tgz","_nodeVersion":"24.19.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-P0czohh/U+DTwbuxes1EMYxyjFFY0AKu5osQbxLs8WYak//2l9x8l3cFByB+EjmqstazHS627a6Lrvp9K1A77A==","shasum":"df7660ab1b4786935bc107d5d06032cd2a89ae9a","tarball":"https://registry.npmjs.org/signalk-virtual-weather-sensors/-/signalk-virtual-weather-sensors-1.14.0.tgz","fileCount":138,"unpackedSize":1811242,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-virtual-weather-sensors@1.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDhZ5SJ01hq51iFSHnZWwdtmjI7PSmGKpcicV5/N+UBggIhAPJTOSilBWr6bxRFkVIdT+1Jw1LFmKa3MM6L4SGOlTXo"}]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"directories":{},"maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/signalk-virtual-weather-sensors_1.14.0_1789451645097_0.7309513596803752"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-13T04:34:57.005Z","modified":"2026-09-15T05:54:05.536Z","1.0.0":"2025-10-13T04:34:57.270Z","1.0.1":"2025-10-13T17:05:51.991Z","1.1.0":"2026-04-04T02:55:20.903Z","1.1.1":"2026-04-04T02:59:55.361Z","1.2.0":"2026-04-08T19:12:42.662Z","1.2.1":"2026-04-18T18:32:13.638Z","1.2.2":"2026-04-19T19:48:27.763Z","1.2.3":"2026-05-03T18:03:46.251Z","1.3.0":"2026-05-06T02:43:08.142Z","1.3.2":"2026-05-09T04:51:16.530Z","1.4.0":"2026-05-11T02:50:38.146Z","1.4.1":"2026-05-11T11:52:26.074Z","1.4.2":"2026-05-12T15:25:13.655Z","1.4.3":"2026-05-12T16:46:23.235Z","1.4.4":"2026-05-12T16:59:44.677Z","1.5.0":"2026-05-12T17:32:58.823Z","1.5.1":"2026-05-12T20:52:14.960Z","1.5.2":"2026-05-13T00:32:27.034Z","1.5.3":"2026-05-16T05:34:25.841Z","1.6.0":"2026-05-16T16:45:22.804Z","1.6.1":"2026-05-19T18:20:16.985Z","1.6.2":"2026-05-21T12:40:01.620Z","1.6.3":"2026-05-22T20:11:30.369Z","1.6.4":"2026-05-25T04:09:16.790Z","1.7.0":"2026-05-28T21:29:59.552Z","1.7.1":"2026-05-29T02:41:07.707Z","1.7.2":"2026-05-31T04:09:30.922Z","1.8.0":"2026-06-11T15:13:10.391Z","1.9.0":"2026-06-17T15:10:17.219Z","1.9.1":"2026-06-22T03:35:05.572Z","1.10.0":"2026-06-23T13:42:47.456Z","1.11.0":"2026-07-04T19:38:30.949Z","1.12.0":"2026-07-13T19:28:01.282Z","1.13.0":"2026-07-17T20:32:45.857Z","1.13.1":"2026-07-28T01:17:40.968Z","1.13.2":"2026-08-03T01:52:39.377Z","1.13.3":"2026-08-04T13:26:11.198Z","1.13.4":"2026-08-12T19:47:21.949Z","1.13.5":"2026-08-24T06:10:48.462Z","1.14.0":"2026-09-15T05:54:05.267Z"},"bugs":{"url":"https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues"},"author":{"name":"Nearl Crews"},"license":"Apache-2.0","homepage":"https://github.com/NearlCrews/signalk-virtual-weather-sensors#readme","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-weather","signalk-category-nmea-2000","nmea2000","weather","open-meteo","met-no","accuweather","typescript","marine","sailing","boat","navigation","sensor","weather-station","wind-calculator","apparent-wind","true-wind","maritime","notifications","barometer"],"repository":{"type":"git","url":"git+https://github.com/NearlCrews/signalk-virtual-weather-sensors.git"},"description":"Signal K plugin: keyless Open-Meteo, Met.no, or AccuWeather marine weather as 30+ environment deltas, severe-weather notifications, NMEA2000-ready","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"readme":"# Virtual Weather Sensors\n\n[![npm version](https://img.shields.io/npm/v/signalk-virtual-weather-sensors.svg)](https://www.npmjs.com/package/signalk-virtual-weather-sensors)\n[![npm downloads](https://img.shields.io/npm/dm/signalk-virtual-weather-sensors.svg)](https://www.npmjs.com/package/signalk-virtual-weather-sensors)\n[![CI](https://github.com/NearlCrews/signalk-virtual-weather-sensors/actions/workflows/ci.yml/badge.svg)](https://github.com/NearlCrews/signalk-virtual-weather-sensors/actions/workflows/ci.yml)\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](https://github.com/NearlCrews/signalk-virtual-weather-sensors/blob/main/LICENSE)\n[![node](https://img.shields.io/badge/node-%3E%3D20.18-brightgreen.svg)](https://nodejs.org)\n[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-FFDD00?logo=buymeacoffee&logoColor=black)](https://www.buymeacoffee.com/nearlcrews)\n\nA virtual weather station for [Signal K](https://signalk.org): it fetches\nweather conditions for the vessel's current position and publishes them\nas 30+ Signal K environment deltas, with severe-weather notifications, a\nSignal K v2 Weather API forecast provider, and NMEA2000-ready path alignment.\nIt works out of the box with the free, keyless [Open-Meteo](https://open-meteo.com)\nservice; AccuWeather is an optional source for users who have an API key.\n\n> The weather data and the notifications are advisory. They are not certified\n> for safety-of-life decisions: always cross-check official forecasts and\n> warnings against your primary instruments.\n\n## What's new in 1.14.0\n\nVersion 1.14.0 keeps your AccuWeather API key out of request URLs, makes the\ndocumented AccuWeather call budget true, corrects several readings and the\nstatus the plugin reports about itself, makes merged mode conservative about\nthe values a warning reads, and rebuilds the configuration panel on the shared\nmarine UI 0.11.1. Emitted paths and saved configuration fields are unchanged.\n\n- **Your API key stays out of request URLs.** AccuWeather requests now\n  authenticate with the `Authorization: Bearer` header AccuWeather documents,\n  instead of an `apikey` query parameter, so the key cannot leak through a log\n  line or an error body that echoes the URL.\n- **The documented call budget is now true.** The location-key cache is held\n  for 24 hours per 1 km cell, and the fetch timer's jitter only lengthens the\n  interval, so the default 30-minute cadence costs at most 48 conditions calls\n  plus 1 location lookup per day at a fixed position. The old hourly cache,\n  keyed to about 11 m, pushed a docked vessel past the default 50-call quota\n  while every document still claimed 48.\n- **Warnings work outside the US and Norway.** A position beyond NWS and MET\n  Norway coverage returns an empty warning list, which is what the paths guide\n  always described, instead of an error the server reported to consumers as an\n  HTTP 400.\n- **Warnings say what the instruments say.** Heat-stress bands open at the\n  temperature they name rather than a tenth of a degree late, emitted\n  temperatures are no longer clamped to a sensor envelope that published a\n  -44.6 C wind chill as -40.0 C, visibility in a message is rounded down so it\n  can never read above the threshold that fired it, and an active notification\n  is marked with the observation age instead of sitting unlabeled through a\n  provider outage.\n- **Merged mode no longer averages away a warning.** Every value a\n  notification band reads is taken conservatively from the contributing\n  sources, so one provider reporting gale force is not cancelled by a milder\n  sibling, and the banner names any source that has stopped contributing.\n- **The banner tells you which thing is wrong.** A rejected key, a quota pause,\n  a missing position, stale data, and a failed fetch each hold the banner until\n  they clear, instead of being overwritten seconds later by a green status line.\n  A slow position source no longer strands the plugin: position now gets a\n  30-minute age budget of its own.\n- **Better readings from the keyless sources.** Open-Meteo's past-hour\n  precipitation is the real past hour rather than a 15-minute sum, Met.no\n  reports only whole forecast days instead of labeling a single evening window\n  as today, and Met.no revalidates its forecast document instead of refetching\n  it.\n- **A panel you can read and hear.** Save status is shaped and labeled rather\n  than carried by color alone, every field error leads with a glyph and a\n  spoken tone word, the API key test result and the merge-order and freshness\n  announcements each speak once instead of twice, and the concealed key field\n  asks the browser not to offer or save the key. A locked merge-provider row\n  stays focusable, so unchecking the second-to-last source no longer drops\n  keyboard focus onto the page.\n- **Shared marine UI 0.11.1.** The panel moves onto the library's panel shell,\n  save bar, number field, and status section. Save is blocked, naming the\n  section, while a cadence value is invalid, Save and Discard keep their place\n  in the tab order while it is, a refused save is reported in its own banner,\n  and a panel error now offers Try again instead of a blank card.\n\nSee the [v1.14.0 changelog entry](https://github.com/NearlCrews/signalk-virtual-weather-sensors/blob/main/CHANGELOG.md#v1140), or the\n[full changelog](https://github.com/NearlCrews/signalk-virtual-weather-sensors/blob/main/CHANGELOG.md).\n\n## What it does\n\nSignal K is an open marine data standard that streams a boat's navigation,\nenvironment, and AIS data over a single API. Virtual Weather Sensors is a\nSignal K server plugin that fills the environment branch on boats without a\nmasthead weather station: it polls a weather API (keyless Open-Meteo by\ndefault, keyless Met.no, or AccuWeather with a key, or all of them blended in\nmerge mode) for conditions at the vessel's GPS position and emits them as\nstandard Signal K deltas that instrument panels, dashboards, and NMEA2000\nbridges consume natively.\n\nEvery delta carries a provider `$source` (`open-meteo`, `met-no`, `accuweather`,\nor `vws-merged`), so a boat that later gains a real anemometer or barometer can\nprefer the physical sensor through Signal K source priorities. Any\nforecast-capable source registers the plugin as a Signal K v2 Weather API\nprovider, serving hourly and daily forecasts over REST, and every source can\nraise opt-in severe-weather notifications for wind, visibility, heat, cold, and\nsevere conditions.\n\n## Features\n\n- **30+ weather data points.** Temperatures, wind, pressure, humidity, UV,\n  visibility, cloud cover, pressure tendency, precipitation type, visibility\n  obstruction, and a plain-language condition summary.\n- **Spec-compliant Signal K paths.** Canonical Signal K 1.8.2 leaves under\n  `environment.outside.*` and `environment.wind.*`, with AccuWeather\n  extensions and derived values on a producer-namespaced\n  `environment.weather.*` branch.\n- **Signal K v2 Weather API provider.** Any forecast-capable source (Open-Meteo,\n  Met.no, or AccuWeather) serves forecasts, current observations, and\n  region-aware severe-weather warnings over REST, so dashboards such as\n  [Binnacle](https://github.com/NearlCrews/signalk-binnacle) can show forecast\n  data.\n- **Apparent wind calculated** from the true wind and the vessel's own\n  motion, published on the producer-namespaced branch so it never displaces\n  a real anemometer.\n- **Severe-weather notifications** (opt-in, off by default) for wind,\n  visibility, heat, cold, and severe conditions, with actionable context in\n  every message.\n- **Shared Signal K configuration panel** built with\n  `signalk-nearlcrews-ui`, with a live status dashboard, an inline API key\n  test, a concealed field with explicit Show and Hide controls, accessible\n  validation and reordering, unsaved-change tracking, Auto and System\n  preferences, and light, dark, and night-red themes. Older admin UIs retain\n  the JSON-schema form fallback.\n- **NMEA2000 path alignment** for bridging onto a physical bus via a\n  companion emitter plugin.\n- **Per-provider `$source` on every delta** (`open-meteo`, `met-no`,\n  `accuweather`, `vws-merged`, or `open-meteo-marine`), so real onboard sensors can\n  win on source priority.\n\n## Screenshots\n\nThe configuration panel in the Signal K admin UI, with a live status card\nshowing update count, rolling 24-hour API usage, active alerts, and minutes\nsince the last fetch.\n\n![Virtual Weather Sensors inside the current Signal K Admin plugin configuration screen](assets/screenshots/00-admin-hero.png)\n\n| Status dashboard | Notification toggles | Night-red theme |\n| --- | --- | --- |\n| ![The config panel status card and fetch cadence settings](assets/screenshots/config-panel-status.png) | ![The severe-weather notification toggles, opt-in and off by default](assets/screenshots/config-panel-notifications.png) | ![The night-red helm theme, designed to preserve night vision](assets/screenshots/config-panel-night.png) |\n\n## Requirements\n\n- [Signal K server](https://github.com/SignalK/signalk-server) 2.x. The\n  Weather API forecast provider needs a server shipping\n  `@signalk/server-api` 2.24 or newer; on older 2.x servers the plugin\n  still runs and skips the provider registration.\n- Node.js 20.18 or newer.\n- No API key for the default Open-Meteo source. An AccuWeather API key from\n  [developer.accuweather.com](https://developer.accuweather.com/) is optional,\n  needed if you select AccuWeather as the single source or want it to\n  participate in a merged source.\n- A GPS position published on `navigation.position` (the plugin queries the\n  active weather provider for the vessel's current location).\n- The configuration panel needs Signal K admin UI 2.27.0 or newer. On older\n  servers the plugin still works and falls back to the standard settings\n  form. The custom panel also requires native CSS `@scope`, available in\n  Chromium and Edge 118+, Firefox 146+, and Safari 17.4+.\n\n## Installation\n\nInstall from the Signal K admin UI under **Apps and Plugins, then Store**, or\nfrom npm:\n\n```bash\ncd ~/.signalk\nnpm install signalk-virtual-weather-sensors\n```\n\nFrom source:\n\n```bash\ngit clone https://github.com/NearlCrews/signalk-virtual-weather-sensors.git\ncd signalk-virtual-weather-sensors\nnpm ci\nnpm run build\nln -s \"$(pwd)\" ~/.signalk/node_modules/signalk-virtual-weather-sensors\n```\n\n## Configuration\n\nIn the Signal K admin UI, open **Server, then Plugin Config**, find\n\"Virtual Weather Sensors\", and enable the plugin.\n\nThe custom panel bundles `signalk-nearlcrews-ui` but consumes the Admin host's\nmatching React and React DOM 19 singletons. Auto follows a published host theme\nand otherwise stays Light to match current Signal K Admin. System explicitly\nfollows the operating-system preference; Light, Dark, and Night remain direct\nchoices. Night changes the plugin panel, not the surrounding Admin chrome.\n\nThe Save button requests persistence through Signal K Admin's fire-and-forget\ncallback, then polls and reports the current plugin status. A running response\ndoes not prove that the void callback completed persistence, so the panel does\nnot claim that it does. The panel preserves unknown top-level and notification\nfields when it writes known settings, keeping configurations forward compatible.\n\nLabels below are the ones the custom panel shows. The rjsf fallback form, used\non older Signal K Admin builds, titles the same four controls \"Weather source\",\n\"AccuWeather API Key\", \"Weather Update Frequency\", and \"Daily API Call Quota\".\n\n| Setting | Description | Default | Range |\n|---------|-------------|---------|-------|\n| Provider | Open-Meteo (free, keyless, global), Met.no (free, keyless, global), or AccuWeather (needs a key, adds RealFeel, plain-language text, pressure tendency, and precipitation type). In merge mode this source is the primary that sets source priority and backs forecasts. | Open-Meteo | Open-Meteo, Met.no, or AccuWeather |\n| Provider mode | Single source, or merge available providers into a synthetic `vws-merged` source that blends current conditions. | Single source | Single or Merge |\n| API key | Required when single mode selects AccuWeather. In merge mode, setting a key enables AccuWeather in the blend. The panel conceals it by default and provides explicit Show and Hide controls. | none | n/a |\n| Open-Meteo base URL | Optional. Leave blank for the free public service (non-commercial use). Self-hosted or paid users can enter a custom endpoint. | none | n/a |\n| Emit sea state | Adds a keyless Open-Meteo Marine layer (waves, swell, sea temperature, and current) on `environment.water.*` and `environment.current`. Coastal and offshore only. | off | boolean |\n| Weather update frequency | Minutes between weather fetches. When AccuWeather participates, each fetch costs one call plus one location lookup per day while stationary or per new 1 km cell underway, so the default 30 costs at most 49 calls/day at a fixed position, within the default 50/day quota, and up to 96 underway, which exceeds it. | 30 | 1 to 60 |\n| Broadcast Interval | Seconds between cached delta re-emissions for NMEA2000 listeners. The provider observation timestamp is retained. | 5 | 1 to 60 |\n| Daily API call quota | Cap on AccuWeather calls per rolling 24-hour window whenever it participates, including merge mode. 0 disables the cap. Open-Meteo and Met.no are keyless and uncapped. | 50 | 0 to 1000 |\n| Severe-weather notifications | Master toggle plus per-category sub-toggles (wind, visibility, heat, cold, severe conditions). | master off, sub-toggles on | boolean |\n\n## What it emits\n\nThe plugin emits 30+ data points under canonical `environment.outside.*` and\n`environment.wind.*` paths from the Signal K 1.8.2 vocabulary, plus a\nproducer-namespaced `environment.weather.*` branch for provider extensions and\nplugin-derived values (Beaufort scale, heat stress, gust factor, and more).\nSome extension leaves are AccuWeather-only (RealFeel, pressure tendency,\nprecipitation type, visibility obstruction, cloud ceiling, and the 24-hour\ntemperature departure); the keyless sources supply the rest, including the\nplain-language condition summary.\nWith the sea-state option enabled, a keyless Open-Meteo Marine layer adds\nwaves, swell, and sea temperature on `environment.water.*` and surface current\non `environment.current`. A one-shot meta delta on start describes units and\nlabels for the non-canonical paths.\n\nSee the [Signal K paths guide](https://github.com/NearlCrews/signalk-virtual-weather-sensors/blob/main/docs/signal-k-paths.md) for the full path, PGN,\nand notification reference.\n\n## NMEA2000 integration\n\nThis plugin outputs Signal K deltas only. To bridge them onto a physical\nNMEA2000 bus, pair it with an emitter plugin such as\n[`signalk-nmea2000-emitter-cannon`](https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon),\nwhich covers PGNs 130306 (wind), 130312 and 130316 (temperatures), 130313\n(humidity), and 130314 (pressure). See\n[Signal K paths guide](https://github.com/NearlCrews/signalk-virtual-weather-sensors/blob/main/docs/signal-k-paths.md#nmea2000-pgn-coverage) for\nthe per-PGN path mapping.\n\n## Weather API provider\n\nAny forecast-capable source (Open-Meteo, Met.no, or AccuWeather) registers the\nplugin as a Signal K v2 Weather API provider, so consumers can pull forecasts\nover REST instead of subscribing to the delta stream. In merged mode the\ndesignated forecast child backs the endpoints:\n\n- `GET /signalk/v2/api/weather/forecasts/point` returns hourly point\n  forecasts.\n- `GET /signalk/v2/api/weather/forecasts/daily` returns daily forecasts.\n- `GET /signalk/v2/api/weather/observations` returns current conditions for\n  the requested position (with pressure and pressure tendency the forecasts\n  omit).\n- `GET /signalk/v2/api/weather/warnings` returns region-aware severe-weather\n  alerts: NWS active alerts for US waters, Met.no MetAlerts for Norwegian\n  waters (both keyless), and reports unsupported positions outside those\n  regions.\n\nRegistering the provider is what makes the server list `weather` under\n`/signalk/v2/features`, which is how dashboards such as\n[Binnacle](https://github.com/NearlCrews/signalk-binnacle) detect that\nforecast support is available. Forecasts and observations are mapped to SI\nunits and cached on demand. Under AccuWeather they share the plugin's rolling\n24-hour API quota so a polling client cannot exhaust a key. Open-Meteo v2\nresponses are cached by rounded position, Met.no shares its cached model\ndocument, and the adapter caps concurrent requests. Warnings are keyless and\nserved independently of that quota. See the\n[Signal K paths guide](https://github.com/NearlCrews/signalk-virtual-weather-sensors/blob/main/docs/signal-k-paths.md#weather-api-provider) for\nthe populated field reference.\n\n## Notifications\n\nSevere-weather notifications under `notifications.environment.*` are opt-in\nand off by default. When enabled, the plugin emits one Signal K notification\nper hazard band transition (entry and exit) across wind, visibility, heat,\ncold, and severe-condition categories. Each message packs actionable context\n(for example `Gale-force wind: Bf9 from SW, 19 m/s, gusts 27 m/s, 998 hPa`).\nBridging to NMEA 2000 Alert PGNs requires the separate `signalk-to-nmea2000`\nplugin. See the [Signal K paths guide](https://github.com/NearlCrews/signalk-virtual-weather-sensors/blob/main/docs/signal-k-paths.md#notifications)\nfor the full band, trigger, and message reference.\n\n## Troubleshooting\n\nCommon issues, shown as a status banner in the admin UI:\n\n- **Invalid API key (HTTP 401)**: re-copy the key from AccuWeather with no\n  surrounding whitespace.\n- **Rate limit or quota reached** (AccuWeather only): raise the update\n  frequency interval or the daily quota; the plugin defaults to 50 calls/day.\n- **Waiting for GPS position**: confirm a GPS source publishes\n  `navigation.position` in the Data Browser, and that its timestamp is less\n  than 30 minutes old.\n\nSee the [troubleshooting guide](https://github.com/NearlCrews/signalk-virtual-weather-sensors/blob/main/docs/troubleshooting.md) for the full guide.\n\n## Documentation\n\n- [Signal K paths, PGNs, and notifications](https://github.com/NearlCrews/signalk-virtual-weather-sensors/blob/main/docs/signal-k-paths.md)\n- [Troubleshooting](https://github.com/NearlCrews/signalk-virtual-weather-sensors/blob/main/docs/troubleshooting.md)\n- [Development guide](https://github.com/NearlCrews/signalk-virtual-weather-sensors/blob/main/docs/DEVELOPMENT.md)\n- [Changelog](https://github.com/NearlCrews/signalk-virtual-weather-sensors/blob/main/CHANGELOG.md)\n- [Contributing](https://github.com/NearlCrews/signalk-virtual-weather-sensors/blob/main/.github/CONTRIBUTING.md)\n- [Security policy](https://github.com/NearlCrews/signalk-virtual-weather-sensors/blob/main/.github/SECURITY.md)\n\n## Development\n\nThis project runs on Node 20.18 or newer and supports `@signalk/server-api`\n2.24 through 2.x. Development uses Node 24.19.0, npm 12.0.2, Signal K server API\n2.31, and TypeScript 7.\n\n```bash\ngit clone https://github.com/NearlCrews/signalk-virtual-weather-sensors.git\ncd signalk-virtual-weather-sensors\nnpm ci               # install the locked dependencies\nnpm run build        # compile the plugin and bundle the config panel\nnpm test             # Vitest suite, single run\nnpm run test:browser # build and test the federated panel in Chromium\nnpm run type-check   # type-check the plugin and the panel\nnpm run lint         # code, documentation, and spelling checks\nnpm run lint:fix     # lint and auto-fix\nnpm run verify       # full non-browser validation\nnpm run verify:release # full cross-browser release validation\n```\n\nRun `npm run validate` before committing. See the\n[development guide](https://github.com/NearlCrews/signalk-virtual-weather-sensors/blob/main/docs/DEVELOPMENT.md) for the full workflow, and\n[CONTRIBUTING.md](https://github.com/NearlCrews/signalk-virtual-weather-sensors/blob/main/.github/CONTRIBUTING.md) for the pull request process. By\ntaking part you agree to the\n[Code of Conduct](https://github.com/NearlCrews/signalk-virtual-weather-sensors/blob/main/.github/CODE_OF_CONDUCT.md).\n\n## License\n\nApache-2.0: see the [license](https://github.com/NearlCrews/signalk-virtual-weather-sensors/blob/main/LICENSE) for the full text. The software is\nprovided \"AS IS\", without warranty of any kind. Treat the weather data and\nthe notifications as advisory, and always carry independent means of\nforecasting and navigation.\n\n## Acknowledgments\n\nVirtual Weather Sensors is written and maintained by\n[Nearl Crews](https://github.com/NearlCrews).\n\n- [Signal K Project](https://signalk.org/) for the open marine data\n  standard\n- [Open-Meteo](https://open-meteo.com/) for the free, keyless weather and\n  marine APIs that back the default source\n- [Met.no](https://api.met.no/) (the Norwegian Meteorological Institute) for the\n  free, keyless Locationforecast and MetAlerts APIs\n- [AccuWeather](https://developer.accuweather.com/) for the optional weather\n  API this plugin can poll with a key\n\nVirtual Weather Sensors pairs well with sibling plugins such as\n[`signalk-nmea2000-emitter-cannon`](https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon)\nand [`signalk-binnacle`](https://github.com/NearlCrews/signalk-binnacle).\n\n## Support\n\nFind this plugin useful? You can support its continued development by\n[buying me a coffee](https://www.buymeacoffee.com/nearlcrews).\n\n- [Report a bug](https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues/new?template=bug_report.yml)\n- [Request a feature](https://github.com/NearlCrews/signalk-virtual-weather-sensors/issues/new?template=feature_request.yml)\n- [Security issues](https://github.com/NearlCrews/signalk-virtual-weather-sensors/blob/main/.github/SECURITY.md)\n","readmeFilename":"README.md"}