{"_id":"signalk-nmea2000-emitter-cannon","_rev":"50-560c7ff7664ae3a52c7237222ce669f5","name":"signalk-nmea2000-emitter-cannon","dist-tags":{"latest":"1.11.0"},"versions":{"1.0.0":{"name":"signalk-nmea2000-emitter-cannon","version":"1.0.0","keywords":["signalk-node-server-plugin","signalk-category-nmea2000","signalk-category-navigation","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"name":"Scott Bender","email":"scott@scottbender.net"},"license":"ISC","_id":"signalk-nmea2000-emitter-cannon@1.0.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Teppo Kurki"},{"url":"https://github.com/NearlCrews","name":"NearlCrews"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"6b0e59c90969dcd06065a2ddd9192d101a4bb0ad","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.0.0.tgz","fileCount":6,"integrity":"sha512-eVPfLGRP+mXvURdDrsc8QbHNqQJ0QDcHWg8DogDaWVI4ZYUXTq0zoSQ8QPnlVFOHtHBewFyikuLPx9hVUo0QFQ==","signatures":[{"sig":"MEUCIQCWUtf5ODBIjUWm3WvxiVwsRZ63YYLqdM279Sg8wi6/6wIgHqwrlpF6LhKRbl/KEQ+dklI++PvDcG8fmzOugnlXwrA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":243377},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"225ee0fbf7fd72753ec59c912dd4659f846bba33","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src/","test":"vitest --run","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --outfile=dist/index.js --external:@canboat/canboatjs --external:rxjs --external:es-toolkit --external:path-scurry","check":"biome check src/","clean":"rm -rf dist","format":"biome format src/ --write","prepack":"npm run build","release":"git tag -d v$npm_package_version ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","build:npm":"npm run build","typecheck":"tsc --noEmit","build:watch":"npm run build -- --watch","test:coverage":"vitest --coverage","create-release":"github-create-release --owner NearlCrews --repository signalk-nmea2000-emitter-cannon"},"signalk":{"appIcon":"./assets/icons/icon-72x72.png","displayName":"Signal K NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"11.6.1","description":"Signal K server plugin to convert Signal K to NMEA2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"_nodeVersion":"22.20.0","dependencies":{"rxjs":"^7.8.2","es-toolkit":"^1.40.0","path-scurry":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","sharp":"^0.34.4","vitest":"^3.2.4","esbuild":"^0.25.10","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/node":"^24.7.2","@biomejs/biome":"^2.2.5","signalk-server":"^2.16.0","@canboat/canboatjs":"^3.11.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.0.0_1760209391455_0.9828647257425767","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.0.1":{"name":"signalk-nmea2000-emitter-cannon","version":"1.0.1","keywords":["signalk-node-server-plugin","signalk-category-nmea2000","signalk-category-navigation","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"name":"Scott Bender","email":"scott@scottbender.net"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.0.1","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Teppo Kurki"},{"url":"https://github.com/NearlCrews","name":"NearlCrews"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"f290e8780795cbf5a657781bf417f85e1525c817","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.0.1.tgz","fileCount":6,"integrity":"sha512-ArztVIyDDQ0u/46AsaR84OgoGEEUNZe1cTt3U6u67G1N3s2nSNuga7dACz09GAoWZEB51yNyd4aPDVrJCFyIGw==","signatures":[{"sig":"MEQCIADRC0yJs9djnl7zIWP10Aonpg3WdxRV2rvClNHh4rPBAiB0bOMFI4Pn7Iu8jwkT8jz4LjOEJZHUUKg/D76IyLqmFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244103},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"ca47133386ddd02762378688c2b4af65e56ab15d","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src/","test":"vitest --run","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --outfile=dist/index.js --external:@canboat/canboatjs --external:rxjs --external:es-toolkit --external:path-scurry","check":"biome check src/","clean":"rm -rf dist","format":"biome format src/ --write","prepack":"npm run build","release":"git tag -d v$npm_package_version ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","build:npm":"npm run build","typecheck":"tsc --noEmit","build:watch":"npm run build -- --watch","test:coverage":"vitest --coverage","create-release":"github-create-release --owner NearlCrews --repository signalk-nmea2000-emitter-cannon"},"signalk":{"appIcon":"./assets/icons/icon-72x72.png","displayName":"Signal K NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"11.6.1","description":"Signal K server plugin to convert Signal K to NMEA2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"_nodeVersion":"22.20.0","dependencies":{"rxjs":"^7.8.2","es-toolkit":"^1.40.0","path-scurry":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","sharp":"^0.34.4","vitest":"^3.2.4","esbuild":"^0.25.10","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/node":"^24.7.2","@biomejs/biome":"^2.2.5","signalk-server":"^2.16.0","@canboat/canboatjs":"^3.11.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.0.1_1760210032983_0.6640773100250008","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.1.0":{"name":"signalk-nmea2000-emitter-cannon","version":"1.1.0","keywords":["signalk-node-server-plugin","signalk-category-nmea2000","signalk-category-navigation","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.1.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"615455a69cc7e8121763127b436e59eac3af155f","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.1.0.tgz","fileCount":6,"integrity":"sha512-HwsdkdYmgHLc66Yw1FkDRHmwvagtzHBL8pzFjHHk3BsmAtCg+Ptja0V8zY15I6M7OGdXaG8iQFFlCkgN0Ilwlg==","signatures":[{"sig":"MEYCIQDZ2raOq2rGjtTe1NZQmxBvig3rz0BM7Uh4phFLh3MW2AIhANeCOgWTLu/kefLrg/eNDFir4vw5NfCEL3nUTB1AzyRF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":256573},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"15701e6bb90e66a984af2ec9c44a68ffcc3a22e6","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src/","test":"vitest --run","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --outfile=dist/index.js --external:@canboat/canboatjs --external:rxjs --external:es-toolkit --external:path-scurry","check":"biome check src/","clean":"rm -rf dist","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","release":"git tag -d v$npm_package_version ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","build:npm":"npm run build","typecheck":"tsc --noEmit","build:watch":"npm run build -- --watch","test:coverage":"vitest --coverage","create-release":"github-create-release --owner NearlCrews --repository signalk-nmea2000-emitter-cannon"},"signalk":{"appIcon":"./assets/icons/icon-72x72.png","displayName":"Signal K NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"11.11.0","description":"Signal K server plugin to convert Signal K to NMEA2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.{ts,tsx}":["biome check --write"],"*.{json,md}":["biome format --write"]},"_nodeVersion":"24.14.1","dependencies":{"rxjs":"^7.8.2","es-toolkit":"^1.44.0","path-scurry":"^2.0.1","@signalk/server-api":"^2.10.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.27.2","@vitest/ui":"^4.0.17","typescript":"^5.9.3","@types/node":"^25.0.9","lint-staged":"^15.5.1","@biomejs/biome":"^2.3.11","signalk-server":"^2.20.0","@canboat/canboatjs":"^3.13.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.1.0_1775270575240_0.9222066410177507","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.2.0":{"name":"signalk-nmea2000-emitter-cannon","version":"1.2.0","keywords":["signalk-node-server-plugin","signalk-category-nmea2000","signalk-category-navigation","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.2.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"900dc90dae645f561f8dfa6fd91ffc50d2e53f2f","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.2.0.tgz","fileCount":6,"integrity":"sha512-66clrfP7n6Htr5lec6CKT2hXlBlUaqduUDeGaY1r0SIdQbPSAcJycDtGua2yR1M/LIkxHRtrMMRXx8VMA7WAeQ==","signatures":[{"sig":"MEQCIDBIE66BJyt0wRU6Z4RLBejBHRE7ix2eCnox+/N2SEH8AiANL5Y8i2S4hpySET//XC/07H2HJAZ8RpTjzdgG68j2mQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":259650},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"91646901f5f1501d7466a98f57c2da912b16492d","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src/","test":"vitest --run","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --outfile=dist/index.js --external:@canboat/canboatjs --external:rxjs --external:es-toolkit --external:path-scurry","check":"biome check src/","clean":"rm -rf dist","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","release":"git tag -d v$npm_package_version ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","build:npm":"npm run build","typecheck":"tsc --noEmit","build:watch":"npm run build -- --watch","test:coverage":"vitest --coverage","create-release":"github-create-release --owner NearlCrews --repository signalk-nmea2000-emitter-cannon"},"signalk":{"appIcon":"./assets/icons/icon-72x72.png","displayName":"Signal K NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"11.11.0","description":"Signal K server plugin to convert Signal K to NMEA2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"24.14.1","dependencies":{"rxjs":"^7.8.2","es-toolkit":"^1.44.0","path-scurry":"^2.0.1","@signalk/server-api":"^2.10.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.27.2","@vitest/ui":"^4.0.17","typescript":"^5.9.3","@types/node":"^25.0.9","lint-staged":"^15.5.1","@biomejs/biome":"^2.3.11","signalk-server":"^2.20.0","@canboat/canboatjs":"^3.13.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.2.0_1775675544031_0.9561835289569172","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.2.1":{"name":"signalk-nmea2000-emitter-cannon","version":"1.2.1","keywords":["signalk-node-server-plugin","signalk-category-nmea2000","signalk-category-navigation","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.2.1","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"32a3235735deb93c9ac48c7b17e5d255615eed30","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.2.1.tgz","fileCount":6,"integrity":"sha512-mPSUj0Oc0ecn95yV+W7j7OKk0qbCXSxHmCwmFP58uzwp5OuByHLK8Wzsfad+bSypPdTW9tLER4D875fg513Rew==","signatures":[{"sig":"MEUCIEe3Jcyy27DWGvixzfG1hkS4igVmUc9vAvo8jCAv8OXoAiEAvIgHwCQNfmdAnNSqUWLXg1g8bOgL7yLYMx6YlpWcs0k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":250463},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"82f1cc95f53088cc01653c5ec42008e26c98dcc9","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src/","test":"vitest --run","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --outfile=dist/index.js --external:@canboat/canboatjs --external:rxjs --external:es-toolkit --external:path-scurry","check":"biome check src/","clean":"rm -rf dist","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","release":"git tag -d v$npm_package_version ; git tag v$npm_package_version && git push --tags && git push && npm run create-release","test:ui":"vitest --ui","build:npm":"npm run build","typecheck":"tsc --noEmit","build:watch":"npm run build -- --watch","test:coverage":"vitest --coverage","create-release":"github-create-release --owner NearlCrews --repository signalk-nmea2000-emitter-cannon"},"signalk":{"appIcon":"./assets/icons/icon-72x72.png","displayName":"Signal K NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"11.11.0","description":"Signal K server plugin to convert Signal K to NMEA2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"24.14.1","dependencies":{"rxjs":"^7.8.2","es-toolkit":"^1.44.0","path-scurry":"^2.0.1","@signalk/server-api":"^2.10.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.27.2","@vitest/ui":"^4.0.17","typescript":"^5.9.3","@types/node":"^25.0.9","lint-staged":"^15.5.1","@biomejs/biome":"^2.3.11","signalk-server":"^2.20.0","@canboat/canboatjs":"^3.13.0"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.2.1_1776053994197_0.10303031811040064","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.2.2":{"name":"signalk-nmea2000-emitter-cannon","version":"1.2.2","keywords":["signalk-node-server-plugin","signalk-category-nmea2000","signalk-category-navigation","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.2.2","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"7398efa25f04c9604e903ce708e85092a840134a","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.2.2.tgz","fileCount":7,"integrity":"sha512-1TqJd9vV30n9Qc1EYyRvmBAf1f4nRigcv4QBiC0PO6kVjkDVgjsrAfjKgmEfK9DtRtO1m9tLLoyt/MVsyqLCTQ==","signatures":[{"sig":"MEUCIQCBmrSrLMDp+8h8evQALjMz/ibWtorGvAHTGb6RIc5JzAIgF9ba6JZXDAGkNKLGez3jeioro0Zeij8FQckCqrjNFnw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":648307},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"973aaa626518627ae81cf49815bf1886fb478c74","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src/","test":"vitest --run","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --sourcemap=linked --outfile=dist/index.js --external:@canboat/canboatjs --external:rxjs --external:es-toolkit --external:path-scurry","check":"biome check src/","clean":"rm -rf dist","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","build:npm":"npm run build","typecheck":"tsc --noEmit","build:watch":"npm run build -- --watch","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-72x72.png","displayName":"Signal K NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"11.11.0","description":"Signal K server plugin to convert Signal K to NMEA2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"24.14.1","dependencies":{"rxjs":"^7.8.2","es-toolkit":"^1.44.0","path-scurry":"^2.0.1","@signalk/server-api":"^2.10.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.27.2","@vitest/ui":"^4.0.17","typescript":"^5.9.3","@types/node":"^25.0.9","lint-staged":"^15.5.1","@biomejs/biome":"^2.3.11","signalk-server":"^2.20.0","@canboat/canboatjs":"^3.13.0","@vitest/coverage-v8":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.2.2_1776535543242_0.06419785025484126","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.2.3":{"name":"signalk-nmea2000-emitter-cannon","version":"1.2.3","keywords":["signalk-node-server-plugin","signalk-category-nmea2000","signalk-category-navigation","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.2.3","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"710cd0f29e0cf387ded5402b026716c1c2ed1823","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.2.3.tgz","fileCount":6,"integrity":"sha512-fpJ/Ms3WdLNbqJOGlhxsWtyi/1AL40F8D95NR0ZbDMzgPXZkf66b3kZPv8ESnKnlTDtiQ3L2c/k0Ip3LeJGGgw==","signatures":[{"sig":"MEQCIFv0HZ5f0zKVRWIY6qODn8BA64MXfB8pcaQr8a6otgaqAiAbBFUeOkZAJC7ryO6HRl5U0trfh2BEhzZVZVtz2x1bQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":274634},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"df08df686b29646531bf5e38abe5e8d751dac56e","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --outfile=dist/index.js --external:@canboat/canboatjs --external:rxjs --external:es-toolkit --external:path-scurry","check":"biome check src/","clean":"rm -rf dist","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --sourcemap=linked --outfile=dist/index.js --external:@canboat/canboatjs --external:rxjs --external:es-toolkit --external:path-scurry --watch","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-72x72.png","displayName":"Signal K NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"11.11.0","description":"Signal K server plugin to convert Signal K to NMEA2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"24.14.1","dependencies":{"rxjs":"^7.8.2","es-toolkit":"^1.44.0","path-scurry":"^2.0.1","@signalk/server-api":"^2.10.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.27.2","@vitest/ui":"^4.0.17","typescript":"^5.9.3","@types/node":"^25.0.9","lint-staged":"^15.5.1","@biomejs/biome":"^2.3.11","signalk-server":"^2.20.0","@canboat/canboatjs":"^3.13.0","@vitest/coverage-v8":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.2.3_1776628036395_0.9039160346426172","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.2.4":{"name":"signalk-nmea2000-emitter-cannon","version":"1.2.4","keywords":["signalk-node-server-plugin","signalk-category-nmea2000","signalk-category-navigation","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.2.4","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"22fd3f5000af32c12be4fa03865af44434dff2b0","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.2.4.tgz","fileCount":6,"integrity":"sha512-PlYEOoZ1+JAHCI1lq8B0zGtNJSsorfpG4bdg4VmRvQJod4YQuTysHNOW2/Jw0CnLU2WVohPX2F+nSU3tDk3IAg==","signatures":[{"sig":"MEUCIQDk3hr63XttkSsykz+3Bf8ex2+MKnsXLkibfFMaxwNzZwIgA4eB52+wk51K0Lm2hS1HCN7zKlfETDCOpAjDuNA4mv4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":276429},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"2b359e162e266c696a45156db8db4429aa957b78","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --outfile=dist/index.js --external:@canboat/canboatjs --external:rxjs --external:es-toolkit --external:path-scurry","check":"biome check src/","clean":"rm -rf dist","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --sourcemap=linked --outfile=dist/index.js --external:@canboat/canboatjs --external:rxjs --external:es-toolkit --external:path-scurry --watch","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-72x72.png","displayName":"Signal K NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"11.11.0","description":"Signal K server plugin to convert Signal K to NMEA2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"24.14.1","dependencies":{"rxjs":"^7.8.2","es-toolkit":"^1.44.0","path-scurry":"^2.0.1","@signalk/server-api":"^2.10.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.27.2","@vitest/ui":"^4.0.17","typescript":"^5.9.3","@types/node":"^25.0.9","lint-staged":"^15.5.1","@biomejs/biome":"^2.3.11","signalk-server":"^2.20.0","@canboat/canboatjs":"^3.13.0","@vitest/coverage-v8":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.2.4_1776629305627_0.09131103535486584","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.2.5":{"name":"signalk-nmea2000-emitter-cannon","version":"1.2.5","keywords":["signalk-node-server-plugin","signalk-category-nmea2000","signalk-category-navigation","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.2.5","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"be5f5beff51b8da5d359907dfbcbd8b4f5dd2e05","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.2.5.tgz","fileCount":6,"integrity":"sha512-MIkClc+mzc8NX3aWz6Z595Qpge2cr4d3fN46Q9TbHTBERPXulHmZvwC76jXF8wqtXKZpvP/YZckL5DsdqMDAYA==","signatures":[{"sig":"MEUCID27cKFGhs65p7MT5G9M+jVxo2hATQxkFF4zYigcdH0tAiEA6fcx7pQ8SaMpG9HOkJC0lyQL/I7NTzPXwodjlcY6yBo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279091},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"2b359e162e266c696a45156db8db4429aa957b78","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --outfile=dist/index.js --external:@canboat/canboatjs --external:rxjs --external:es-toolkit --external:path-scurry","check":"biome check src/","clean":"rm -rf dist","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --sourcemap=linked --outfile=dist/index.js --external:@canboat/canboatjs --external:rxjs --external:es-toolkit --external:path-scurry --watch","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-72x72.png","displayName":"Signal K NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"11.12.1","description":"Signal K server plugin to convert Signal K to NMEA2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"24.15.0","dependencies":{"rxjs":"^7.8.2","es-toolkit":"^1.44.0","path-scurry":"^2.0.1","@signalk/server-api":"^2.10.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.27.2","@vitest/ui":"^4.0.17","typescript":"^5.9.3","@types/node":"^25.0.9","lint-staged":"^15.5.1","@biomejs/biome":"^2.3.11","signalk-server":"^2.20.0","@canboat/canboatjs":"^3.13.0","@vitest/coverage-v8":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.2.5_1777830626815_0.25742241914588115","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.3.0":{"name":"signalk-nmea2000-emitter-cannon","version":"1.3.0","keywords":["signalk-node-server-plugin","signalk-category-nmea2000","signalk-category-navigation","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.3.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"2fc3ded83d7eab7b507375e55b015670312977c0","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.3.0.tgz","fileCount":6,"integrity":"sha512-xY7STrWTJxgEq/hkMxkooLqVA+UdHTEDf/wLY2zCqW/2+EoiCMddYhwJJVacwYy8APHubmE9fHbo25kAeCqQRQ==","signatures":[{"sig":"MEUCIQCFBBbOpiQU2Ziv5WTCWJfevpnB3KBiaEqv04IGM6lHiwIgOpM+fVJQZh78NRp9S6FNP0B+2/da/zoTKs6FknF4jtQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":284599},"main":"dist/index.js","type":"module","engines":{"node":">=20.18"},"gitHead":"114fb47488fd7b11bafe363e9cc381bf0968bee2","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --outfile=dist/index.js --external:@canboat/canboatjs --external:rxjs --external:es-toolkit --external:path-scurry","check":"biome check src/","clean":"rm -rf dist","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --sourcemap=linked --outfile=dist/index.js --external:@canboat/canboatjs --external:rxjs --external:es-toolkit --external:path-scurry --watch","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-72x72.png","displayName":"Signal K NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"11.12.1","description":"Signal K server plugin to convert Signal K to NMEA2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"24.15.0","dependencies":{"rxjs":"^7.8.2","es-toolkit":"^1.44.0","path-scurry":"^2.0.1","@signalk/server-api":"^2.10.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","sharp":"^0.34.5","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.4.0","@biomejs/biome":"^2.3.11","signalk-server":"^2.20.0","@canboat/canboatjs":"^3.13.0","@vitest/coverage-v8":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.3.0_1778035164580_0.4108506398899061","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.3.1":{"name":"signalk-nmea2000-emitter-cannon","version":"1.3.1","keywords":["signalk-node-server-plugin","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.3.1","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"2421f55e9902c96390674b984eb476ac47ba36ff","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.3.1.tgz","fileCount":6,"integrity":"sha512-fzdpL2GI3tc9nkB5hW+FuPeMH9vwpFL2OgNS20BaBJxu7ic2bAUoZoFoUASfIl+G2skBs53WrxosyKHHVfXm5A==","signatures":[{"sig":"MEUCIEiQcM15G23UL1R58Y3sS355zqPWMak2HSymzkhOFwqVAiEAh8280/vQt61g1tGGg7+1qRJqFRojCCsn58ZYBSRHRlc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":286934},"main":"dist/index.js","type":"module","engines":{"node":">=20.18"},"gitHead":"a0d71e90ca31da3c5bfd263d61b6efab0ef8fdb9","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --outfile=dist/index.js --external:@canboat/canboatjs --external:rxjs --external:es-toolkit --external:path-scurry","check":"biome check src/","clean":"rm -rf dist","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --sourcemap=linked --outfile=dist/index.js --external:@canboat/canboatjs --external:rxjs --external:es-toolkit --external:path-scurry --watch","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-72x72.png","displayName":"Signal K NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K server plugin to convert Signal K to NMEA2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"20.20.2","dependencies":{"rxjs":"^7.8.2","es-toolkit":"^1.44.0","path-scurry":"^2.0.1","@signalk/server-api":"^2.10.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","sharp":"^0.34.5","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.4.0","@biomejs/biome":"^2.3.11","signalk-server":"^2.20.0","@canboat/canboatjs":"^3.13.0","@vitest/coverage-v8":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.3.1_1778299350102_0.9612249053506043","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.3.2":{"name":"signalk-nmea2000-emitter-cannon","version":"1.3.2","keywords":["signalk-node-server-plugin","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.3.2","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"198a0efb135e91ccf39699410490a1156cd25d41","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.3.2.tgz","fileCount":6,"integrity":"sha512-ZcA91hggo7gri/PNIXz1SbH8X/+FCqne/LfSjOsV9+RFyf/6KTPOXeE+yF+l2B6YBLDgUaFlqVwNGVy4RRv/mA==","signatures":[{"sig":"MEQCIHNKoxyt9AH5YWk6YJP1I8l+/0cq5f7ZGGXeGJlRHz1WAiBS45eu3eT6+bU20ZMFJevezxG3W5ZNnTvqx6kioH1Ymg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":294868},"main":"dist/index.js","type":"module","engines":{"node":">=20.18"},"gitHead":"d3012d4643e17cb20c2286c34c0f1e555104ce1c","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --outfile=dist/index.js --external:@canboat/canboatjs --external:rxjs --external:es-toolkit --external:path-scurry","check":"biome check src/","clean":"rm -rf dist","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --sourcemap=linked --outfile=dist/index.js --external:@canboat/canboatjs --external:rxjs --external:es-toolkit --external:path-scurry --watch","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-72x72.png","displayName":"Signal K NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K server plugin to convert Signal K to NMEA2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"20.20.2","dependencies":{"rxjs":"^7.8.2","es-toolkit":"^1.44.0","path-scurry":"^2.0.1","@signalk/server-api":"^2.10.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","sharp":"^0.34.5","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.4.0","@biomejs/biome":"^2.3.11","signalk-server":"^2.20.0","@canboat/canboatjs":"^3.13.0","@vitest/coverage-v8":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.3.2_1778300648999_0.6060283240898348","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.4.0":{"name":"signalk-nmea2000-emitter-cannon","version":"1.4.0","keywords":["signalk-node-server-plugin","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.4.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"475be4056cbb7c150a5cb18e6a69a8b932d9920e","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.4.0.tgz","fileCount":6,"integrity":"sha512-PnzIAWoWLV0lqNvhYqgmbEU4VPBs6xiVk7lpd3ldonUT2Amxj+M4VcWxEbpO65lYsEPY9qz/u9iUU/jG5CnVIg==","signatures":[{"sig":"MEUCIQDOR/mMua1n9afjAenxG0y00/j/y8Z0pqeCGJSQYBrlWQIgPRJ+GcqvJ+j3KIRpzdS0lhjJ15B5mRGF0QMZlS1CMOQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":438484},"main":"dist/index.js","type":"module","engines":{"node":">=20.18"},"gitHead":"165f7303e85492c267c7e2702b342385465a2bcb","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --outfile=dist/index.js --external:rxjs","check":"biome check src/","clean":"rm -rf dist","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --sourcemap=linked --outfile=dist/index.js --external:rxjs --watch","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-72x72.png","displayName":"Signal K NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K server plugin to convert Signal K to NMEA2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"20.20.2","dependencies":{"rxjs":"^7.8.2","@signalk/server-api":"^2.10.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","sharp":"^0.34.5","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.4.0","@biomejs/biome":"^2.4.15","signalk-server":"^2.20.0","@canboat/canboatjs":"^3.18.0","@types/json-schema":"^7.0.15","@vitest/coverage-v8":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.4.0_1778467148049_0.3139796050457593","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.4.2":{"name":"signalk-nmea2000-emitter-cannon","version":"1.4.2","keywords":["signalk-node-server-plugin","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.4.2","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"a225f92c432718c1265681a3580f0e22aa3f3815","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.4.2.tgz","fileCount":10,"integrity":"sha512-g/nfi/Z6z86wcBIaG4vvX8tkNV3shC++AME5LquxgPZ0eQPW8UGt7qCxLoPjPLi6Unf+AJSSjh+RHZMu0axAcA==","signatures":[{"sig":"MEYCIQDT6cgcjuAcesWdRmBGQr9A3sCh+bCPfxx4+XBIizL13wIhAM8N2QowVOHnCKBa5DyPVDNM2FcRg7jWTgMAXTjgDK8q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492974},"main":"dist/index.js","type":"module","engines":{"node":">=20.18"},"gitHead":"610462f13393b31dc2186c83e3c8540c311d2e59","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --outfile=dist/index.js --external:rxjs","check":"biome check src/","clean":"rm -rf dist","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --sourcemap=linked --outfile=dist/index.js --external:rxjs --watch","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"Signal K NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K server plugin to convert Signal K to NMEA 2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"20.20.2","dependencies":{"rxjs":"^7.8.2","@signalk/server-api":"^2.10.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","sharp":"^0.34.5","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.4.0","@biomejs/biome":"^2.4.15","signalk-server":"^2.20.0","@canboat/canboatjs":"^3.18.0","@types/json-schema":"^7.0.15","@vitest/coverage-v8":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.4.2_1778599394109_0.016041716070963385","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.4.3":{"name":"signalk-nmea2000-emitter-cannon","version":"1.4.3","keywords":["signalk-node-server-plugin","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.4.3","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"29586aaf6cac17c5cda7627b022f754670da5224","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.4.3.tgz","fileCount":10,"integrity":"sha512-S0MD4zo0WY3KjXwIcYj2TK4yZMRy77g28yi1VRNYWffaLz5CjmSIk1Gl/fqKi8oPkQmt6L9ZN8JOtA2LlNLXTA==","signatures":[{"sig":"MEUCIHzWc26J+pjj1yBxU09TH7v2iBFgditDVJ6w+cB7JChgAiEAyTLIpk6iWZHAxFNXxVzQk8giA68PNCr9oQzYLF5V1hs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":505095},"main":"dist/index.js","type":"module","engines":{"node":">=20.18"},"gitHead":"3e132cebf63991c484273eb74c3dd363381a0c21","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --outfile=dist/index.js --external:rxjs","check":"biome check src/","clean":"rm -rf dist","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --sourcemap=linked --outfile=dist/index.js --external:rxjs --watch","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"Signal K NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K server plugin to convert Signal K to NMEA 2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"20.20.2","dependencies":{"rxjs":"^7.8.2","@signalk/server-api":"^2.10.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","sharp":"^0.34.5","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.4.0","@biomejs/biome":"^2.4.15","signalk-server":"^2.20.0","@canboat/canboatjs":"^3.18.0","@types/json-schema":"^7.0.15","@vitest/coverage-v8":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.4.3_1778603651384_0.5874421628077735","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.4.4":{"name":"signalk-nmea2000-emitter-cannon","version":"1.4.4","keywords":["signalk-node-server-plugin","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.4.4","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"6bf31b96b2b977a29e0f5731701667fd7e08a443","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.4.4.tgz","fileCount":10,"integrity":"sha512-6i5lk5k4/uNLq2rZeMTXoIbej5QREkEBwXjQSN+NYgnUZiErhr45sN1X1bYlOWSpDuKucBH+a4QDWhbsGC6z+w==","signatures":[{"sig":"MEUCIBz49sJ5wmDhzIJEjr1SkTXWA1QGxjIs2tBBFLbhHSItAiEA7cFnLhNGvdBddZY35C3lUYXjqjrpgyEN2V5ajWbg0t4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":509050},"main":"dist/index.js","type":"module","engines":{"node":">=20.18"},"gitHead":"120b3ca503fe8bf8baf4ea8070081575a9fc3d4a","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --outfile=dist/index.js --external:rxjs","check":"biome check src/","clean":"rm -rf dist","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node20 --format=esm --sourcemap=linked --outfile=dist/index.js --external:rxjs --watch","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"Signal K NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.8.2","description":"Signal K server plugin to convert Signal K to NMEA 2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"20.20.2","dependencies":{"rxjs":"^7.8.2","@signalk/server-api":"^2.10.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","sharp":"^0.34.5","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.4.0","@biomejs/biome":"^2.4.15","signalk-server":"^2.20.0","@canboat/canboatjs":"^3.18.0","@types/json-schema":"^7.0.15","@vitest/coverage-v8":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.4.4_1778605243748_0.19267006362120642","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.5.2":{"name":"signalk-nmea2000-emitter-cannon","version":"1.5.2","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.5.2","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"d2daf754f41a92d011942e4cf738e5730478ec17","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.5.2.tgz","fileCount":17,"integrity":"sha512-1ziGIqft/KLvcPJ1wLk0s50B05DQPa82qQqO6qE9m9iVUWtA50wi4XosLlS7h/aWPWQhQmKOiwXH5uvt7VJ7mg==","signatures":[{"sig":"MEUCIH98m4Wy0l5JN3f2UDiXQPNaFcwvbx1MbT4Qs28z1OwGAiEAuFMddd+IubjrFcrlVB28sNoDD2ttumANM7jqySHYeRM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":701055},"main":"dist/index.js","type":"module","engines":{"node":">=22.12"},"gitHead":"f460ad402d04edb3a2ebb320a5644963419c301e","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"rm -rf dist && rm -f public/*.js public/*.mjs public/*.LICENSE.txt public/*.map","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --sourcemap=linked --outfile=dist/index.js --external:rxjs --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.js --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"Signal K NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.7","description":"Signal K server plugin to convert Signal K to NMEA 2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"rxjs":"^7.8.2","@sinclair/typebox":"^0.34.49","@signalk/server-api":"^2.24.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.28.0","express":"^5.2.1","webpack":"^5.106.2","react-dom":"^19.2.6","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.7.0","lint-staged":"^17.0.4","webpack-cli":"^7.0.2","@types/react":"^19.2.14","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","signalk-server":"^2.27.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@canboat/canboatjs":"^3.18.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.28.5","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.28.5"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.5.2_1778634162110_0.2223935477912018","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.5.3":{"name":"signalk-nmea2000-emitter-cannon","version":"1.5.3","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.5.3","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"b602e81e6d4c4b0cd3b33bca9c2decf79b8dbe78","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.5.3.tgz","fileCount":17,"integrity":"sha512-Ys3vHzV1RRvgR31MvzemgAnlZKzsvzPaNRpawBeGURg0/czeDR+nC25B3nmu5TwiODk/H+YdHLR7VZxc1Sjflg==","signatures":[{"sig":"MEUCIQDgS9mdmuOSmbZY7qF4wX3vsrv5s1OqJbVaot/Bd4OmcQIgLWAvTO7zwSe4ebqT7OuZN57hZ7XxfaSGpkzaq4izbYo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":707243},"main":"dist/index.js","type":"module","engines":{"node":">=22.12"},"gitHead":"8ad41c0bede828ee494acc070e5544ec8ca640f6","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"rm -rf dist && rm -f public/*.js public/*.mjs public/*.LICENSE.txt public/*.map","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --sourcemap=linked --outfile=dist/index.js --external:rxjs --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.js --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"Signal K NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.7","description":"Signal K server plugin to convert Signal K to NMEA 2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"rxjs":"^7.8.2","@sinclair/typebox":"^0.34.49","@signalk/server-api":"^2.24.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.28.0","express":"^5.2.1","webpack":"^5.106.2","react-dom":"^19.2.6","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.7.0","lint-staged":"^17.0.4","webpack-cli":"^7.0.2","@types/react":"^19.2.14","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","signalk-server":"^2.27.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@canboat/canboatjs":"^3.18.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.28.5","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.28.5"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.5.3_1778638560431_0.5479420250336531","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.5.4":{"name":"signalk-nmea2000-emitter-cannon","version":"1.5.4","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.5.4","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"7ead8ea3c50aa934d19851111aab15d8ad53930a","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.5.4.tgz","fileCount":17,"integrity":"sha512-S49jRtCVrzrnwTGnlcc9tPD2CN1GKirMrOyZDfPjcfWGN+gTUSp3JlpC0pvqJLnJxlw9PZ7NdOoIZfKatrGRKw==","signatures":[{"sig":"MEUCIEKrO5cHwhCjqM6vwzFapbtxMAOzfKmXc3lEzklBSKiJAiEA8bnluxOWcKTSDjwDrTNDU5Hrashefv+BJmXCMJvaPE4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.5.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":713733},"main":"dist/index.js","type":"module","engines":{"node":">=22.12"},"gitHead":"a651639b9d1f9156177804f41ce2811667198427","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"rm -rf dist && rm -f public/*.js public/*.mjs public/*.LICENSE.txt public/*.map","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --sourcemap=linked --outfile=dist/index.js --external:rxjs --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.js --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.7","description":"Signal K server plugin to convert Signal K to NMEA 2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"rxjs":"^7.8.2","@sinclair/typebox":"^0.34.49","@signalk/server-api":"^2.24.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.28.0","express":"^5.2.1","webpack":"^5.106.2","react-dom":"^19.2.6","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.7.0","lint-staged":"^17.0.4","webpack-cli":"^7.0.2","@types/react":"^19.2.14","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","signalk-server":"^2.27.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@canboat/canboatjs":"^3.18.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.28.5","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.28.5"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.5.4_1778641715141_0.22754693568083129","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.5.5":{"name":"signalk-nmea2000-emitter-cannon","version":"1.5.5","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.5.5","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"5e3556fef5d7563787dabf28341cbe73d086c733","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.5.5.tgz","fileCount":17,"integrity":"sha512-K5EIpYC9KU9fre9lvHxYAxejYZKlEcYP70gJH9pxh1tQvXvY3V7oxOYt4BVBGh/G26b7NG9r0uf1464N+E0WVg==","signatures":[{"sig":"MEUCIA8RDG4fr7iJvb7RFkxQ/nx5ykZOMHiJZeBpLqNj7sVaAiEAyBnkb4v3c+WvCxp7ab7JW37GIxblr23pPTfoDMD51Mg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.5.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":739939},"main":"dist/index.js","type":"module","engines":{"node":">=22.12"},"gitHead":"a1b968a07c6493d6d82e7dca9de5a9d3a33f493b","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"rm -rf dist && rm -f public/*.js public/*.mjs public/*.LICENSE.txt public/*.map","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --sourcemap=linked --outfile=dist/index.js --external:rxjs --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.js --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"NMEA2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.7","description":"Signal K server plugin to convert Signal K to NMEA 2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"rxjs":"^7.8.2","@sinclair/typebox":"^0.34.49","@signalk/server-api":"^2.24.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.28.0","express":"^5.2.1","webpack":"^5.106.2","react-dom":"^19.2.6","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.7.0","lint-staged":"^17.0.4","webpack-cli":"^7.0.2","@types/react":"^19.2.14","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","signalk-server":"^2.27.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@canboat/canboatjs":"^3.18.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.28.5","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.28.5"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.5.5_1778900431429_0.6024784685566107","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.5.6":{"name":"signalk-nmea2000-emitter-cannon","version":"1.5.6","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.5.6","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"33202ca0c4f5896456a1e38345f7a48900fc92f8","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.5.6.tgz","fileCount":17,"integrity":"sha512-AZCFLdGrFLBrAKTiE2Yvjbp3+Uh7/jn4IFEb8hkVjVlydGbSMGrvVvWPqCUq03Xkh1/qwy3LyCi1RWJqTPYM9w==","signatures":[{"sig":"MEYCIQCahvEHNM5fRP3C+YD0vqJ1QUk9bkDx5t5HHFtD11nPOgIhAOVrlhNAVilaisbCcYdo9zTpHFmK9PBG0kAw7at9EITN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.5.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":754725},"main":"dist/index.js","type":"module","engines":{"node":">=22.12"},"gitHead":"29fd6297d9285e8db1346057934a86fac06ca9e5","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"rm -rf dist && rm -f public/*.js public/*.mjs public/*.LICENSE.txt public/*.map","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --sourcemap=linked --outfile=dist/index.js --external:rxjs --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.js --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"NMEA 2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.7","description":"Signal K server plugin to convert Signal K to NMEA 2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"rxjs":"^7.8.2","@sinclair/typebox":"^0.34.49","@signalk/server-api":"^2.24.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.28.0","express":"^5.2.1","webpack":"^5.106.2","react-dom":"^19.2.6","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.7.0","lint-staged":"^17.0.4","webpack-cli":"^7.0.2","@types/react":"^19.2.14","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","signalk-server":"^2.27.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@canboat/canboatjs":"^3.18.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.28.5","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.28.5"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.5.6_1778903215309_0.2831603906617768","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.5.7":{"name":"signalk-nmea2000-emitter-cannon","version":"1.5.7","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","marine-electronics","ais","navigation"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.5.7","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"4deb8cba6b6a01f9964f14dce4d89e9eefe9cdac","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.5.7.tgz","fileCount":17,"integrity":"sha512-/MsTOPYuQu6G8EhLCHtSikwddUJoKU4AGtmjFAeRb4OpB7lPKLGl/il0JQxcWQTEosyHqVk/0Zzjq1m6OJ1ePw==","signatures":[{"sig":"MEQCICtkXdJhC6V/A/ExZahcdDYreaHOTw4YHHNNUJm6N79BAiAdjWXGGnyu7a2fOUt5H3XYoLnyClRhZWSaP7MmO8lOYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.5.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":763757},"main":"dist/index.js","type":"module","engines":{"node":">=22.12"},"gitHead":"d9fd153de5cd978f41f7cc15e453fed2a8c5e18b","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"rm -rf dist && rm -f public/*.js public/*.mjs public/*.LICENSE.txt public/*.map","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --sourcemap=linked --outfile=dist/index.js --external:rxjs --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.js --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"NMEA 2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.7","description":"Signal K server plugin to convert Signal K to NMEA 2000 with Garmin PGN specification alignment and canboatjs framework compatibility","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"rxjs":"^7.8.2","@sinclair/typebox":"^0.34.49","@signalk/server-api":"^2.24.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.28.0","express":"^5.2.1","webpack":"^5.106.2","react-dom":"^19.2.6","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.7.0","lint-staged":"^17.0.4","webpack-cli":"^7.0.2","@types/react":"^19.2.14","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","signalk-server":"^2.27.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@canboat/canboatjs":"^3.18.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.28.5","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.28.5"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.5.7_1778909721019_0.07073004818888107","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.6.1":{"name":"signalk-nmea2000-emitter-cannon","version":"1.6.1","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.6.1","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"aeca5c73aa055b7a5ef07a8e14ec19ffcf4aeebe","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.6.1.tgz","fileCount":17,"integrity":"sha512-fCFy9HMk0ioNHzAOLsWuPoeem2r+8pBaF8i3clC7OH8+Cyljzy6DjZAR79f20cek4V0Q8crrfjADBRz7+w5rBA==","signatures":[{"sig":"MEQCID90qBG1uNTTf+0/b2mTFF1uqYhcDMPM6k0oZPN7d2DsAiA3ov4yCg4zDTctVCVimGnAIVKwudvQVsiIJufOFBmLBQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":798892},"main":"dist/index.js","type":"module","engines":{"node":">=22.12"},"gitHead":"33d619c0c80afabb3a4a8974a9ae45db9a61bd01","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"rm -rf dist && rm -f public/*.js public/*.mjs public/*.LICENSE.txt public/*.map","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --sourcemap=linked --outfile=dist/index.js --external:rxjs --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.js --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"NMEA 2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.7","description":"Signal K plugin that converts Signal K deltas to Garmin-aligned NMEA 2000 PGNs","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"rxjs":"^7.8.2","@sinclair/typebox":"^0.34.49","@signalk/server-api":"^2.24.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.28.0","express":"^5.2.1","webpack":"^5.106.2","react-dom":"^19.2.6","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.7.0","lint-staged":"^17.0.4","webpack-cli":"^7.0.2","@types/react":"^19.2.14","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","signalk-server":"^2.27.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@canboat/canboatjs":"^3.18.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.28.5","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.28.5"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.6.1_1778951447320_0.9237799668794313","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.6.2":{"name":"signalk-nmea2000-emitter-cannon","version":"1.6.2","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.6.2","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"649b9afffa7683e9d38ffd432883dd2e9dd69cf4","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.6.2.tgz","fileCount":17,"integrity":"sha512-eXSNth3twcUPlmS3spy8u/qpQtJRgUUg0Y0zahBx6NHDJ/8zH6bi8OwsgzOhMyGW49Necz5N+O2RaqY3HT3/VA==","signatures":[{"sig":"MEUCIHxa90BSarktQhpDqlXLV95dYcxLzZPPF7tgUQUQ5Q8CAiEAtRoSBC9e9SneBwt3VVTe2WyJcooNjPLEd3cwu72cH7M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":800180},"main":"dist/index.js","type":"module","engines":{"node":">=22.12"},"gitHead":"5898012ff28e1e370006e6939fbbd8a8e404957f","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"rm -rf dist && rm -f public/*.js public/*.mjs public/*.LICENSE.txt public/*.map","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --sourcemap=linked --outfile=dist/index.js --external:rxjs --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.js --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"NMEA 2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.7","description":"Signal K plugin that converts Signal K deltas to Garmin-aligned NMEA 2000 PGNs","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"rxjs":"^7.8.2","@sinclair/typebox":"^0.34.49","@signalk/server-api":"^2.24.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.28.0","express":"^5.2.1","webpack":"^5.106.2","react-dom":"^19.2.6","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.7.0","lint-staged":"^17.0.4","webpack-cli":"^7.0.2","@types/react":"^19.2.14","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","signalk-server":"^2.27.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@canboat/canboatjs":"^3.18.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.28.5","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.28.5"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.6.2_1778951937653_0.7372023705543416","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.6.3":{"name":"signalk-nmea2000-emitter-cannon","version":"1.6.3","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.6.3","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"59949db6ab1ba6df58b2f09c17ab3fd1012e6fd6","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.6.3.tgz","fileCount":17,"integrity":"sha512-JdZtKIMnr7YcvzYBqsYjbLe8K1tOEZZAtAgbeoOc+tYB7TW9MX0uG7GQBXsqdNcVGhKR6V3KoReiUAAA32034Q==","signatures":[{"sig":"MEQCIHZoUr/n8eo9JJFdMjfTwU/g1kX5WyUV2IFJ93TfPeYzAiBY1WMZ1XEJh2UE0bLzycr5LjWyzjkbpNFDf2gA+APdrQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.6.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":801267},"main":"dist/index.js","type":"module","engines":{"node":">=22.12"},"gitHead":"76569bb76815c08723c62e1517153299954272c0","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"rm -rf dist && rm -f public/*.js public/*.mjs public/*.LICENSE.txt public/*.map","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --sourcemap=linked --outfile=dist/index.js --external:rxjs --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.js --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"NMEA 2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.7","description":"Signal K plugin that converts Signal K deltas to Garmin-aligned NMEA 2000 PGNs","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"rxjs":"^7.8.2","@sinclair/typebox":"^0.34.49","@signalk/server-api":"^2.24.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.28.0","express":"^5.2.1","webpack":"^5.106.2","react-dom":"^19.2.6","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.7.0","lint-staged":"^17.0.4","webpack-cli":"^7.0.2","@types/react":"^19.2.14","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","signalk-server":"^2.27.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@canboat/canboatjs":"^3.18.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.28.5","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.28.5"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.6.3_1778986625872_0.0372492449368651","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.6.4":{"name":"signalk-nmea2000-emitter-cannon","version":"1.6.4","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.6.4","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"f8c895dc0443752dda0e4b155f00a459a11941ad","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.6.4.tgz","fileCount":17,"integrity":"sha512-bdfe3HV9nRWGPX81CLV+V5qVszHTmBICzX/PbUR5RgNyMWv5V7jSJmXeF52wMbajkvC8C45Wb+Kk4OkQoouWsQ==","signatures":[{"sig":"MEYCIQCVKRYosrp1O4POYS1I0EcTvdZtf/wzBD3/13whGIfpywIhAK7/RwtQA28VYc/mBe6XI0AYyjZ4We+1ekj3i234gyhH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.6.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":801608},"main":"dist/index.js","type":"module","engines":{"node":">=22.12"},"gitHead":"c42157d3f28509e7e7dbfe02ff3b24f369261395","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"rm -rf dist && rm -f public/*.js public/*.mjs public/*.LICENSE.txt public/*.map","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --sourcemap=linked --outfile=dist/index.js --external:rxjs --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.js --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"NMEA 2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.7","description":"Signal K plugin that converts Signal K deltas to Garmin-aligned NMEA 2000 PGNs","directories":{},"lint-staged":{"*.json":["biome format --write"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"rxjs":"^7.8.2","@sinclair/typebox":"^0.34.49","@signalk/server-api":"^2.24.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.28.0","express":"^5.2.1","webpack":"^5.106.2","react-dom":"^19.2.6","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.7.0","lint-staged":"^17.0.4","webpack-cli":"^7.0.2","@types/react":"^19.2.14","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","signalk-server":"^2.27.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@canboat/canboatjs":"^3.18.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.28.5","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.28.5"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.6.4_1779215067773_0.10120719147878998","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.6.5":{"name":"signalk-nmea2000-emitter-cannon","version":"1.6.5","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.6.5","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"9374b5f69eb5cddef6639330dea5e7e84e0a6ffd","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.6.5.tgz","fileCount":17,"integrity":"sha512-p9kcYVeraQfqqxBsAS4i7ab/g/fMPexqr96lbOevCpOPizy9GfFC3eF+NF49EeAnS3Az+fm7jGOYfv267AbDKg==","signatures":[{"sig":"MEQCIGjXNtCQ9k0rao2NL4F0sqCni9fKoF9Jyn0AxwZohbBdAiBd7de/Qf0hlVFNCOt3Cpxb8T2SD2VwsrHaZQPgF5Gneg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":765814},"main":"dist/index.mjs","engines":{"node":">=22.12"},"gitHead":"f8482cc4087046953cd6e044ebef837284a4774a","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"rm -rf dist && rm -f public/*.js public/*.mjs public/*.LICENSE.txt public/*.map","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.mjs --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"NMEA 2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"11.12.1","description":"Signal K plugin that converts Signal K deltas to Garmin-aligned NMEA 2000 PGNs","directories":{},"lint-staged":{"*.json":["biome format --write --no-errors-on-unmatched"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"24.15.0","dependencies":{"rxjs":"^7.8.2","@sinclair/typebox":"^0.34.49","@signalk/server-api":"^2.24.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.28.0","express":"^5.2.1","webpack":"^5.106.2","react-dom":"^19.2.6","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.7.0","lint-staged":"^17.0.4","webpack-cli":"^7.0.2","@types/react":"^19.2.14","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","signalk-server":"^2.27.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@canboat/canboatjs":"^3.18.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.28.5","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.28.5"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.6.5_1779366998009_0.6505960917595524","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.6.6":{"name":"signalk-nmea2000-emitter-cannon","version":"1.6.6","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.6.6","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"5cc0a0810107b8489a6d3e2377d1517853ae8849","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.6.6.tgz","fileCount":17,"integrity":"sha512-IzB4z46vZOb+HfoFXzWbJKVGJEor7uXo8aYaIOFDYTOopY8vfAf1L2d0XSSfTpG4j8/BumDZVhMn+2aj0eRWIA==","signatures":[{"sig":"MEYCIQCMRgiXFz9m8HVQX1+JCulV8nvJUhmY1/qTdY3zOLGGNwIhAJAUWJqhBnquKZaM10brnUZ8jsgibomKyFNes9vu2zT+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":768146},"main":"dist/index.mjs","engines":{"node":">=22.12"},"gitHead":"784f018a3e7794513b5d3f371824bc28ca8e5bae","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"rm -rf dist && rm -f public/*.js public/*.mjs public/*.LICENSE.txt public/*.map","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.mjs --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","displayName":"NMEA 2000 Emitter Cannon"},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"11.12.1","description":"Signal K plugin that converts Signal K deltas to Garmin-aligned NMEA 2000 PGNs","directories":{},"lint-staged":{"*.json":["biome format --write --no-errors-on-unmatched"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"24.15.0","dependencies":{"rxjs":"^7.8.2","@sinclair/typebox":"^0.34.49","@signalk/server-api":"^2.24.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.28.0","express":"^5.2.1","webpack":"^5.106.2","react-dom":"^19.2.6","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.7.0","lint-staged":"^17.0.4","webpack-cli":"^7.0.2","@types/react":"^19.2.14","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","signalk-server":"^2.27.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@canboat/canboatjs":"^3.18.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.28.5","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.28.5"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.6.6_1779628504135_0.6453711717261366","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.6.7":{"name":"signalk-nmea2000-emitter-cannon","version":"1.6.7","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.6.7","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"d0e809a2e7781291841e418d078d34c1300b1dad","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.6.7.tgz","fileCount":21,"integrity":"sha512-uDZ3Ei6VYhVwJOVk8lKJU++ZfKxuqz0cVQT3V94L41nNowbqzmXdQEAxAn1sw23GJ0tkZS527aqqmH+qvwDQuQ==","signatures":[{"sig":"MEUCIQDlzojQdeTsC3jdYgn9EhX/SW5SuLNxV7ZvUkMmHLKKXQIgcyP1EKb68Yt9fovvpLaWW5t3ekk2Uqqk5hl4eQVjceM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.6.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1309171},"main":"dist/index.mjs","engines":{"node":">=22.12"},"gitHead":"e8249287247de0e149541917621c83fbea5e4062","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"node scripts/clean.mjs","format":"biome format src/ --write","prepack":"npm run build","prepare":"husky","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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.mjs --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-openrouter-companion"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.8","description":"Signal K plugin that converts Signal K deltas to Garmin-aligned NMEA 2000 PGNs","directories":{},"lint-staged":{"*.json":["biome format --write --no-errors-on-unmatched"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.22.3","dependencies":{"rxjs":"^7.8.2","@sinclair/typebox":"^0.34.49","@signalk/server-api":"^2.24.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.28.0","express":"^5.2.1","webpack":"^5.106.2","react-dom":"^19.2.6","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/node":"^25.7.0","lint-staged":"^17.0.4","webpack-cli":"^7.0.2","@types/react":"^19.2.14","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.15","@types/express":"^5.0.6","signalk-server":"^2.27.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@canboat/canboatjs":"^3.18.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.28.5","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.28.5"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.6.7_1780061700093_0.25559774620257425","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.6.8":{"name":"signalk-nmea2000-emitter-cannon","version":"1.6.8","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.6.8","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"1ffd7f7db31e9633e8c74f69a6fef4187af8c09d","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.6.8.tgz","fileCount":21,"integrity":"sha512-JEtZQmQ4Gf4nDdMrSUWaPbt0WEyJZnRaBXZZYN4zlL85MzP+Ozg6oRuhK4FCpvBtf5WddHzCFkmw2PdJqK79hQ==","signatures":[{"sig":"MEQCIFHBSNZYO0W/4g7KCX/DFuNG3KMyzcGnvXc2DcPBw8u7AiA2v/uNDzuu1SvA0jIZiTjcIabcpF3Xo155dwxDy1tp1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.6.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1151185},"main":"dist/index.mjs","engines":{"node":">=22.12"},"gitHead":"e5f36629430fd602d2b41d32ae11074c8782f8d4","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"node scripts/clean.mjs","hooks":"husky","format":"biome format src/ --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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.mjs --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-openrouter-companion"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.8","description":"Signal K plugin that converts Signal K deltas to Garmin-aligned NMEA 2000 PGNs","directories":{},"lint-staged":{"*.json":["biome format --write --no-errors-on-unmatched"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.22.3","dependencies":{"rxjs":"^7.8.2","@sinclair/typebox":"^0.34.49"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.28.0","express":"^5.2.1","webpack":"^5.107.2","react-dom":"^19.2.6","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.7","@types/node":"^25.7.0","lint-staged":"^17.0.4","webpack-cli":"^7.0.3","@types/react":"^19.2.14","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.16","@types/express":"^5.0.6","signalk-server":"^2.27.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@canboat/canboatjs":"^3.20.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.29.7","@signalk/server-api":"^2.25.0","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.29.7"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.6.8_1780068032659_0.09281850381174062","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.7.0":{"name":"signalk-nmea2000-emitter-cannon","version":"1.7.0","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.7.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"3965d5a618999ad00ad7db07c37b056595e45dd3","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.7.0.tgz","fileCount":21,"integrity":"sha512-+Z0jXSHMMKIs9+OTlMQZOye6n0d/jKGAEGdw86tb82x2H1qQFUSm+LRDXNYLamRzywuEu8xkc+GhDOmj9h/ZgQ==","signatures":[{"sig":"MEQCIDdeWq0pT40meqrU6tYK7NaUz/KaNgS3hafn9R1Uf5TsAiBug+Api5DYmg9CigDpgWXBHTAHLlty8uCUDw0caeHWXg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1157466},"main":"dist/index.mjs","engines":{"node":">=22.12"},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"0379ffa9bb5ba1e9982bdc07bb87de8199cc58bc","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"node scripts/clean.mjs","hooks":"husky","format":"biome format src/ --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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.mjs --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-openrouter-companion","signalk-crows-nest"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.8","description":"Signal K plugin that converts Signal K deltas to Garmin-aligned NMEA 2000 PGNs","directories":{},"lint-staged":{"*.json":["biome format --write --no-errors-on-unmatched"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.22.3","dependencies":{"rxjs":"^7.8.2","@sinclair/typebox":"^0.34.49"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","sharp":"^0.34.5","vitest":"^4.0.17","esbuild":"^0.28.0","express":"^5.2.1","webpack":"^5.107.2","react-dom":"^19.2.6","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.7","@types/node":"^25.7.0","lint-staged":"^17.0.4","webpack-cli":"^7.0.3","@types/react":"^19.2.14","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.16","@types/express":"^5.0.6","signalk-server":"^2.27.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@canboat/canboatjs":"^3.20.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.29.7","@signalk/server-api":"^2.25.0","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.29.7"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.7.0_1780188398249_0.32403774910100935","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.7.1":{"name":"signalk-nmea2000-emitter-cannon","version":"1.7.1","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.7.1","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"75f4fe4d6b5820c91634883d4adda7ccd76b5061","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.7.1.tgz","fileCount":21,"integrity":"sha512-dcufv5CW3vAei3KXL60mvdqg0tRMsUJCciK5WO5lryG7QLgN2U0y/aa3+5kRzAgrb1mtBG+cnHW/psEHoTYOfA==","signatures":[{"sig":"MEUCIQCIu3Xi/BX3n8iv7xsaEnOSAJXFbApMJWrTac/wB/t62QIgfs2R+FDcEWrd67bje9SqDwR1gk0cEah9toHTaQFHYJ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1218577},"main":"dist/index.mjs","engines":{"node":">=22.12"},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"2b96961ab33088c9f6bd83fa55f17a465e2c0a35","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"node scripts/clean.mjs","hooks":"husky","format":"biome format src/ --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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.mjs --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-openrouter-companion","signalk-crows-nest"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.8","description":"Signal K plugin that converts Signal K deltas to Garmin-aligned NMEA 2000 PGNs","directories":{},"lint-staged":{"*.json":["biome format --write --no-errors-on-unmatched"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.22.3","dependencies":{"rxjs":"^7.8.2","@sinclair/typebox":"^0.34.49"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","husky":"^9.1.7","react":"^19.2.6","sharp":"^0.35.0","vitest":"^4.0.17","esbuild":"^0.28.0","express":"^5.2.1","webpack":"^5.107.2","react-dom":"^19.2.6","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.7","@types/node":"^25.7.0","lint-staged":"^17.0.4","webpack-cli":"^7.0.3","@types/react":"^19.2.14","babel-loader":"^10.1.1","@biomejs/biome":"^2.4.16","@types/express":"^5.0.6","signalk-server":"^2.27.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@canboat/canboatjs":"^3.20.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.29.7","@signalk/server-api":"^2.25.0","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.29.7"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.7.1_1781123801486_0.1581562884140877","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.7.2":{"name":"signalk-nmea2000-emitter-cannon","version":"1.7.2","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.7.2","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"ec01ff90c42ea888ef81a1f1984781223bf4d482","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.7.2.tgz","fileCount":21,"integrity":"sha512-eEXNv5FP9oWbgoVVwMaO+Ga2E6OTbPyemQhnxmy/ITRlh5z3uVo9CX0GWKdyakzjQkQfrKR8EQEIzja4VfcgGA==","signatures":[{"sig":"MEYCIQDss4b74lWpg2tFmkuDlBRAtGm23RvpG/jC1rGGkUhO9gIhAJ4XUCtgJr0xT9g6mucpSgRsbL+EzE6RCZjDNBvDQWjN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1221933},"main":"dist/index.mjs","engines":{"node":">=22.12"},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"c4dad7d311b9c76c7d6be6afc9f94b59adfd291a","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"node scripts/clean.mjs","hooks":"husky","format":"biome format src/ --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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.mjs --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-openrouter-companion","signalk-crows-nest"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.8","description":"Signal K plugin that converts Signal K deltas to Garmin-aligned NMEA 2000 PGNs","directories":{},"lint-staged":{"*.json":["biome format --write --no-errors-on-unmatched"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.22.3","dependencies":{"rxjs":"^7.8.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","husky":"^9.1.7","react":"^19.2.7","sharp":"^0.35.2","vitest":"^4.0.17","esbuild":"^0.28.1","express":"^5.2.1","webpack":"^5.107.2","react-dom":"^19.2.7","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.7","@types/node":"^26.0.0","lint-staged":"^17.0.8","webpack-cli":"^7.0.3","@types/react":"^19.2.17","babel-loader":"^10.1.1","@biomejs/biome":"^2.5.0","@types/express":"^5.0.6","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@sinclair/typebox":"^0.34.49","@canboat/canboatjs":"^3.20.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.29.7","@signalk/server-api":"^2.28.0","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.29.7"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.7.2_1782099692112_0.7324902755079754","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.7.3":{"name":"signalk-nmea2000-emitter-cannon","version":"1.7.3","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.7.3","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"9017dfb356db7d3cd8e13e88ee17adc19cca713e","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.7.3.tgz","fileCount":21,"integrity":"sha512-A1rw75nd3h98tOIJxHcu7j/WLOzgp7gnEKIaNjzanyl72xU++7iyS1+3oGPnrkDLBH7XasCY7xIV/YHrZNJHwg==","signatures":[{"sig":"MEYCIQDKSmxB9EAEVJrM17q3UNpTcd5nr8ojGkLg3KIPvKzLZwIhAMFRF9l5l8Xe4FM43uiw+9EHoLLMyxjW8MFjQhLxMEkR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.7.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1223734},"main":"dist/index.mjs","engines":{"node":">=22.12"},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"edc1c3e8bf832ce0e0e73cb7dcfc1dc144b4d523","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"node scripts/clean.mjs","hooks":"husky","format":"biome format src/ --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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.mjs --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-openrouter-companion","signalk-crows-nest"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.8","description":"Signal K plugin that converts Signal K deltas to Garmin-aligned NMEA 2000 PGNs","directories":{},"lint-staged":{"*.json":["biome format --write --no-errors-on-unmatched"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.22.3","dependencies":{"rxjs":"^7.8.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","husky":"^9.1.7","react":"^19.2.7","sharp":"^0.35.2","vitest":"^4.0.17","esbuild":"^0.28.1","express":"^5.2.1","webpack":"^5.107.2","react-dom":"^19.2.7","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.7","@types/node":"^26.0.0","lint-staged":"^17.0.8","webpack-cli":"^7.0.3","@types/react":"^19.2.17","babel-loader":"^10.1.1","@biomejs/biome":"^2.5.0","@types/express":"^5.0.6","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@sinclair/typebox":"^0.34.49","@canboat/canboatjs":"^3.20.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.29.7","@signalk/server-api":"^2.28.0","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.29.7"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.7.3_1782165125822_0.09666568372224416","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.8.0":{"name":"signalk-nmea2000-emitter-cannon","version":"1.8.0","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.8.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"9bd0f916726794a0ece5bc9a8a8014dcc261596e","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.8.0.tgz","fileCount":21,"integrity":"sha512-fBSldwAwtVhw/W/wrx7Vir4r+8Sv9Cu2isNVpSO2L1eEMBJ0bPcxO0LCEbiEFe1/Qw78CwC1Ay3RENajBLKklw==","signatures":[{"sig":"MEYCIQD/iNmV19NqplBpjGN3uDp9FsrQlxwLk22V9ViLSKw0+QIhAIjUq3IAYulimMNjNbcVmTX/BEra3aJ3TU3hZcVvuPZP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1225115},"main":"dist/index.mjs","engines":{"node":">=22.12"},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"81276f639e73ff633c28ef8cbdfc18f6a8b9e6ed","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"node scripts/clean.mjs","hooks":"husky","format":"biome format src/ --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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.mjs --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-openrouter-companion","signalk-crows-nest"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.8","description":"Signal K plugin that converts Signal K deltas to Garmin-aligned NMEA 2000 PGNs","directories":{},"lint-staged":{"*.json":["biome format --write --no-errors-on-unmatched"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.22.3","dependencies":{"rxjs":"^7.8.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","husky":"^9.1.7","react":"^19.2.7","sharp":"^0.35.2","vitest":"^4.0.17","esbuild":"^0.28.1","express":"^5.2.1","webpack":"^5.107.2","react-dom":"^19.2.7","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.7","@types/node":"^26.0.0","lint-staged":"^17.0.8","webpack-cli":"^7.0.3","@types/react":"^19.2.17","babel-loader":"^10.1.1","@biomejs/biome":"^2.5.0","@types/express":"^5.0.6","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@sinclair/typebox":"^0.34.49","@canboat/canboatjs":"^3.20.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.29.7","@signalk/server-api":"^2.28.0","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.29.7"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.8.0_1782250987731_0.40022251304302725","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.8.1":{"name":"signalk-nmea2000-emitter-cannon","version":"1.8.1","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.8.1","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"3f5b53123dc8ed6dca881c3d1bd1a363873bb7bf","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.8.1.tgz","fileCount":21,"integrity":"sha512-yY5UbzncWaf70z0w4Jk7Q9U9Dju8zMiqUU82e62B5f1IYd6vvmDQnN77GMqRvHu1tKQJArj3Kmcyya9ogGxxcg==","signatures":[{"sig":"MEUCICdfmp1jv3SVI1hJ9b5mWqrokrFYnBsHk+DD28DRINH2AiEA4wzekKSzhELlHNHca0BI5kvHUemFUaA2iCqweqyJJls=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1235577},"main":"dist/index.mjs","engines":{"node":">=22.12"},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"39c057822ab45df1897e75c32cbcfc1d276ff81d","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"node scripts/clean.mjs","hooks":"husky","format":"biome format src/ --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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.mjs --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-openrouter-companion","signalk-crows-nest"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.8","description":"Signal K plugin that converts Signal K deltas to Garmin-aligned NMEA 2000 PGNs","directories":{},"lint-staged":{"*.json":["biome format --write --no-errors-on-unmatched"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.23.0","dependencies":{"rxjs":"^7.8.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","husky":"^9.1.7","react":"^19.2.7","sharp":"^0.35.2","vitest":"^4.0.17","esbuild":"^0.28.1","express":"^5.2.1","webpack":"^5.107.2","react-dom":"^19.2.7","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.7","@types/node":"^26.0.0","lint-staged":"^17.0.8","webpack-cli":"^7.0.3","@types/react":"^19.2.17","babel-loader":"^10.1.1","@biomejs/biome":"^2.5.0","@types/express":"^5.0.6","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@sinclair/typebox":"^0.34.49","@canboat/canboatjs":"^3.20.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.29.7","@signalk/server-api":"^2.28.0","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.29.7"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.8.1_1782585459689_0.4488149150462868","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.8.2":{"name":"signalk-nmea2000-emitter-cannon","version":"1.8.2","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.8.2","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"aa50878ec4708d5a8ef2853e13b054ea12e213f8","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.8.2.tgz","fileCount":21,"integrity":"sha512-WYsOd5NKEJgiQbwTi3PafWX7jMiGFgdbJUZM1Zud7tAgqKIZD9p0yL6U6sC0lnbC8gRFkiV/PUo63GxVPapa8Q==","signatures":[{"sig":"MEQCICdg9fwZUbdcvcwpujIECWg1TFUb/MytZ2K2sWb9EBd6AiBPrIw+GOkrQ3QPDgdbuGXACZ3mx5RVPWWbLZwMJ4ye7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1237014},"main":"dist/index.mjs","engines":{"node":">=22.12"},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"8a1d66c528edcbc3d5ae5e27c51b58ec3eda82f0","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"node scripts/clean.mjs","hooks":"husky","format":"biome format src/ --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","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.mjs --external:rxjs","test:coverage":"vitest --coverage","create-release":"gh release create v$npm_package_version --generate-notes"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-synthetic-values","signalk-crows-nest"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.8","description":"Signal K plugin that converts Signal K deltas to Garmin-aligned NMEA 2000 PGNs","directories":{},"lint-staged":{"*.json":["biome format --write --no-errors-on-unmatched"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.23.0","dependencies":{"rxjs":"^7.8.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","husky":"^9.1.7","react":"^19.2.7","sharp":"^0.35.2","vitest":"^4.0.17","esbuild":"^0.28.1","express":"^5.2.1","webpack":"^5.107.2","react-dom":"^19.2.7","supertest":"^7.2.2","@vitest/ui":"^4.0.17","typescript":"^6.0.3","@babel/core":"^7.29.7","@types/node":"^26.0.0","lint-staged":"^17.0.8","webpack-cli":"^7.0.3","@types/react":"^19.2.17","babel-loader":"^10.1.1","@biomejs/biome":"^2.5.0","@types/express":"^5.0.6","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.0","@sinclair/typebox":"^0.34.49","@canboat/canboatjs":"^3.20.0","@types/json-schema":"^7.0.15","@babel/preset-react":"^7.29.7","@signalk/server-api":"^2.28.0","@vitest/coverage-v8":"^4.1.4","@babel/preset-typescript":"^7.29.7"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.8.2_1782598430555_0.029677305346240024","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.9.0":{"name":"signalk-nmea2000-emitter-cannon","version":"1.9.0","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.9.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"7092ffef4788d72527c1e5279b52843a9114fdf8","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.9.0.tgz","fileCount":19,"integrity":"sha512-7o46JMSW0FHE10P82xsyj2n1vdg16NubSvII9Pbq4+/04p2/i7mbddD6hkyRgHovCK3WAbbyAQh/cjiPLLmZUw==","signatures":[{"sig":"MEUCIE9BIopT5fHAd+iBaasAXWADr1AJGoSTQs21SDBdWcAUAiEA2HNroyeHnoN9H4njEqLtKKtB8NP7wVmVl9Vfh3TpBRs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1168975},"main":"dist/index.mjs","engines":{"node":">=22.12"},"funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"8cf302e3571469d6488d4d88d1d1f8e3596d1eb9","scripts":{"lint":"biome lint src/","test":"vitest --run","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"biome check src/","clean":"node scripts/clean.mjs","hooks":"husky","format":"biome format src/ --write","release":"node scripts/release.mjs","test:ui":"vitest --ui","typecheck":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.mjs --external:rxjs","test:coverage":"vitest --coverage"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-synthetic-values","signalk-crows-nest"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"overrides":{"tmp":"^0.2.3","cookie":"^0.7.0","nanoid":"^3.3.8","semver":"^7.6.3","inquirer":"^10.0.0","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"_npmVersion":"10.9.8","description":"Signal K plugin that converts Signal K deltas to Garmin-aligned NMEA 2000 PGNs","directories":{},"lint-staged":{"*.json":["biome format --write --no-errors-on-unmatched"],"*.{ts,tsx}":["biome check --write"]},"_nodeVersion":"22.23.1","dependencies":{"rxjs":"^7.8.2"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","react":"^19.2.7","vitest":"^4.1.10","esbuild":"^0.28.1","express":"^5.2.1","webpack":"^5.108.4","react-dom":"^19.2.7","supertest":"^7.2.2","@vitest/ui":"^4.1.10","typescript":"^7.0.2","@babel/core":"^8.0.1","@types/node":"^26.1.1","lint-staged":"^17.0.8","webpack-cli":"^7.2.1","@types/react":"^19.2.17","babel-loader":"^10.1.1","@biomejs/biome":"^2.5.3","@types/express":"^5.0.6","@canboat/ts-pgns":"^1.11.18","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.1","@sinclair/typebox":"^0.34.52","@canboat/canboatjs":"^3.20.0","@babel/preset-react":"^8.0.1","@signalk/server-api":"^2.30.0","@vitest/coverage-v8":"^4.1.10","@babel/preset-typescript":"^8.0.1"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.9.0_1784061001653_0.8647865744886618","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.9.1":{"name":"signalk-nmea2000-emitter-cannon","version":"1.9.1","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.9.1","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"4602c63dca9d6a01d0a3e3e4d308a4b453b5574d","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.9.1.tgz","fileCount":18,"integrity":"sha512-s2qxT1FMZ+dHC6lmFfkpz+POCM7BveKsqq3py0pGcPqM3HNZrlAIZDSfayep1C0jh4S8AFummfX8xmUpvOT3CA==","signatures":[{"sig":"MEQCICLnwuX2Gb0KyNiB5fKTY/J0sNemfnyHJM5rvMGRPYBnAiBDON50WNebw3foNCq11qR+iZLi+6BA2V3WNLf2zj8CgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1147299},"main":"dist/index.mjs","type":"commonjs","_from":"file:artifacts/signalk-nmea2000-emitter-cannon-1.9.1.tgz","engines":{"node":">=22.18"},"exports":"./dist/index.mjs","funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"scripts":{"lint":"npm run lint:code && npm run lint:docs && npm run spellcheck","size":"size-limit","test":"vitest run","audit":"npm audit --audit-level=high && npm run audit:runtime","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","clean":"node scripts/clean.mjs","hooks":"git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-push","cruise":"depcruise src --config .dependency-cruiser.cjs","format":"biome format --write .","verify":"npm run verify:fast && npm run test:coverage && npm run build && npm run test:panel && npm run size","release":"node scripts/release.mjs","test:ui":"vitest --ui","ci:biome":"biome ci .","deadcode":"knip","lint:fix":"biome lint --write . && eslint . --fix --cache --cache-location .cache/eslint","lint:code":"biome lint . && eslint . --cache --cache-location .cache/eslint","lint:docs":"markdownlint-cli2 \"*.md\" \".github/*.md\" \"docs/*.md\"","typecheck":"npm run check","spellcheck":"cspell --no-progress --show-suggestions README.md CLAUDE.md \".github/**/*.{md,yml,yaml}\" \"docs/*.md\"","test:panel":"node scripts/check-panel-bundle.mjs","test:watch":"vitest","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","verify:fast":"npm run verify:commit && npm run check","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.mjs --external:rxjs","format:check":"biome format .","audit:runtime":"npm audit --omit=dev --audit-level=high","package:check":"publint --pack npm --strict && node scripts/check-package.mjs","test:coverage":"vitest run --coverage","verify:commit":"npm run ci:biome && npm run lint && npm run cruise && npm run deadcode","verify:release":"npm run verify && npm run package:check && npm run audit"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-synthetic-values","signalk-crows-nest"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"_resolved":"/home/runner/work/signalk-nmea2000-emitter-cannon/signalk-nmea2000-emitter-cannon/artifacts/signalk-nmea2000-emitter-cannon-1.9.1.tgz","_integrity":"sha512-s2qxT1FMZ+dHC6lmFfkpz+POCM7BveKsqq3py0pGcPqM3HNZrlAIZDSfayep1C0jh4S8AFummfX8xmUpvOT3CA==","devEngines":{"runtime":{"name":"node","onFail":"error","version":">=22.18"},"packageManager":{"name":"npm","onFail":"error","version":">=10.9.8"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"size-limit":[{"name":"Plugin bundle","path":"dist/index.mjs","limit":"70 kB"},{"name":"Panel component chunks","path":"public/[0-9]*.js","limit":"30 kB"},{"name":"Panel federation runtime","path":"public/remoteEntry.js","limit":"4 kB"}],"_npmVersion":"11.18.0","description":"Signal K plugin that converts Signal K deltas to Garmin-aligned NMEA 2000 PGNs","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"es5-ext":false,"esbuild@0.28.1":true,"@canboat/canboatjs@3.20.0":true,"@serialport/bindings-cpp@11.0.3":true},"dependencies":{"rxjs":"^7.8.2"},"_hasShrinkwrap":false,"packageManager":"npm@11.18.0","devDependencies":{"knip":"6.27.0","react":"^19.2.7","cspell":"10.0.1","eslint":"10.7.0","vitest":"4.1.10","esbuild":"^0.28.1","express":"^5.2.1","publint":"0.3.21","webpack":"^5.108.4","react-dom":"^19.2.7","supertest":"^7.2.2","@vitest/ui":"4.1.10","size-limit":"12.1.0","typescript":"^6.0.3","@babel/core":"^8.0.1","@types/node":"24.13.3","webpack-cli":"^7.2.1","@types/react":"^19.2.17","babel-loader":"^10.1.1","@biomejs/biome":"2.5.4","@types/express":"^5.0.6","@canboat/ts-pgns":"^1.11.18","@size-limit/file":"12.1.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.1","@sinclair/typebox":"^0.34.52","markdownlint-cli2":"0.23.0","typescript-eslint":"8.64.0","@canboat/canboatjs":"^3.20.0","dependency-cruiser":"^18.1.0","@babel/preset-react":"^8.0.1","@signalk/server-api":"^2.30.0","@vitest/coverage-v8":"4.1.10","@babel/preset-typescript":"^8.0.1"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.9.1_1784149709157_0.4654325279665563","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.10.0":{"name":"signalk-nmea2000-emitter-cannon","version":"1.10.0","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.10.0","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"fb1c5f0e1bed2b15da5ac892a513de7697e8e663","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.10.0.tgz","fileCount":17,"integrity":"sha512-cQ0H8fQjMBmcSgYB3Tzr3TQLgXV5llNk2Yy3Dz6gkwxqygwN/ECZRZzu9dKB3ip2CbKV0kHZNMRVDNfzG+P74A==","signatures":[{"sig":"MEUCIQD7+GL2NTRahulh7dPWfRQoo7I7gLjcr34Sxs7S9Ht4LwIgaYS6UcJjXvmxtJLdOdSxe3FiZshvRrgesqxiQ4rNA4g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1238698},"main":"dist/index.mjs","type":"commonjs","_from":"file:artifacts/signalk-nmea2000-emitter-cannon-1.10.0.tgz","engines":{"node":">=22.18"},"exports":"./dist/index.mjs","funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"scripts":{"lint":"npm run lint:code && npm run lint:docs && npm run spellcheck","size":"size-limit","test":"vitest run","audit":"npm audit --audit-level=high && npm run audit:runtime","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","clean":"node scripts/clean.mjs","hooks":"git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-push","cruise":"depcruise src --config .dependency-cruiser.cjs","format":"biome format --write .","verify":"npm run verify:fast && npm run test:coverage && npm run build && npm run test:panel && npm run test:panel:browser && npm run size","release":"node scripts/release.mjs","test:ui":"vitest --ui","ci:biome":"biome ci .","deadcode":"knip","lint:fix":"biome lint --write . && eslint . --fix --cache --cache-location .cache/eslint","lint:code":"biome lint . && eslint . --cache --cache-location .cache/eslint","lint:docs":"markdownlint-cli2 \"*.md\" \".github/*.md\" \"docs/*.md\"","typecheck":"npm run check","spellcheck":"cspell --no-progress --show-suggestions README.md CLAUDE.md \".github/**/*.{md,yml,yaml}\" \"docs/*.md\"","test:panel":"node scripts/check-panel-bundle.mjs","test:watch":"vitest","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","verify:fast":"npm run verify:commit && npm run check","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.mjs --external:rxjs","format:check":"biome format .","audit:runtime":"npm audit --omit=dev --audit-level=high","package:check":"publint --pack npm --strict && node scripts/check-package.mjs","test:coverage":"vitest run --coverage","verify:commit":"npm run ci:biome && npm run lint && npm run cruise && npm run deadcode","verify:release":"npm run verify && npm run package:check && npm run audit","test:panel:browser":"node scripts/check-panel-browser.mjs"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-synthetic-values","signalk-crows-nest"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"_resolved":"/home/runner/work/signalk-nmea2000-emitter-cannon/signalk-nmea2000-emitter-cannon/artifacts/signalk-nmea2000-emitter-cannon-1.10.0.tgz","_integrity":"sha512-cQ0H8fQjMBmcSgYB3Tzr3TQLgXV5llNk2Yy3Dz6gkwxqygwN/ECZRZzu9dKB3ip2CbKV0kHZNMRVDNfzG+P74A==","devEngines":{"runtime":{"name":"node","onFail":"error","version":">=22.18"},"packageManager":{"name":"npm","onFail":"error","version":">=10.9.8"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"size-limit":[{"name":"Plugin bundle","path":"dist/index.mjs","limit":"70 kB"},{"name":"Panel component chunks","path":"public/[0-9]*.js","limit":"30.5 kB"},{"name":"Panel federation runtime","path":"public/remoteEntry.js","limit":"4 kB"}],"_npmVersion":"11.18.0","description":"Signal K plugin that converts Signal K deltas to Canboat-validated NMEA 2000 PGNs","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"es5-ext":false,"esbuild@0.28.1":true,"@canboat/canboatjs@3.20.0":true,"@serialport/bindings-cpp@11.0.3":true},"dependencies":{"rxjs":"^7.8.2"},"_hasShrinkwrap":false,"packageManager":"npm@11.18.0","devDependencies":{"knip":"6.27.0","react":"^19.2.7","cspell":"10.0.1","eslint":"10.7.0","vitest":"4.1.10","esbuild":"^0.28.1","express":"^5.2.1","publint":"0.3.21","webpack":"^5.108.4","react-dom":"^19.2.7","supertest":"^7.2.2","@vitest/ui":"4.1.10","size-limit":"12.1.0","typescript":"^6.0.3","@babel/core":"^8.0.1","@types/node":"24.13.3","webpack-cli":"^7.2.1","@types/react":"^19.2.17","babel-loader":"^10.1.1","@biomejs/biome":"2.5.4","@types/express":"^5.0.6","@canboat/ts-pgns":"^1.11.18","@playwright/test":"1.61.1","@size-limit/file":"12.1.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.1","@sinclair/typebox":"^0.34.52","markdownlint-cli2":"0.23.1","typescript-eslint":"8.64.0","@canboat/canboatjs":"^3.20.0","dependency-cruiser":"^18.1.0","@babel/preset-react":"^8.0.1","@signalk/server-api":"^2.30.0","@vitest/coverage-v8":"4.1.10","signalk-nearlcrews-ui":"0.3.0","@babel/preset-typescript":"^8.0.1"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.10.0_1784566580104_0.728505611932476","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.10.1":{"name":"signalk-nmea2000-emitter-cannon","version":"1.10.1","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.10.1","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"9911758eeacbe6b2d466fc779e319e9ce04044cb","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.10.1.tgz","fileCount":17,"integrity":"sha512-ZDinN+OXBtD8v4e1vmSWjQawptCi6LHJDVsj8Y7y/1tjwRNPHIGJxRQx5k2pWczR12kSeg1vJOkJcXv6gl3UHg==","signatures":[{"sig":"MEQCIClrec+mI+eqejKQULqF8LsQrvA+CZo2iLi74D28zzP9AiAV5HEf+YGjh/xe7dxJAfcfnKGCURJubLh+MhY29obQNA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1242768},"main":"dist/index.mjs","type":"commonjs","_from":"file:artifacts/signalk-nmea2000-emitter-cannon-1.10.1.tgz","engines":{"node":">=22.18"},"exports":"./dist/index.mjs","funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"scripts":{"lint":"npm run lint:code && npm run lint:docs && npm run spellcheck","size":"size-limit","test":"vitest run","audit":"npm audit --audit-level=high && npm run audit:runtime","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","clean":"node scripts/clean.mjs","hooks":"git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-push","cruise":"depcruise src --config .dependency-cruiser.cjs","format":"biome format --write .","verify":"npm run verify:fast && npm run test:coverage && npm run build && npm run test:panel && npm run test:panel:browser && npm run size","release":"node scripts/release.mjs","test:ui":"vitest --ui","ci:biome":"biome ci .","deadcode":"knip","lint:fix":"biome lint --write . && eslint . --fix --cache --cache-location .cache/eslint","lint:code":"biome lint . && eslint . --cache --cache-location .cache/eslint","lint:docs":"markdownlint-cli2 \"*.md\" \".github/*.md\" \"docs/*.md\"","typecheck":"npm run check","spellcheck":"cspell --no-progress --show-suggestions README.md CLAUDE.md \".github/**/*.{md,yml,yaml}\" \"docs/*.md\"","test:panel":"node scripts/check-panel-bundle.mjs","test:watch":"vitest","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","verify:fast":"npm run verify:commit && npm run check","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.mjs --external:rxjs","format:check":"biome format .","audit:runtime":"npm audit --omit=dev --audit-level=high","package:check":"publint --pack npm --strict && node scripts/check-package.mjs","test:coverage":"vitest run --coverage","verify:commit":"npm run ci:biome && npm run lint && npm run cruise && npm run deadcode","verify:release":"npm run verify && npm run package:check && npm run audit","test:panel:browser":"node scripts/check-panel-browser.mjs"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-synthetic-values","signalk-crows-nest"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"_resolved":"/home/runner/work/signalk-nmea2000-emitter-cannon/signalk-nmea2000-emitter-cannon/artifacts/signalk-nmea2000-emitter-cannon-1.10.1.tgz","_integrity":"sha512-ZDinN+OXBtD8v4e1vmSWjQawptCi6LHJDVsj8Y7y/1tjwRNPHIGJxRQx5k2pWczR12kSeg1vJOkJcXv6gl3UHg==","devEngines":{"runtime":{"name":"node","onFail":"error","version":">=22.18"},"packageManager":{"name":"npm","onFail":"error","version":">=10.9.8"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"size-limit":[{"name":"Plugin bundle","path":"dist/index.mjs","limit":"70 kB"},{"name":"Panel component chunks","path":"public/[0-9]*.js","limit":"30.5 kB"},{"name":"Panel federation runtime","path":"public/remoteEntry.js","limit":"4 kB"}],"_npmVersion":"11.18.0","description":"Signal K plugin that converts Signal K deltas to Canboat-validated NMEA 2000 PGNs","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"es5-ext":false,"esbuild@0.28.1":true,"@canboat/canboatjs@3.20.0":true,"@serialport/bindings-cpp@11.0.3":true},"dependencies":{"rxjs":"^7.8.2"},"_hasShrinkwrap":false,"packageManager":"npm@11.18.0","devDependencies":{"knip":"6.27.0","react":"^19.2.7","cspell":"10.0.1","eslint":"10.7.0","vitest":"4.1.10","esbuild":"^0.28.1","express":"^5.2.1","publint":"0.3.21","webpack":"^5.108.4","react-dom":"^19.2.7","supertest":"^7.2.2","@vitest/ui":"4.1.10","size-limit":"12.1.0","typescript":"^6.0.3","@babel/core":"^8.0.1","@types/node":"24.13.3","webpack-cli":"^7.2.1","@types/react":"^19.2.17","babel-loader":"^10.1.1","@biomejs/biome":"2.5.4","@types/express":"^5.0.6","@canboat/ts-pgns":"^1.11.18","@playwright/test":"1.61.1","@size-limit/file":"12.1.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.1","@sinclair/typebox":"^0.34.52","markdownlint-cli2":"0.23.1","typescript-eslint":"8.65.0","@canboat/canboatjs":"^3.20.0","dependency-cruiser":"^18.1.0","@babel/preset-react":"^8.0.1","@signalk/server-api":"^2.30.0","@vitest/coverage-v8":"4.1.10","signalk-nearlcrews-ui":"0.3.0","@babel/preset-typescript":"^8.0.1"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.10.1_1784607128021_0.7586059792835749","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.10.2":{"name":"signalk-nmea2000-emitter-cannon","version":"1.10.2","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.10.2","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"201659439ca290a3719a3e672c03660f3bc1baa9","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.10.2.tgz","fileCount":17,"integrity":"sha512-kpTsVN8eRMmke1tAEo3sQfAp8LegnQyqQ6l4fKVevD8zqGKRqQPJ4VHFvVJeShefnNAC+yWChDiF4yQMYlfBlQ==","signatures":[{"sig":"MEYCIQCP69gR76Z3lPH2Jxza6WKC7d7kWBizDz1cGQhY7ab78wIhAPQ/mRaxQ5/JJw3sbAdbvztFA3g8Kx6tyQueF9lLnuRp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.10.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1243551},"main":"dist/index.mjs","type":"commonjs","_from":"file:artifacts/signalk-nmea2000-emitter-cannon-1.10.2.tgz","engines":{"node":">=22.18"},"exports":"./dist/index.mjs","funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"scripts":{"lint":"npm run lint:code && npm run lint:docs && npm run spellcheck","size":"size-limit","test":"vitest run","audit":"npm audit --audit-level=high && npm run audit:runtime","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","clean":"node scripts/clean.mjs","hooks":"git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-push","cruise":"depcruise src --config .dependency-cruiser.cjs","format":"biome format --write .","verify":"npm run verify:fast && npm run test:coverage && npm run build && npm run test:panel && npm run test:panel:browser && npm run size","release":"node scripts/release.mjs","test:ui":"vitest --ui","ci:biome":"biome ci .","deadcode":"knip","lint:fix":"biome lint --write . && eslint . --fix --cache --cache-location .cache/eslint","lint:code":"biome lint . && eslint . --cache --cache-location .cache/eslint","lint:docs":"markdownlint-cli2 \"*.md\" \".github/*.md\" \"docs/*.md\"","typecheck":"npm run check","spellcheck":"cspell --no-progress --show-suggestions README.md CLAUDE.md \".github/**/*.{md,yml,yaml}\" \"docs/*.md\"","test:panel":"node scripts/check-panel-bundle.mjs","test:watch":"vitest","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","verify:fast":"npm run verify:commit && npm run check","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.mjs --external:rxjs","format:check":"biome format .","audit:runtime":"npm audit --omit=dev --audit-level=high","package:check":"publint --pack npm --strict && node scripts/check-package.mjs","test:coverage":"vitest run --coverage","verify:commit":"npm run ci:biome && npm run lint && npm run cruise && npm run deadcode","verify:release":"npm run verify && npm run package:check && npm run audit","test:panel:browser":"node scripts/check-panel-browser.mjs"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-synthetic-values","signalk-crows-nest"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"_resolved":"/home/runner/work/signalk-nmea2000-emitter-cannon/signalk-nmea2000-emitter-cannon/artifacts/signalk-nmea2000-emitter-cannon-1.10.2.tgz","_integrity":"sha512-kpTsVN8eRMmke1tAEo3sQfAp8LegnQyqQ6l4fKVevD8zqGKRqQPJ4VHFvVJeShefnNAC+yWChDiF4yQMYlfBlQ==","devEngines":{"runtime":{"name":"node","onFail":"error","version":">=22.18"},"packageManager":{"name":"npm","onFail":"error","version":">=10.9.8"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"size-limit":[{"name":"Plugin bundle","path":"dist/index.mjs","limit":"70 kB"},{"name":"Panel component chunks","path":"public/[0-9]*.js","limit":"30.5 kB"},{"name":"Panel federation runtime","path":"public/remoteEntry.js","limit":"4 kB"}],"_npmVersion":"11.18.0","description":"Signal K plugin that converts Signal K deltas to Canboat-validated NMEA 2000 PGNs","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"es5-ext":false,"esbuild@0.28.1":true,"@canboat/canboatjs@3.20.0":true,"@serialport/bindings-cpp@11.0.3":true},"dependencies":{"rxjs":"^7.8.2"},"_hasShrinkwrap":false,"packageManager":"npm@11.18.0","devDependencies":{"knip":"6.27.0","react":"^19.2.7","cspell":"10.0.1","eslint":"10.7.0","vitest":"4.1.10","esbuild":"^0.28.1","express":"^5.2.1","publint":"0.3.21","webpack":"^5.108.4","react-dom":"^19.2.7","supertest":"^7.2.2","@vitest/ui":"4.1.10","size-limit":"12.1.0","typescript":"^6.0.3","@babel/core":"^8.0.1","@types/node":"24.13.3","webpack-cli":"^7.2.1","@types/react":"^19.2.17","babel-loader":"^10.1.1","@biomejs/biome":"2.5.4","@types/express":"^5.0.6","@canboat/ts-pgns":"^1.11.18","@playwright/test":"1.61.1","@size-limit/file":"12.1.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.1","@sinclair/typebox":"^0.34.52","markdownlint-cli2":"0.23.1","typescript-eslint":"8.65.0","@canboat/canboatjs":"^3.20.0","dependency-cruiser":"^18.1.0","@babel/preset-react":"^8.0.1","@signalk/server-api":"^2.30.0","@vitest/coverage-v8":"4.1.10","signalk-nearlcrews-ui":"0.3.0","@babel/preset-typescript":"^8.0.1"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.10.2_1784743651410_0.6921172667512343","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.10.3":{"name":"signalk-nmea2000-emitter-cannon","version":"1.10.3","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.10.3","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"9b8f1db3d946053613973f6f72436daab18ee106","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.10.3.tgz","fileCount":17,"integrity":"sha512-JuX9bMI07vIHqLZFZPZHLciYjfpG/RzmyD+PCpS7oPD5xx7QLGqqFNg//rwO/PYvr/yrY9Hd2GPQiP08DwjG2w==","signatures":[{"sig":"MEUCIFu/zqe2n9GXaZYPSAlPtwUWu9AHvDTzO5cV5eZXD9WDAiEA/ZdYORkbzo0sBMZTAnPzhgXM/P/luKrQ1mussZhoxgQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.10.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1342412},"main":"dist/index.mjs","type":"commonjs","_from":"file:artifacts/signalk-nmea2000-emitter-cannon-1.10.3.tgz","engines":{"node":">=22.18"},"exports":"./dist/index.mjs","funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"scripts":{"lint":"npm run lint:code && npm run lint:docs && npm run spellcheck","size":"size-limit","test":"vitest run","audit":"npm audit --audit-level=high && npm run audit:runtime","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","clean":"node scripts/clean.mjs","hooks":"git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-push","cruise":"depcruise src --config .dependency-cruiser.cjs","format":"biome format --write .","verify":"npm run verify:fast && npm run test:coverage && npm run build && npm run test:panel && npm run test:panel:browser && npm run size","release":"node scripts/release.mjs","test:ui":"vitest --ui","ci:biome":"biome ci .","deadcode":"knip","lint:fix":"biome lint --write . && eslint . --fix --cache --cache-location .cache/eslint","lint:code":"biome lint . && eslint . --cache --cache-location .cache/eslint","lint:docs":"markdownlint-cli2 \"*.md\" \".github/*.md\" \"docs/*.md\"","typecheck":"npm run check","spellcheck":"cspell --no-progress --show-suggestions README.md CLAUDE.md \".github/**/*.{md,yml,yaml}\" \"docs/*.md\"","test:panel":"node scripts/check-panel-bundle.mjs","test:watch":"vitest","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","screenshots":"npm run build:panel && node scripts/check-panel-browser.mjs --update-screenshots","verify:fast":"npm run verify:commit && npm run check","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.mjs --external:rxjs","format:check":"biome format .","audit:runtime":"npm audit --omit=dev --audit-level=high","package:check":"publint --pack npm --strict && node scripts/check-package.mjs","test:coverage":"vitest run --coverage","verify:commit":"npm run ci:biome && npm run lint && npm run cruise && npm run deadcode","verify:release":"npm run verify && npm run package:check && npm run audit","test:panel:browser":"node scripts/check-panel-browser.mjs"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-synthetic-values","signalk-crows-nest"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"_resolved":"/home/runner/work/signalk-nmea2000-emitter-cannon/signalk-nmea2000-emitter-cannon/artifacts/signalk-nmea2000-emitter-cannon-1.10.3.tgz","_integrity":"sha512-JuX9bMI07vIHqLZFZPZHLciYjfpG/RzmyD+PCpS7oPD5xx7QLGqqFNg//rwO/PYvr/yrY9Hd2GPQiP08DwjG2w==","devEngines":{"runtime":{"name":"node","onFail":"error","version":">=22.18"},"packageManager":{"name":"npm","onFail":"error","version":">=10.9.8"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"size-limit":[{"name":"Plugin bundle","path":"dist/index.mjs","limit":"70 kB"},{"name":"Panel component chunks","path":"public/[0-9]*.js","limit":"40 kB"},{"name":"Panel federation runtime","path":"public/remoteEntry.js","limit":"4 kB"}],"_npmVersion":"11.18.0","description":"Signal K plugin that converts Signal K deltas to Canboat-validated NMEA 2000 PGNs","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"es5-ext":false,"esbuild@0.28.1":true,"@canboat/canboatjs@3.20.0":true,"@serialport/bindings-cpp@11.0.3":true},"dependencies":{"rxjs":"^7.8.2"},"_hasShrinkwrap":false,"packageManager":"npm@11.18.0","devDependencies":{"knip":"6.27.0","react":"^19.2.7","cspell":"10.0.1","eslint":"10.7.0","vitest":"4.1.10","esbuild":"^0.28.1","express":"^5.2.1","publint":"0.3.21","webpack":"^5.108.4","react-dom":"^19.2.7","supertest":"^7.2.2","@vitest/ui":"4.1.10","size-limit":"12.1.0","typescript":"^6.0.3","@babel/core":"^8.0.1","@types/node":"24.13.3","webpack-cli":"^7.2.1","@types/react":"^19.2.17","babel-loader":"^10.1.1","@biomejs/biome":"2.5.4","@types/express":"^5.0.6","@canboat/ts-pgns":"^1.11.18","@playwright/test":"1.61.1","@size-limit/file":"12.1.0","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.1","@sinclair/typebox":"^0.34.52","markdownlint-cli2":"0.23.1","typescript-eslint":"8.65.0","@canboat/canboatjs":"^3.20.0","dependency-cruiser":"^18.1.0","@babel/preset-react":"^8.0.1","@signalk/server-api":"^2.30.0","@vitest/coverage-v8":"4.1.10","signalk-nearlcrews-ui":"0.3.0","@babel/preset-typescript":"^8.0.1"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.10.3_1784756003771_0.07925455889664224","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.10.4":{"name":"signalk-nmea2000-emitter-cannon","version":"1.10.4","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.10.4","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"a4c75ecabfe2589172ff9fb785d1f13f2efff97d","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.10.4.tgz","fileCount":17,"integrity":"sha512-RMSX1IlJr9PICDZITGmrLWpZUYqYTd+8IdSb/j21oYUpEHa9I+NjvkM6ybRSrgLK6aRjhKW33JWXJFXSZ/yf9A==","signatures":[{"sig":"MEYCIQDvGKJB+YKtZnN+MwhljGv1X/KjP/jlObBJoIyVXijXWQIhAMUdBAfvZ+rrvFxegLRTEgbHH1mR6C+aVn5eKELNSy1V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.10.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1345268},"main":"dist/index.mjs","type":"commonjs","_from":"file:artifacts/signalk-nmea2000-emitter-cannon-1.10.4.tgz","engines":{"node":">=22.22.2"},"exports":"./dist/index.mjs","funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"scripts":{"lint":"npm run lint:code && npm run lint:docs && npm run spellcheck","size":"size-limit","test":"vitest run","audit":"npm run audit:runtime && npm run audit:policy && npm run audit:dependencies","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","clean":"node scripts/clean.mjs","hooks":"git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-push","cruise":"depcruise src --config .dependency-cruiser.cjs","format":"biome format --write .","verify":"npm run verify:fast && npm run test:coverage && npm run build && npm run test:panel && npm run test:panel:browser && npm run size","release":"node scripts/release.mjs","test:ui":"vitest --ui","ci:biome":"biome ci .","deadcode":"knip","lint:fix":"biome lint --write . && eslint . --fix --cache --cache-location .cache/eslint","lint:code":"biome lint . && eslint . --cache --cache-location .cache/eslint","lint:docs":"markdownlint-cli2 \"*.md\" \".github/*.md\" \"docs/*.md\"","typecheck":"npm run check","spellcheck":"cspell --no-progress --show-suggestions README.md CLAUDE.md \".github/**/*.{md,yml,yaml}\" \"docs/*.md\"","test:panel":"node scripts/check-panel-bundle.mjs","test:watch":"vitest","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","screenshots":"npm run build:panel && node scripts/check-panel-browser.mjs --update-screenshots","verify:fast":"npm run verify:commit && npm run check","audit:policy":"node scripts/test-audit-policy.mjs","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.mjs --external:rxjs","format:check":"biome format .","audit:runtime":"npm audit --omit=dev --audit-level=high","package:check":"node scripts/test-package-report.mjs && publint --pack=false --strict && node scripts/check-package.mjs","test:coverage":"vitest run --coverage","verify:commit":"npm run ci:biome && npm run lint && npm run cruise && npm run deadcode","verify:release":"npm run verify && npm run package:check && npm run audit","audit:dependencies":"node scripts/check-audit.mjs","test:panel:browser":"node scripts/check-panel-browser.mjs"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-synthetic-values","signalk-crows-nest"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"_resolved":"/home/runner/work/signalk-nmea2000-emitter-cannon/signalk-nmea2000-emitter-cannon/artifacts/signalk-nmea2000-emitter-cannon-1.10.4.tgz","_integrity":"sha512-RMSX1IlJr9PICDZITGmrLWpZUYqYTd+8IdSb/j21oYUpEHa9I+NjvkM6ybRSrgLK6aRjhKW33JWXJFXSZ/yf9A==","devEngines":{"runtime":{"name":"node","onFail":"error","version":">=22.22.2"},"packageManager":{"name":"npm","onFail":"error","version":">=10.9.7"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"size-limit":[{"name":"Plugin bundle","path":"dist/index.mjs","limit":"70 kB"},{"name":"Panel component chunks","path":"public/[0-9]*.js","limit":"40 kB"},{"name":"Panel federation runtime","path":"public/remoteEntry.js","limit":"4 kB"}],"_npmVersion":"12.0.1","description":"Signal K plugin that converts Signal K deltas to Canboat-validated NMEA 2000 PGNs","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"es5-ext":false,"esbuild@0.28.1":true,"@canboat/canboatjs@3.20.0":true,"@serialport/bindings-cpp@11.0.3":true},"dependencies":{"rxjs":"^7.8.2"},"_hasShrinkwrap":false,"packageManager":"npm@12.0.1","devDependencies":{"knip":"6.29.0","react":"^19.2.8","cspell":"10.0.1","eslint":"10.8.0","vitest":"4.1.10","esbuild":"^0.28.1","express":"^5.2.1","publint":"0.3.22","webpack":"^5.109.0","react-dom":"^19.2.8","supertest":"^7.2.2","@vitest/ui":"4.1.10","size-limit":"13.0.1","typescript":"^6.0.3","@babel/core":"^8.0.1","@types/node":"22.20.1","webpack-cli":"^7.2.1","@types/react":"^19.2.17","babel-loader":"^10.1.1","@biomejs/biome":"2.5.5","@types/express":"^5.0.6","@canboat/ts-pgns":"^1.11.18","@playwright/test":"1.62.0","@size-limit/file":"13.0.1","@types/react-dom":"^19.2.3","@types/supertest":"^7.2.1","@sinclair/typebox":"^0.34.52","markdownlint-cli2":"0.23.2","typescript-eslint":"8.65.0","@canboat/canboatjs":"^3.20.0","dependency-cruiser":"^18.1.0","@babel/preset-react":"^8.0.1","@signalk/server-api":"^2.30.0","@vitest/coverage-v8":"4.1.10","signalk-nearlcrews-ui":"0.4.1","@babel/preset-typescript":"^8.0.1"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.10.4_1785175867978_0.5447979616623635","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.10.5":{"name":"signalk-nmea2000-emitter-cannon","version":"1.10.5","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.10.5","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"6d3fa8cc74c1a3f16d7db7a4957f6e839ab89a14","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.10.5.tgz","fileCount":17,"integrity":"sha512-pegFZABYE9wprLU+IAprUB+UCFCEGnzTzAmISe57INV3ZL16y1smWLGmJUieGsyyTY/wpxL7UlBHLV7mbPcwuQ==","signatures":[{"sig":"MEUCIQD/ZFsDdOs4NxqULq1lfu0fUYsLziLt3MS5Z1e6jU8ZCgIgX+Q8ABILYTrRl238hKHO8t/WxxFigsfjXQYzRYBRPKc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.10.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1262912},"main":"dist/index.mjs","type":"commonjs","_from":"file:artifacts/signalk-nmea2000-emitter-cannon-1.10.5.tgz","engines":{"node":">=22.22.2"},"exports":"./dist/index.mjs","funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"scripts":{"lint":"npm run lint:code && npm run lint:docs && npm run spellcheck","size":"size-limit","test":"vitest run","audit":"npm run audit:runtime && npm run audit:policy && npm run audit:full","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","clean":"node scripts/clean.mjs","hooks":"git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-push","cruise":"depcruise src --config .dependency-cruiser.cjs","format":"biome format --write .","verify":"npm run verify:fast && npm run test:coverage && npm run build && npm run test:panel && npm run test:panel:browser && npm run size","release":"node scripts/release.mjs","test:ui":"vitest --ui","ci:biome":"biome ci .","deadcode":"knip","lint:fix":"biome lint --write . && eslint . --fix --cache --cache-location .cache/eslint","lint:code":"biome lint . && eslint . --cache --cache-location .cache/eslint","lint:docs":"markdownlint-cli2 \"*.md\" \".github/*.md\" \"docs/*.md\"","typecheck":"npm run check","audit:full":"npm audit --json | node scripts/check-audit.mjs","spellcheck":"cspell --no-progress --show-suggestions README.md CLAUDE.md \".github/**/*.{md,yml,yaml}\" \"docs/*.md\"","test:panel":"node scripts/check-panel-bundle.mjs","test:watch":"vitest","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","screenshots":"npm run build:panel && node scripts/check-panel-browser.mjs --update-screenshots","verify:fast":"npm run verify:commit && npm run check","audit:policy":"node scripts/test-audit-policy.mjs","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --minify-syntax --minify-whitespace --outfile=dist/index.mjs --external:rxjs","ci:workflows":"node scripts/check-workflows.mjs","format:check":"biome format .","audit:runtime":"npm audit --omit=dev --audit-level=high","package:check":"node scripts/test-package-report.mjs && publint --pack=false --strict && node scripts/check-package.mjs","test:coverage":"vitest run --coverage","verify:commit":"npm run ci:biome && npm run lint && npm run ci:workflows && npm run cruise && npm run deadcode","verify:release":"npm run verify && npm run package:check && npm run audit","test:panel:browser":"node scripts/check-panel-browser.mjs"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-synthetic-values","signalk-crows-nest"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"_resolved":"/home/runner/work/signalk-nmea2000-emitter-cannon/signalk-nmea2000-emitter-cannon/artifacts/signalk-nmea2000-emitter-cannon-1.10.5.tgz","_integrity":"sha512-pegFZABYE9wprLU+IAprUB+UCFCEGnzTzAmISe57INV3ZL16y1smWLGmJUieGsyyTY/wpxL7UlBHLV7mbPcwuQ==","devEngines":{"runtime":{"name":"node","onFail":"error","version":">=22.22.2"},"packageManager":{"name":"npm","onFail":"error","version":">=10.9.7"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"size-limit":[{"name":"Plugin bundle","path":"dist/index.mjs","limit":"70 kB"},{"name":"Panel component chunks","path":"public/[0-9]*.js","limit":"46 kB"},{"name":"Panel federation runtime","path":"public/remoteEntry.js","limit":"4 kB"}],"_npmVersion":"12.0.1","description":"Signal K plugin that converts Signal K deltas to Canboat-validated NMEA 2000 PGNs","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"es5-ext":false,"esbuild@0.28.1":true,"@canboat/canboatjs@3.20.0":true,"@serialport/bindings-cpp@11.0.3":true},"dependencies":{"rxjs":"^7.8.2"},"_hasShrinkwrap":false,"packageManager":"npm@12.0.1","devDependencies":{"knip":"6.31.0","react":"^19.2.8","cspell":"10.0.1","eslint":"10.8.0","vitest":"4.1.10","esbuild":"^0.28.1","express":"^5.2.1","publint":"0.3.22","webpack":"^5.109.2","react-dom":"^19.2.8","supertest":"^7.2.2","@vitest/ui":"4.1.10","size-limit":"13.0.3","typescript":"^6.0.3","@babel/core":"^8.0.1","@types/node":"22.20.1","webpack-cli":"^7.2.2","@types/react":"^19.2.18","babel-loader":"^10.1.1","@biomejs/biome":"2.5.6","@types/express":"^5.0.6","@canboat/ts-pgns":"^1.11.18","@playwright/test":"1.62.1","@size-limit/file":"13.0.3","@types/react-dom":"^19.2.4","@types/supertest":"^7.2.1","@sinclair/typebox":"^0.34.52","markdownlint-cli2":"0.23.2","typescript-eslint":"8.65.0","@canboat/canboatjs":"^3.20.0","dependency-cruiser":"^18.1.1","@babel/preset-react":"^8.0.1","@signalk/server-api":"^2.30.0","@vitest/coverage-v8":"4.1.10","@axe-core/playwright":"4.12.1","signalk-nearlcrews-ui":"0.6.1","@babel/preset-typescript":"^8.0.1","minimizer-webpack-plugin":"5.6.1"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.10.5_1785721832417_0.1769761049847567","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.10.6":{"name":"signalk-nmea2000-emitter-cannon","version":"1.10.6","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.10.6","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"4d8e84ca692431aa214fdf17e875d1c127f0fa63","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.10.6.tgz","fileCount":17,"integrity":"sha512-7dcP3v3dXoaaMPcIBCJNAh+OmhnpNF/uR3Z7lmxoyoysOTjwILgYC7IqkkfW5b07zmG0QrlvyXgaLDu1rP1emA==","signatures":[{"sig":"MEUCIQCUdrq6gJCrH9fDNmLzR/1IEfCfCak7MkmwNo6ZudvmJQIgD9sPc21AYFYAGoJqVyhRN+KOtrmj3N45NU2oBL7FbDM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.10.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1264422},"main":"dist/index.mjs","type":"commonjs","_from":"file:artifacts/signalk-nmea2000-emitter-cannon-1.10.6.tgz","engines":{"node":">=22.22.2"},"exports":"./dist/index.mjs","funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"scripts":{"lint":"npm run lint:code && npm run lint:docs && npm run spellcheck","size":"size-limit","test":"vitest run","audit":"npm run audit:runtime && npm run audit:policy && npm run audit:full","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","clean":"node scripts/clean.mjs","hooks":"git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-push","cruise":"depcruise src --config .dependency-cruiser.cjs","format":"biome format --write .","verify":"npm run verify:fast && npm run test:coverage && npm run build && npm run test:panel && npm run test:panel:browser && npm run size","release":"node scripts/release.mjs","test:ui":"vitest --ui","ci:biome":"biome ci .","deadcode":"knip","lint:fix":"biome lint --write . && eslint . --fix --cache --cache-location .cache/eslint","lint:code":"biome lint . && eslint . --cache --cache-location .cache/eslint","lint:docs":"markdownlint-cli2 \"*.md\" \".github/*.md\" \"docs/*.md\"","typecheck":"npm run check","audit:full":"npm audit --json | node scripts/check-audit.mjs","spellcheck":"cspell --no-progress --show-suggestions README.md CLAUDE.md \".github/**/*.{md,yml,yaml}\" \"docs/*.md\"","test:panel":"node scripts/check-panel-bundle.mjs","test:watch":"vitest","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","screenshots":"npm run build:panel && node scripts/check-panel-browser.mjs --update-screenshots","verify:fast":"npm run verify:commit && npm run check","audit:policy":"node scripts/test-audit-policy.mjs","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --minify-syntax --minify-whitespace --outfile=dist/index.mjs --external:rxjs","ci:workflows":"node scripts/check-workflows.mjs","format:check":"biome format .","audit:runtime":"npm audit --omit=dev --audit-level=high","package:check":"node scripts/test-package-report.mjs && publint --pack=false --strict && node scripts/check-package.mjs","test:coverage":"vitest run --coverage","verify:commit":"npm run ci:biome && npm run lint && npm run ci:workflows && npm run cruise && npm run deadcode","verify:release":"npm run verify && npm run package:check && npm run audit","test:panel:browser":"node scripts/check-panel-browser.mjs"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-synthetic-values","signalk-crows-nest"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"_resolved":"/home/runner/work/signalk-nmea2000-emitter-cannon/signalk-nmea2000-emitter-cannon/artifacts/signalk-nmea2000-emitter-cannon-1.10.6.tgz","_integrity":"sha512-7dcP3v3dXoaaMPcIBCJNAh+OmhnpNF/uR3Z7lmxoyoysOTjwILgYC7IqkkfW5b07zmG0QrlvyXgaLDu1rP1emA==","devEngines":{"runtime":{"name":"node","onFail":"error","version":">=22.22.2"},"packageManager":{"name":"npm","onFail":"error","version":">=10.9.7"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"size-limit":[{"name":"Plugin bundle","path":"dist/index.mjs","limit":"70 kB"},{"name":"Panel component chunks","path":"public/[0-9]*.js","limit":"46 kB"},{"name":"Panel federation runtime","path":"public/remoteEntry.js","limit":"4 kB"}],"_npmVersion":"12.0.1","description":"Signal K plugin that converts Signal K deltas to Canboat-validated NMEA 2000 PGNs","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"es5-ext":false,"esbuild@0.28.1":true,"@canboat/canboatjs@3.20.0":true,"@serialport/bindings-cpp@11.0.3":true},"dependencies":{"rxjs":"^7.8.2"},"_hasShrinkwrap":false,"packageManager":"npm@12.0.1","devDependencies":{"knip":"6.31.0","react":"^19.2.8","cspell":"10.0.1","eslint":"10.8.0","vitest":"4.1.10","esbuild":"^0.28.1","express":"^5.2.1","publint":"0.3.23","webpack":"^5.109.2","react-dom":"^19.2.8","supertest":"^7.2.2","@vitest/ui":"4.1.10","size-limit":"13.0.3","typescript":"^6.0.3","@babel/core":"^8.0.1","@types/node":"22.20.1","webpack-cli":"^7.2.2","@types/react":"^19.2.18","babel-loader":"^10.1.1","@biomejs/biome":"2.5.6","@types/express":"^5.0.6","@canboat/ts-pgns":"^1.11.18","@playwright/test":"1.62.1","@size-limit/file":"13.0.3","@types/react-dom":"^19.2.4","@types/supertest":"^7.2.1","@sinclair/typebox":"^0.34.52","markdownlint-cli2":"0.23.2","typescript-eslint":"8.66.0","@canboat/canboatjs":"^3.20.0","dependency-cruiser":"^18.1.1","@babel/preset-react":"^8.0.1","@signalk/server-api":"^2.30.0","@vitest/coverage-v8":"4.1.10","@axe-core/playwright":"4.12.1","signalk-nearlcrews-ui":"0.6.2","@babel/preset-typescript":"^8.0.1","minimizer-webpack-plugin":"5.6.1"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.10.6_1785849925467_0.2817994578451528","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.10.7":{"name":"signalk-nmea2000-emitter-cannon","version":"1.10.7","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.10.7","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"f0de8eb3e23c8405ae34c9f98396acf3939b5c76","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.10.7.tgz","fileCount":17,"integrity":"sha512-3aw/xiR+E2LXLOx05OSiFoy1+/tc8cFnHeRXPmg3OESG+H4QORka1TMV8HXrLzsIsDOg72kM9sxaiUZmJm6HLQ==","signatures":[{"sig":"MEUCIA9iwvZpkbQrP+WSgEtUoPm0GAitGRPA+z5y+pozg78lAiEAt/QBKbKpGCHJ+N3NQCe0+L789smuX/VPVDrWULp6zJg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.10.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1219683},"main":"dist/index.mjs","type":"commonjs","_from":"file:artifacts/signalk-nmea2000-emitter-cannon-1.10.7.tgz","engines":{"node":">=22.22.2"},"exports":"./dist/index.mjs","funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"0804b64964b4ca08de8cff654d931641d924e0d0","scripts":{"lint":"npm run lint:code && npm run lint:docs && npm run spellcheck","size":"size-limit","test":"vitest run","audit":"npm run audit:runtime && npm run audit:policy && npm run audit:full","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","clean":"node scripts/clean.mjs","hooks":"git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-push","cruise":"depcruise src --config .dependency-cruiser.cjs","format":"biome format --write .","verify":"npm run verify:fast && npm run test:coverage && npm run build && npm run test:panel && npm run test:panel:browser && npm run size","release":"node scripts/release.mjs","test:ui":"vitest --ui","ci:biome":"biome ci .","deadcode":"knip","lint:fix":"biome lint --write . && eslint . --fix --cache --cache-location .cache/eslint","lint:code":"biome lint . && eslint . --cache --cache-location .cache/eslint","lint:docs":"markdownlint-cli2 \"*.md\" \".github/*.md\" \"docs/*.md\"","typecheck":"npm run check","audit:full":"npm audit --json | node scripts/check-audit.mjs","spellcheck":"cspell --no-progress --show-suggestions README.md CLAUDE.md \".github/**/*.{md,yml,yaml}\" \"docs/*.md\"","test:panel":"node scripts/check-panel-bundle.mjs","test:watch":"vitest","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","screenshots":"npm run build:panel && node scripts/check-panel-browser.mjs --update-screenshots","verify:fast":"npm run verify:commit && npm run check","audit:policy":"node scripts/test-audit-policy.mjs","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --minify-syntax --minify-whitespace --outfile=dist/index.mjs --external:rxjs","ci:workflows":"node scripts/check-workflows.mjs","format:check":"biome format .","pack:release":"node scripts/create-release-tarball.mjs","audit:runtime":"npm audit --omit=dev --audit-level=high","package:check":"node scripts/test-package-report.mjs && publint --pack=false --strict && node scripts/check-package.mjs","test:coverage":"vitest run --coverage","verify:commit":"npm run ci:biome && npm run lint && npm run ci:workflows && npm run cruise && npm run deadcode","verify:release":"npm run verify && npm run package:check && npm run audit","test:panel:browser":"node scripts/check-panel-browser.mjs"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-synthetic-values","signalk-crows-nest"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"_resolved":"/home/runner/work/signalk-nmea2000-emitter-cannon/signalk-nmea2000-emitter-cannon/artifacts/signalk-nmea2000-emitter-cannon-1.10.7.tgz","_integrity":"sha512-3aw/xiR+E2LXLOx05OSiFoy1+/tc8cFnHeRXPmg3OESG+H4QORka1TMV8HXrLzsIsDOg72kM9sxaiUZmJm6HLQ==","devEngines":{"runtime":{"name":"node","onFail":"error","version":"^22.22.2 || ^24.15.0 || ^26.0.0"},"packageManager":{"name":"npm","onFail":"error","version":">=10.9.7"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"size-limit":[{"name":"Plugin bundle","path":"dist/index.mjs","limit":"70 kB"},{"name":"Panel component chunks","path":"public/[0-9]*.js","limit":"48 kB"},{"name":"Panel federation runtime","path":"public/remoteEntry.js","limit":"4 kB"}],"_npmVersion":"12.0.2","description":"Signal K plugin that converts Signal K deltas to Canboat-validated NMEA 2000 PGNs","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"es5-ext":false,"esbuild@0.28.2":true,"@canboat/canboatjs@3.20.0":true,"@serialport/bindings-cpp@11.0.3":true},"dependencies":{"rxjs":"^7.8.2"},"_hasShrinkwrap":false,"packageManager":"npm@12.0.2","devDependencies":{"knip":"6.32.2","react":"^19.2.8","cspell":"10.0.1","eslint":"10.8.1","vitest":"4.1.10","esbuild":"^0.28.2","express":"^5.2.1","publint":"0.3.23","webpack":"^5.109.2","react-dom":"^19.2.8","supertest":"^7.2.2","@vitest/ui":"4.1.10","size-limit":"13.0.3","typescript":"^6.0.3","@babel/core":"^8.0.1","@types/node":"22.20.1","webpack-cli":"^7.2.2","@types/react":"^19.2.18","babel-loader":"^10.1.1","@biomejs/biome":"2.5.8","@types/express":"^5.0.6","@canboat/ts-pgns":"^1.11.18","@playwright/test":"1.62.1","@size-limit/file":"13.0.3","@types/react-dom":"^19.2.4","@types/supertest":"^7.2.1","@sinclair/typebox":"^0.34.52","markdownlint-cli2":"0.23.2","typescript-eslint":"8.67.0","@canboat/canboatjs":"^3.20.0","dependency-cruiser":"^18.2.0","@babel/preset-react":"^8.0.1","@signalk/server-api":"^2.31.0","@vitest/coverage-v8":"4.1.10","@axe-core/playwright":"4.13.0","signalk-nearlcrews-ui":"0.7.1","@babel/preset-typescript":"^8.0.1","minimizer-webpack-plugin":"5.6.1"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.10.7_1786564222647_0.6543310704651661","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.10.8":{"name":"signalk-nmea2000-emitter-cannon","version":"1.10.8","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.10.8","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"1505f043460025fb6d1bf2b1bbaa83f6c82a64b9","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.10.8.tgz","fileCount":18,"integrity":"sha512-wd9c7DgtVwtBJgT8iC2mvijHVinvGEFex3sWJIIoaegZkOrOPBk7GtjM5I8cuW9m0iFZz6/Cm2Nbvt5JherWUQ==","signatures":[{"sig":"MEYCIQCt5Nk5HGUSV6Ttqh+Pm8rWUSoHILAipJHkWF7QTXOu+gIhAMasPCn2fGguoV3Szm5Mwi0ZvjjKfysnN7TsOwSi9Uwq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.10.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1407154},"main":"dist/index.mjs","type":"commonjs","_from":"file:artifacts/signalk-nmea2000-emitter-cannon-1.10.8.tgz","engines":{"node":">=22.0.0"},"exports":"./dist/index.mjs","funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"c0e9bb2442b2e462abc091073ea81822f7c58397","scripts":{"lint":"npm run lint:code && npm run lint:docs && npm run spellcheck","size":"size-limit","test":"vitest run","audit":"npm run audit:runtime && npm run audit:policy && npm run audit:full","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","clean":"node scripts/clean.mjs","hooks":"git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-push","cruise":"depcruise src --config .dependency-cruiser.cjs","format":"biome format --write .","verify":"npm run verify:fast && npm run test:coverage && npm run build && npm run test:panel && npm run test:panel:browser && npm run size","release":"node scripts/release.mjs","test:ui":"vitest --ui","ci:biome":"biome ci .","deadcode":"knip","licenses":"node scripts/generate-third-party-notices.mjs","lint:fix":"biome lint --write . && eslint . --fix --cache --cache-location .cache/eslint","lint:code":"biome lint . && eslint . --cache --cache-location .cache/eslint","lint:docs":"markdownlint-cli2 \"*.md\" \".github/*.md\" \"docs/*.md\"","typecheck":"npm run check","audit:full":"npm audit --json | node scripts/check-audit.mjs","spellcheck":"cspell --no-progress --show-suggestions README.md CLAUDE.md \".github/**/*.{md,yml,yaml}\" \"docs/*.md\"","test:panel":"node scripts/test-shared-ui-version.mjs && node scripts/check-panel-bundle.mjs","test:watch":"vitest","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","screenshots":"npm run build:panel && node scripts/check-panel-browser.mjs --update-screenshots","verify:fast":"npm run verify:commit && npm run check","audit:policy":"node scripts/test-audit-policy.mjs","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --minify-syntax --minify-whitespace --outfile=dist/index.mjs --external:rxjs","ci:workflows":"node scripts/check-workflows.mjs","format:check":"biome format .","pack:release":"node scripts/create-release-tarball.mjs","audit:runtime":"npm audit --omit=dev --audit-level=high","package:check":"node scripts/test-package-report.mjs && publint --pack=false --strict && node scripts/check-package.mjs && node scripts/generate-third-party-notices.mjs --check","test:coverage":"vitest run --coverage","verify:commit":"npm run ci:biome && npm run lint && npm run ci:workflows && npm run cruise && npm run deadcode","prepublishOnly":"npm run verify:release","verify:release":"npm run verify && npm run package:check && npm run audit","test:panel:browser":"node scripts/check-panel-browser.mjs"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-synthetic-values","signalk-crows-nest","signalk-openrouter-companion"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"_resolved":"/home/runner/work/signalk-nmea2000-emitter-cannon/signalk-nmea2000-emitter-cannon/artifacts/signalk-nmea2000-emitter-cannon-1.10.8.tgz","_integrity":"sha512-wd9c7DgtVwtBJgT8iC2mvijHVinvGEFex3sWJIIoaegZkOrOPBk7GtjM5I8cuW9m0iFZz6/Cm2Nbvt5JherWUQ==","devEngines":{"runtime":{"name":"node","onFail":"error","version":"^22.22.2 || ^24.15.0 || ^26.0.0"},"packageManager":{"name":"npm","onFail":"error","version":">=10.9.7"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"size-limit":[{"name":"Plugin bundle","path":"dist/index.mjs","limit":"70 kB"},{"name":"Panel component chunks","path":"public/[0-9]*.js","limit":"68 kB"},{"name":"Panel federation runtime","path":"public/remoteEntry.js","limit":"4 kB"}],"_npmVersion":"12.0.2","description":"Signal K plugin that converts Signal K deltas to Canboat-validated NMEA 2000 PGNs","directories":{},"_nodeVersion":"24.19.0","allowScripts":{"es5-ext":false,"esbuild@0.28.2":true,"@canboat/canboatjs@3.20.0":true,"@serialport/bindings-cpp@11.0.3":true},"dependencies":{"rxjs":"^7.8.2"},"_hasShrinkwrap":false,"packageManager":"npm@12.0.2","devDependencies":{"knip":"6.32.2","react":"^19.2.8","cspell":"10.1.0","eslint":"10.9.0","vitest":"4.1.11","esbuild":"^0.28.2","express":"^5.2.1","publint":"0.3.24","webpack":"^5.109.2","react-dom":"^19.2.8","supertest":"^7.2.2","@vitest/ui":"4.1.11","size-limit":"13.0.3","typescript":"^6.0.3","@babel/core":"^8.0.1","@types/node":"22.20.1","webpack-cli":"^7.2.2","@types/react":"^19.2.18","babel-loader":"^10.1.1","@biomejs/biome":"2.5.10","@types/express":"^5.0.6","@canboat/ts-pgns":"^1.11.18","@playwright/test":"1.62.1","@size-limit/file":"13.0.3","@types/react-dom":"^19.2.4","@types/supertest":"^7.2.1","@sinclair/typebox":"^0.34.52","markdownlint-cli2":"0.23.2","typescript-eslint":"8.67.0","@canboat/canboatjs":"^3.20.0","dependency-cruiser":"^18.2.0","@babel/preset-react":"^8.0.1","@signalk/server-api":"^2.31.0","@vitest/coverage-v8":"4.1.11","@axe-core/playwright":"4.13.0","signalk-nearlcrews-ui":"0.8.2","@babel/preset-typescript":"^8.0.1","minimizer-webpack-plugin":"5.6.1"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.10.8_1787544982387_0.10052083518072008","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.10.9":{"name":"signalk-nmea2000-emitter-cannon","version":"1.10.9","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","_id":"signalk-nmea2000-emitter-cannon@1.10.9","maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"79bdf5bf725c894360c70efd1ba90109aad2c4f4","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.10.9.tgz","fileCount":18,"integrity":"sha512-VE3kTrE0sJ/MFZX0j+3QcvAdewqXq/vh8aaEtklOOY61MwdisAUkAji3tn1V9+4mA2lQ8h3OhqBxmgc/JVbu7w==","signatures":[{"sig":"MEUCIGQtdC9jENF0ckEMa2N5q+DE+gAGiRRW67lvR6ZmDFPaAiEA8vIUg3kTPQ54fnNi6zq42TbHK1OC1IenQpMFin+gsAw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.10.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1406825},"main":"dist/index.mjs","type":"commonjs","_from":"file:artifacts/signalk-nmea2000-emitter-cannon-1.10.9.tgz","engines":{"node":">=22.0.0"},"exports":"./dist/index.mjs","funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"6239e6b758b4d255a9d12569623b2d0ad9135512","scripts":{"lint":"npm run lint:code && npm run lint:docs && npm run spellcheck","size":"size-limit","test":"vitest run","audit":"npm run audit:runtime && npm run audit:policy && npm run audit:full","build":"npm run clean && npm run build:plugin && npm run build:panel","check":"tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.panel.json && tsc --noEmit -p tsconfig.test.json","clean":"node scripts/clean.mjs","hooks":"git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-push","cruise":"depcruise src --config .dependency-cruiser.cjs","format":"biome format --write .","verify":"npm run verify:fast && npm run test:coverage && npm run build && npm run test:panel && npm run test:panel:browser && npm run size","release":"node scripts/release.mjs","test:ui":"vitest --ui","ci:biome":"biome ci .","deadcode":"knip","licenses":"node scripts/generate-third-party-notices.mjs","lint:fix":"biome lint --write . && eslint . --fix --cache --cache-location .cache/eslint","lint:code":"biome lint . && eslint . --cache --cache-location .cache/eslint","lint:docs":"markdownlint-cli2 \"*.md\" \".github/*.md\" \"docs/*.md\"","typecheck":"npm run check","audit:full":"npm audit --json | node scripts/check-audit.mjs","spellcheck":"cspell --no-progress --show-suggestions README.md CLAUDE.md \".github/**/*.{md,yml,yaml}\" \"docs/*.md\"","test:panel":"node scripts/test-shared-ui-version.mjs && node scripts/check-panel-bundle.mjs","test:watch":"vitest","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean && npm run build:plugin -- --sourcemap=linked --watch","screenshots":"npm run build:panel && node scripts/check-panel-browser.mjs --update-screenshots","verify:fast":"npm run verify:commit && npm run check","audit:policy":"node scripts/test-audit-policy.mjs","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --minify-syntax --minify-whitespace --outfile=dist/index.mjs --external:rxjs","ci:workflows":"node scripts/check-workflows.mjs","format:check":"biome format .","pack:release":"node scripts/create-release-tarball.mjs","audit:runtime":"npm audit --omit=dev --audit-level=high","package:check":"node scripts/test-package-report.mjs && publint --pack=false --strict && node scripts/check-package.mjs && node scripts/generate-third-party-notices.mjs --check","test:coverage":"vitest run --coverage","verify:commit":"npm run ci:biome && npm run lint && npm run ci:workflows && npm run cruise && npm run deadcode","prepublishOnly":"npm run verify:release","verify:release":"npm run verify && npm run package:check && npm run audit","test:panel:browser":"node scripts/check-panel-browser.mjs"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-synthetic-values","signalk-crows-nest","signalk-openrouter-companion"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"_resolved":"/home/runner/work/signalk-nmea2000-emitter-cannon/signalk-nmea2000-emitter-cannon/artifacts/signalk-nmea2000-emitter-cannon-1.10.9.tgz","_integrity":"sha512-VE3kTrE0sJ/MFZX0j+3QcvAdewqXq/vh8aaEtklOOY61MwdisAUkAji3tn1V9+4mA2lQ8h3OhqBxmgc/JVbu7w==","devEngines":{"runtime":{"name":"node","onFail":"error","version":"^22.22.2 || ^24.15.0 || ^26.0.0"},"packageManager":{"name":"npm","onFail":"error","version":">=10.9.7"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"size-limit":[{"name":"Plugin bundle","path":"dist/index.mjs","limit":"70 kB"},{"name":"Panel component chunks","path":"public/[0-9]*.js","limit":"68 kB"},{"name":"Panel federation runtime","path":"public/remoteEntry.js","limit":"4 kB"}],"_npmVersion":"12.0.2","description":"Signal K plugin that converts Signal K deltas to Canboat-validated NMEA 2000 PGNs","directories":{},"_nodeVersion":"24.19.0","allowScripts":{"es5-ext":false,"esbuild@0.28.2":true,"@canboat/canboatjs@3.20.0":true,"@serialport/bindings-cpp@11.0.3":true},"dependencies":{"rxjs":"^7.8.2"},"_hasShrinkwrap":false,"packageManager":"npm@12.0.2","devDependencies":{"knip":"6.32.2","react":"^19.2.8","cspell":"10.1.0","eslint":"10.9.0","vitest":"4.1.11","esbuild":"^0.28.2","express":"^5.2.1","publint":"0.3.24","webpack":"^5.109.2","react-dom":"^19.2.8","supertest":"^7.2.2","@vitest/ui":"4.1.11","size-limit":"13.0.3","typescript":"^6.0.3","@babel/core":"^8.0.1","@types/node":"22.20.1","webpack-cli":"^7.2.2","@types/react":"^19.2.18","babel-loader":"^10.1.1","@biomejs/biome":"2.5.10","@types/express":"^5.0.6","@canboat/ts-pgns":"^1.11.18","@playwright/test":"1.62.1","@size-limit/file":"13.0.3","@types/react-dom":"^19.2.4","@types/supertest":"^7.2.1","@sinclair/typebox":"^0.34.52","markdownlint-cli2":"0.23.2","typescript-eslint":"8.67.0","@canboat/canboatjs":"^3.20.0","dependency-cruiser":"^18.2.0","@babel/preset-react":"^8.0.1","@signalk/server-api":"^2.31.0","@vitest/coverage-v8":"4.1.11","@axe-core/playwright":"4.13.0","signalk-nearlcrews-ui":"0.8.2","@babel/preset-typescript":"^8.0.1","minimizer-webpack-plugin":"5.6.1"},"_npmOperationalInternal":{"tmp":"tmp/signalk-nmea2000-emitter-cannon_1.10.9_1787546414153_0.15977727262880626","host":"s3://npm-registry-packages-npm-production"},"signalk-plugin-enabled-by-default":false},"1.11.0":{"_id":"signalk-nmea2000-emitter-cannon@1.11.0","bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"dist":{"shasum":"17826620d5e1475640cce3b3e38e41201f2ae653","tarball":"https://registry.npmjs.org/signalk-nmea2000-emitter-cannon/-/signalk-nmea2000-emitter-cannon-1.11.0.tgz","fileCount":18,"integrity":"sha512-F4zxL2bIcx/HCz4ajtqQaoXkAEkd7fy2LDB8Wd2p50Nxzsx5poVbdUmO8RrH/mj1rguTNHEzhEgGw12S+6CT2Q==","signatures":[{"sig":"MEQCIDnGEaiUgoXPt9qV9xfsviv5mMzRTq3wy0b+dyyrHy/MAiBX+gELNzYuUwbU/gLw7EtCLSzvag1m0AM7ZU5gGQapQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQChqU2/39dn3kfBhAF6EvdVI8Ignc+7cjAF8GJX1KD7VAIgTn1QRd8GGX2D/8egdZxtt31ILTJ0P5lpL63BK/pBFkI="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/signalk-nmea2000-emitter-cannon@1.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1437731},"main":"dist/index.mjs","name":"signalk-nmea2000-emitter-cannon","type":"commonjs","_from":"file:artifacts/signalk-nmea2000-emitter-cannon-1.11.0.tgz","author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"engines":{"node":">=22.0.0"},"exports":"./dist/index.mjs","funding":{"url":"https://www.buymeacoffee.com/nearlcrews","type":"buymeacoffee"},"gitHead":"efe80c1fbd7605ee4d4c27b764168966c823004b","license":"Apache-2.0","scripts":{"lint":"npm run format:check && npm run lint:code && npm run lint:docs && npm run spellcheck","size":"size-limit","test":"vitest run","tsc7":"node node_modules/@typescript/native/bin/tsc","audit":"npm run audit:runtime && npm run audit:policy && npm run audit:full","build":"npm run clean:build && npm run build:plugin && npm run build:panel","check":"npm run -s tsc7 -- --noEmit -p tsconfig.json && npm run -s tsc7 -- --noEmit -p tsconfig.panel.json && npm run -s tsc7 -- --noEmit -p tsconfig.test.json","clean":"node scripts/clean.mjs","hooks":"git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-push","cruise":"depcruise src --config .dependency-cruiser.cjs","format":"biome format --write .","verify":"npm run verify:fast && npm run test:coverage && npm run build && npm run test:panel && npm run test:panel:browser && npm run size","release":"node scripts/release.mjs","test:ui":"vitest --ui","ci:biome":"biome ci .","deadcode":"knip","licenses":"node scripts/generate-third-party-notices.mjs","lint:fix":"biome lint --write . && eslint . --fix --cache --cache-location .cache/eslint","check:ts6":"tsc6 --noEmit -p tsconfig.json && tsc6 --noEmit -p tsconfig.panel.json && tsc6 --noEmit -p tsconfig.test.json","lint:code":"biome lint . && eslint . --cache --cache-location .cache/eslint","lint:docs":"markdownlint-cli2 \"*.md\" \".github/*.md\" \"docs/**/*.md\"","typecheck":"npm run check","audit:full":"npm audit --json | node scripts/check-audit.mjs","spellcheck":"cspell --no-progress --show-suggestions README.md CLAUDE.md \".github/**/*.{md,yml,yaml}\" \"docs/**/*.md\"","test:panel":"snui-check-consumer --root . --remote public/remoteEntry.js --baseline scripts/panel-size-baseline.json --runtime --expose ./PluginConfigurationPanel --expect \"Setup wizard\"","test:watch":"vitest","build:panel":"webpack --config webpack.config.cjs","build:watch":"npm run clean:build && npm run build:plugin -- --sourcemap=linked --watch","clean:build":"node scripts/clean.mjs --build","screenshots":"npm run build:panel && node scripts/check-panel-browser.mjs --update-screenshots","verify:fast":"npm run verify:commit && npm run check && npm run check:ts6","audit:policy":"node scripts/test-audit-policy.mjs","build:plugin":"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --minify-syntax --minify-whitespace --outfile=dist/index.mjs --external:rxjs","ci:workflows":"node scripts/check-workflows.mjs","format:check":"biome format .","pack:release":"node scripts/create-release-tarball.mjs","audit:runtime":"npm audit --omit=dev --audit-level=high","package:check":"node scripts/test-package-report.mjs && publint --pack=false --strict && node scripts/check-package.mjs && node scripts/generate-third-party-notices.mjs --check","test:coverage":"vitest run --coverage","verify:commit":"npm run ci:biome && npm run lint && npm run ci:workflows && npm run cruise && npm run deadcode","prepublishOnly":"npm run verify:release","verify:release":"npm run verify && npm run package:check && npm run audit","test:panel:browser":"node scripts/check-panel-browser.mjs"},"signalk":{"appIcon":"./assets/icons/icon-192.png","recommends":["signalk-virtual-weather-sensors","signalk-synthetic-values","signalk-crows-nest","signalk-openrouter-companion"],"displayName":"NMEA 2000 Emitter Cannon","screenshots":["assets/screenshots/config-panel.png","assets/screenshots/environment-conversions.png","assets/screenshots/config-advisor.png"]},"version":"1.11.0","_npmUser":{"name":"nearlcrews","email":"nearlcrewsx@proton.me"},"homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"_resolved":"/home/runner/work/signalk-nmea2000-emitter-cannon/signalk-nmea2000-emitter-cannon/artifacts/signalk-nmea2000-emitter-cannon-1.11.0.tgz","overrides":{"smol-toml":"1.8.0"},"_integrity":"sha512-F4zxL2bIcx/HCz4ajtqQaoXkAEkd7fy2LDB8Wd2p50Nxzsx5poVbdUmO8RrH/mj1rguTNHEzhEgGw12S+6CT2Q==","devEngines":{"runtime":{"name":"node","onFail":"error","version":"^22.22.2 || ^24.15.0 || ^26.0.0"},"packageManager":{"name":"npm","onFail":"error","version":">=10.9.7"}},"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"size-limit":[{"name":"Plugin bundle","path":"dist/index.mjs","limit":"70 kB"},{"gzip":true,"name":"Panel federation runtime","path":"public/remoteEntry.js","limit":"4 kB"}],"_npmVersion":"12.0.2","description":"Signal K plugin that converts Signal K deltas to Canboat-validated NMEA 2000 PGNs","directories":{},"maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"_nodeVersion":"24.20.0","allowScripts":{"es5-ext":false,"esbuild@0.28.2":true,"@canboat/canboatjs@3.20.0":true,"@serialport/bindings-cpp@11.0.3":true},"contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"dependencies":{"rxjs":"^7.8.2"},"_hasShrinkwrap":false,"packageManager":"npm@12.0.2","devDependencies":{"knip":"6.35.1","react":"^19.3.0","cspell":"10.3.1","eslint":"10.10.0","vitest":"5.0.0","esbuild":"^0.28.2","express":"^5.2.1","publint":"0.3.24","webpack":"^5.111.0","react-dom":"^19.3.0","supertest":"^7.2.2","@vitest/ui":"5.0.0","size-limit":"13.1.1","typescript":"npm:@typescript/typescript6@^6.0.2","@babel/core":"^8.0.1","@types/node":"22.20.2","webpack-cli":"^7.2.3","@types/react":"^19.3.0","babel-loader":"^10.1.1","@biomejs/biome":"2.5.13","@types/express":"^5.0.6","@canboat/ts-pgns":"^1.11.18","@playwright/test":"1.63.0","@size-limit/file":"13.1.1","@types/react-dom":"^19.3.0","@types/supertest":"^7.2.1","@sinclair/typebox":"^0.34.52","markdownlint-cli2":"0.23.2","typescript-eslint":"8.70.0","@canboat/canboatjs":"^3.20.0","@typescript/native":"npm:typescript@^7.0.2","dependency-cruiser":"^18.3.0","@babel/preset-react":"^8.0.1","@signalk/server-api":"^2.32.0","@vitest/coverage-v8":"5.0.0","@axe-core/playwright":"4.13.0","signalk-nearlcrews-ui":"0.11.1","@babel/preset-typescript":"^8.0.1","minimizer-webpack-plugin":"5.10.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/signalk-nmea2000-emitter-cannon_1.11.0_1789451637262_0.3920108806115554"},"signalk-plugin-enabled-by-default":false}},"time":{"created":"2025-10-11T19:03:11.455Z","modified":"2026-09-15T05:53:57.749Z","1.0.0":"2025-10-11T19:03:11.656Z","1.0.1":"2025-10-11T19:13:53.178Z","1.1.0":"2026-04-04T02:42:55.396Z","1.2.0":"2026-04-08T19:12:24.207Z","1.2.1":"2026-04-13T04:19:54.352Z","1.2.2":"2026-04-18T18:05:43.399Z","1.2.3":"2026-04-19T19:47:16.532Z","1.2.4":"2026-04-19T20:08:25.764Z","1.2.5":"2026-05-03T17:50:26.971Z","1.3.0":"2026-05-06T02:39:24.730Z","1.3.1":"2026-05-09T04:02:30.255Z","1.3.2":"2026-05-09T04:24:09.181Z","1.4.0":"2026-05-11T02:39:08.179Z","1.4.2":"2026-05-12T15:23:14.321Z","1.4.3":"2026-05-12T16:34:11.604Z","1.4.4":"2026-05-12T17:00:43.988Z","1.5.2":"2026-05-13T01:02:42.290Z","1.5.3":"2026-05-13T02:16:00.606Z","1.5.4":"2026-05-13T03:08:35.297Z","1.5.5":"2026-05-16T03:00:31.652Z","1.5.6":"2026-05-16T03:46:55.484Z","1.5.7":"2026-05-16T05:35:21.183Z","1.6.1":"2026-05-16T17:10:47.510Z","1.6.2":"2026-05-16T17:18:57.903Z","1.6.3":"2026-05-17T02:57:06.086Z","1.6.4":"2026-05-19T18:24:27.931Z","1.6.5":"2026-05-21T12:36:38.162Z","1.6.6":"2026-05-24T13:15:04.413Z","1.6.7":"2026-05-29T13:35:00.334Z","1.6.8":"2026-05-29T15:20:32.846Z","1.7.0":"2026-05-31T00:46:38.450Z","1.7.1":"2026-06-10T20:36:41.632Z","1.7.2":"2026-06-22T03:41:32.298Z","1.7.3":"2026-06-22T21:52:06.156Z","1.8.0":"2026-06-23T21:43:07.909Z","1.8.1":"2026-06-27T18:37:39.862Z","1.8.2":"2026-06-27T22:13:50.741Z","1.9.0":"2026-07-14T20:30:01.862Z","1.9.1":"2026-07-15T21:08:29.311Z","1.10.0":"2026-07-20T16:56:20.290Z","1.10.1":"2026-07-21T04:12:08.251Z","1.10.2":"2026-07-22T18:07:31.629Z","1.10.3":"2026-07-22T21:33:23.967Z","1.10.4":"2026-07-27T18:11:08.165Z","1.10.5":"2026-08-03T01:50:32.608Z","1.10.6":"2026-08-04T13:25:25.656Z","1.10.7":"2026-08-12T19:50:22.852Z","1.10.8":"2026-08-24T04:16:22.562Z","1.10.9":"2026-08-24T04:40:14.316Z","1.11.0":"2026-09-15T05:53:57.388Z"},"bugs":{"url":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues"},"author":{"url":"https://github.com/NearlCrews","name":"Nearl Crews","email":"NearlCrews@users.noreply.github.com"},"license":"Apache-2.0","homepage":"https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon#readme","keywords":["signalk-node-server-plugin","signalk-plugin-configurator","signalk-category-nmea-2000","signalk-category-ais","nmea2000","garmin","ais"],"repository":{"url":"git+https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git","type":"git"},"description":"Signal K plugin that converts Signal K deltas to Canboat-validated NMEA 2000 PGNs","contributors":[{"name":"Nearl Crews","email":"nearlcrewsx@proton.me"}],"maintainers":[{"name":"nearlcrews","email":"nearlcrewsx@proton.me"}],"readme":"# NMEA 2000 Emitter Cannon\n\n[![npm version](https://img.shields.io/npm/v/signalk-nmea2000-emitter-cannon.svg)](https://www.npmjs.com/package/signalk-nmea2000-emitter-cannon)\n[![npm downloads](https://img.shields.io/npm/dm/signalk-nmea2000-emitter-cannon.svg)](https://www.npmjs.com/package/signalk-nmea2000-emitter-cannon)\n[![CI](https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/actions/workflows/ci.yml/badge.svg)](https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/actions/workflows/ci.yml)\n[![Plugin CI](https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/actions/workflows/plugin-ci.yml/badge.svg)](https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/actions/workflows/plugin-ci.yml)\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/blob/main/LICENSE)\n[![node](https://img.shields.io/badge/node-%3E%3D22.0.0-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 [Signal K](https://signalk.org) plugin that converts Signal K deltas into\nNMEA 2000 messages: 82 configurable data conversions covering 60 data PGNs,\nplus the configurable PGN 126464 list broadcast, validated against Canboat definitions and\nreviewed against model-specific chartplotter receive lists.\n\n> Built on the foundation of [`signalk-to-nmea2000`](https://github.com/SignalK/signalk-to-nmea2000)\n> by Scott Bender and the Signal K community.\n\n## What's new in 1.11.0\n\n- **A direction a hair short of north is no longer dropped by the receiver.**\n  A value in the last 0.002 degrees below a full turn rounded past the ceiling\n  the receiving display enforces, so the display discarded the field: a compass\n  reading 359.999 degrees arrived as heading not available rather than as\n  north. It now clamps, moving the reading by at most 0.005 degrees. This\n  covers heading, course over ground, set, wind angle, the waypoint bearings,\n  and satellite azimuth. It is the one fix here that corrects a dropout on\n  correctly configured hardware.\n- **A reading that cannot fit its NMEA 2000 field no longer arrives as a\n  believable wrong number.** A wrapped value is worse than a missing one: the\n  receiving display has no way to tell it is wrong. Attitude, compass, and\n  leeway angles now wrap to the direction the wire can carry instead of\n  truncating to a different one, and an out-of-range rate of turn, heave,\n  rudder angle, depth, battery, solar, engine, transmission, or speed value is\n  left as not-available. A starboard turn no longer reaches the autopilot as a\n  port turn, a vessel dropping into a trough is no longer reported as rising, a\n  93 percent battery no longer reads as 84 percent, a shaft turning astern no\n  longer reports 14584 RPM, a shunt publishing milliamperes no longer turns a\n  23 A charge into a 3114 A discharge with no time remaining, and 700 m/s\n  through the water no longer reads as a believable 87 knots. A reading that\n  goes blank after this upgrade is one of these: the publisher is sending\n  something the field cannot carry, and the troubleshooting guide in the\n  repository's docs directory has the unit checklist. These guards catch a\n  value that wraps, not every unit mistake, so a wrong reading that still fits\n  its field is unchanged.\n- **The plugin tells you when NMEA 2000 output has no listener.** A disabled or\n  torn-down NMEA 2000 connection used to leave the status on \"Running\" while\n  every frame went nowhere. After a short run of undelivered writes the plugin\n  raises an error naming Server, Connections, and clears it as soon as one\n  frame gets through.\n- **A scheduled Config Advisor review runs only while the advisor is on.**\n  Switching the advisor off used to leave a saved review schedule armed, and a\n  scheduled review can enable conversions by itself, so an installation that\n  had tried the advisor and then switched it off could start transmitting PGNs\n  nobody approved with no one at the panel. A review set to use QuestDB history\n  but with no usable URL now says so instead of quietly reporting on live data\n  only.\n- **A configuration panel rebuilt on one shared component set.** The runtime\n  status table no longer re-renders behind the Configure view on every\n  keystroke, and a mapping table builds each column's path suggestions once per\n  render instead of once per cell, so editing a large table stays responsive.\n  The category tabs, the collapsible sections, the setup wizard, the mapping\n  tables, every number field, and the Save and Discard footer now come from the\n  shared `signalk-nearlcrews-ui` library, and the configure view has a real\n  heading outline from Quick presets through Conversions. The theme selector\n  moved to the foot of the panel and names what its two automatic choices\n  follow: Match Admin follows the Signal K Admin theme, and Match device\n  follows the operating system preference. Status text carries a glyph beside\n  its color rather than relying on hue, every field and group error leads with\n  a tone mark and a spoken tone word, a focused number field gives up focus\n  before a wheel or trackpad scroll can spin its value, Save and Discard keep\n  their place in the tab order while a validation error blocks saving, removing\n  a mapping-table row asks for confirmation in a labeled region beneath it\n  instead of the Remove button briefly renaming itself, and a render failure\n  offers Try again in place rather than replacing the plugin card with Signal K\n  Admin's generic unavailable notice.\n\nSee the [v1.11.0 changelog entry](https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/blob/main/CHANGELOG.md#v1110)\nand [full release history](https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/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 electrical data over a single API. NMEA 2000 Emitter Cannon\ncloses the loop in the other direction: it subscribes to the Signal K paths\nyour boat publishes and re-emits them as NMEA 2000 PGNs through the server's\nNMEA 2000 output, so chartplotters, instrument displays, and autopilots on\nthe bus see data that originates in Signal K (a weather plugin, a non-NMEA\nsensor, a computed value) as native bus traffic.\n\nEvery conversion is verified round-trip through the canboatjs encoder. Fields,\nranges, and enum values follow its bundled Canboat definitions, while transport\npriorities follow the current stable Canboat 7.1 database. It pairs well with sensor-side plugins such as\n[`signalk-virtual-weather-sensors`](https://github.com/NearlCrews/signalk-virtual-weather-sensors).\n\n## Features\n\n- **82 configurable data conversions emitting 60 data PGNs**, plus the plugin's\n  configurable PGN 126464 transmit-list broadcast at startup and every five\n  minutes. The list advertises only PGNs owned by this plugin.\n- **Chartplotter-oriented** PGN priorities, SID fields, temperature-source\n  values, and wind and bearing reference enums, with model-specific behavior\n  documented instead of assumed across a vendor's entire product line\n- **Reactive subscriptions** via RxJS 7.8 with debounced multi-key aggregation\n  and per-key freshness timeouts\n- **Source filtering** per conversion: keep the fixed Signal K schema path and\n  optionally choose a specific `$source` publisher, using consistent exact or\n  dot-prefix matching for stream, subscription, and whole-delta conversions\n- **Resend timers** for conversions whose values remain current, plus a global\n  default. Freshness checks are reapplied on every tick. Event-driven targets,\n  course data, timers, and fixed timestamps are never replayed as fresh data\n- **Config Advisor** (optional): reviews the Signal K paths your boat\n  publishes, recommends which conversions to enable or disable, and flags\n  enabled conversions whose pinned `$source` has gone stale (a renamed weather\n  provider or a re-enumerated sensor), with optional QuestDB history\n- **A React configuration panel** with dense one-line conversion rows, a\n  single-open inline editor, a compact sticky toolbar carrying catalog search\n  and live status, category tabs split into Modern and Legacy sections with\n  their own Enable all and Disable all controls, preset chips, a first-run\n  setup wizard, and shared `signalk-nearlcrews-ui` controls with five themes,\n  two of them automatic.\n- **NMEA 2000 echo guards** that use authoritative source metadata to reject\n  known bus-origin input instead of re-emitting it onto the same bus. Unknown\n  origins remain compatible, a numeric publisher suffix alone is not treated\n  as proof of NMEA 2000 origin, and conversions can narrowly declare a\n  different-PGN supporting input that is safe to consume from the bus\n- **Strict TypeScript**, an ESM plugin bundle, and RxJS as the only runtime\n  dependency\n- **Embedded canboatjs round-trip tests** on every conversion module, plus\n  advisor, lifecycle, panel, and protocol-boundary unit tests\n\n## Screenshots\n\n| Conversion config | Environment category | Config Advisor |\n| :---: | :---: | :---: |\n| ![Conversion catalog with compact rows and live emit counts](assets/screenshots/config-panel.png) | ![Environment category conversion rows](assets/screenshots/environment-conversions.png) | ![Config Advisor review controls](assets/screenshots/config-advisor.png) |\n\n## Requirements\n\n- [Signal K server](https://github.com/SignalK/signalk-server) 2.x. The React\n  config panel loads on every signalk-server 2.x admin UI.\n- A browser with native CSS `@scope` support: Chromium or Edge 118, Firefox\n  146, or Safari 17.4 and newer.\n- Node.js 22.0.0 or newer.\n- A supported NMEA 2000 gateway (for example an Actisense NGT-1 or a Yacht\n  Devices YDNR-02) connected so emitted messages reach the bus.\n\n## Installation\n\nInstall from the Signal K admin UI under **AppStore, then Available**, or\nfrom npm:\n\n```bash\ncd ~/.signalk\nnpm install signalk-nmea2000-emitter-cannon\n```\n\nFrom source:\n\n```bash\ngit clone https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git\ncd signalk-nmea2000-emitter-cannon\nnpm install\nnpm run build\nln -s \"$(pwd)\" ~/.signalk/node_modules/signalk-nmea2000-emitter-cannon\n```\n\n## Configuration\n\nIn the Signal K admin UI, open **Server, then Plugin Config**, find\n\"NMEA 2000 Emitter Cannon\", and enable the plugin. The plugin ships a React\nconfig panel that the Signal K admin loads via webpack 5 Module Federation.\nThe panel has these areas:\n\n1. **Sticky toolbar**: catalog search, a live status chip carrying the enabled\n   over total count and the NMEA 2000 output readiness, a stale-poll marker and\n   a jump-to-error button beside it, the Configure and Status toggle, and the\n   Setup wizard shortcut. It stays pinned as you scroll.\n2. **Quick presets** (collapsed by default): Basic navigation, Engine set, Full\n   AIS, Environmental, Raymarine. Click a chip to enable the tagged conversions\n   in one action; presets are additive.\n3. **Config Advisor** (optional, collapsed by default): reviews the Signal K\n   paths your boat publishes, recommends which conversions to enable or\n   disable, and flags enabled conversions whose pinned `$source` has gone\n   stale. Its settings sub-panel covers QuestDB history and a periodic review\n   schedule, each control with inline help.\n4. **Global settings** (collapsed by default): the resend interval in seconds,\n   the default cadence for every conversion whose own resend is 0. Default `5`;\n   set to `0` to disable global resend.\n5. **Category tabs** (Navigation, Engine, Electrical, Tanks, Environment, AIS,\n   Comms, System). Each category splits its conversions into a Modern section,\n   open by default, and a collapsed Legacy section holding the superseded ones,\n   listed as dense one-line rows. Each section has its own Enable all and\n   Disable all controls, so a bulk action never reaches the legacy conversions\n   unless you open that section. The toolbar's catalog search filters by title,\n   PGN number, and Signal K path across all categories; search results group by\n   category and carry no bulk controls.\n6. **Theme selector**: at the foot of the panel, below the conversions. It is\n   chrome over the panel rather than one of its settings, so it sits after\n   them, and the preference it writes is shared with the other Signal K\n   plugin panels built on the same controls. The choices are Match Admin,\n   Match device, Light, Dark, and a red-preserving Night mode. Match Admin\n   follows an explicit host theme and otherwise uses Light, while Match device\n   follows the operating-system color scheme.\n\nEach conversion row shows an enable checkbox, the title and PGN run, an error\nglyph, and a specific live state such as waiting for Signal K input, publisher\nfilter mismatch, input with no encodable output, or active emission. Clicking\na row opens its editor inline below it (opening another row closes the previous\none). Fixed-path conversions show the read-only **Signal K input path**, an\noptional **Signal K publisher (`$source`)** filter, and separate **NMEA 2000\noutput** controls. Mapping tables group their Signal K input and NMEA 2000\noutput columns, suggest asset ids found in the server path inventory, check\nfor the measurements each conversion needs, and block Save when an enabled\nmapping is invalid. The inventory refreshes automatically and also provides\nvisible Refresh and Retry controls. Optional per-path publisher pins follow the\nmapping in a collapsed **Advanced publisher filters** section. Mapping editors\ncover the conversions that need explicit Signal K paths, identifiers, NMEA 2000\ninstances, or field options: `AC_STATUS`, `BATTERY`, `CHARGER_STATUS`,\n`ENGINE_PARAMETERS`, `ENGINE_STATIC`, `ENGINE_TRIP`, `ENVIRONMENT_PARAMETERS`,\n`EXHAUST_TEMPERATURE`, `INVERTER_STATUS`, `NOTIFICATIONS`,\n`RAYMARINE_BRIGHTNESS`, `SOLAR`, `TANKS`, `VESSEL_TRIP`, and every\n`TEMPERATURE_*`, `TEMPERATURE2_*`, and `HUMIDITY_*` conversion.\n\nSignal K paths are schema-defined data identities, not user-facing labels. For\nexample, `environment.outside.temperature` is outside air temperature, while\n`environment.water.temperature` is water temperature. The publisher field is\nonly a filter on the update's `$source`; it cannot redirect one path to the\nother. The panel blocks a publisher filter that repeats its own input path. Use\n`TEMPERATURE2_SEA` for modern PGN 130316 water temperature, or the manual\n`TEMPERATURE_SEA` compatibility conversion for PGN 130312.\n\nThe config panel loads on any signalk-server 2.x admin UI. v1.4.x config\npayloads migrate transparently the first time the panel loads them.\n\n### Vessel Trip estimates\n\n`VESSEL_TRIP` is disabled by default. In its mapping editor, add every fuel\ntank that supplies the selected engines, using its canonical\n`tanks.fuel.<id>` Signal K path, then add every consuming engine by the\nidentifier used under `propulsion.<id>`. The plugin emits remaining fuel only\nafter every configured tank has a current value. It adds time to empty only\nwhen every configured engine has a current fuel rate, and adds distance to\nempty when current speed over ground is also available.\n\nFor a Raymarine Fuel Manager display, also configure the chartplotter's fuel\nsettings and provide PGN 127489 or 127497 for fuel consumption, plus PGN\n129026 with GNSS for distance to empty. Enable `ENGINE_PARAMETERS` or\n`ENGINE_TRIP`, plus `COG_SOG`, when this plugin must provide those supporting\nmessages. Other chartplotters have model- and firmware-specific requirements.\nSee the PGN reference in `docs/pgn-reference.md` for the\ncalculation, freshness behavior, limitations, and current compatibility notes.\n\n## Documentation\n\n- PGN reference in `docs/pgn-reference.md`: all 61 plugin PGNs, conversion\n  modules, bus-layer PGNs, and chartplotter guidance\n- Troubleshooting in `docs/troubleshooting.md`\n- Development guide in `docs/development.md`\n- Changelog in `CHANGELOG.md`\n- [Contributing](https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/blob/main/.github/CONTRIBUTING.md)\n- [Security policy](https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/blob/main/.github/SECURITY.md)\n\n## Development\n\nThe published plugin requires Node 22.0.0 or newer at runtime: its only runtime\ndependency is RxJS, and the build targets Node 22. Building from source needs a\nnewer Node than running the plugin does, so the toolchain floor is stated\nseparately in `devEngines`: Node 22 from 22.22.2, Node 24 from 24.15.0, or Node\n26. The repository pins Node 22.22.2 and npm 12.0.2 for development, and CI\nverifies on that toolchain floor and the current Node 24 release rather than on\nthe lower runtime floor, because CI installs the full development tree.\nCanboatJS and `@canboat/ts-pgns` are exercised in the test suite and are not\nruntime dependencies. `signalk-nearlcrews-ui` 0.11.1 is bundled into the panel\nas a pinned development dependency, while React and React DOM `^19.2.0` are\nsupplied by Signal K Admin.\n\n```bash\ngit clone https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon.git\ncd signalk-nmea2000-emitter-cannon\nnpm install\nnpm run hooks        # one-time: enable the repository-owned Git hooks\nnpm run build        # esbuild plugin bundle plus webpack panel\nnpm test             # Vitest suite\nnpm run check        # type-check the plugin, the panel, and the tests\nnpm run lint         # code, Markdown, and spelling checks\nnpm run ci:workflows # action pins and release-workflow invariants\nnpm run format       # Biome auto-format\nnpm run verify       # local full verification gate\n```\n\nThe repository-owned pre-commit hook runs formatting, lint, architecture, and\ndead-code gates. The pre-push hook runs `npm run verify` serially. Run\n`npm run verify:release` before preparing a release. `npm run verify` drives\nChromium and WebKit through Playwright, so run\n`npx playwright install chromium webkit` once after cloning.\nSee `docs/development.md` for the full workflow.\n\n## License\n\nApache-2.0: see the `LICENSE` file for the full text. The software is\nprovided \"AS IS\", without warranty of any kind. Data this plugin places on\nthe NMEA 2000 bus is advisory: always carry independent means of navigation\nand verify against your primary instruments.\n\n## Acknowledgments\n\nBuilt on the foundation of [`signalk-to-nmea2000`](https://github.com/SignalK/signalk-to-nmea2000)\nby Scott Bender and the Signal K community. Full credit to the original\nauthors for the conversion framework and PGN implementations. NMEA 2000\nEmitter Cannon 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 standard\n- [Canboat Project](https://github.com/canboat/canboat) for the NMEA 2000\n  protocol implementation that the canboatjs encoder is built on\n\nNMEA 2000 Emitter Cannon pairs well with sibling plugins that feed it Signal K\ndata:\n[`signalk-virtual-weather-sensors`](https://github.com/NearlCrews/signalk-virtual-weather-sensors)\npublishes the environment paths the weather conversions read,\n[`signalk-synthetic-values`](https://github.com/NearlCrews/signalk-synthetic-values)\ncombines redundant sensors onto one path before a conversion emits it, and\n[`signalk-crows-nest`](https://github.com/NearlCrews/signalk-crows-nest) and\n[`signalk-openrouter-companion`](https://github.com/NearlCrews/signalk-openrouter-companion)\nraise Signal K notifications that the `NOTIFICATIONS` conversion puts on a\nchartplotter's alarm screen.\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-nmea2000-emitter-cannon/issues/new?template=bug_report.yml)\n- [Request a feature](https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/issues/new?template=feature_request.yml)\n- [Security issues](https://github.com/NearlCrews/signalk-nmea2000-emitter-cannon/blob/main/.github/SECURITY.md)\n","readmeFilename":"README.md"}