{"_id":"@azohra/meteo.grib","_rev":"6-5ca74052f1b98e7f033ea068dec06034","name":"@azohra/meteo.grib","dist-tags":{"preview":"0.1.1-preview.1","latest":"0.1.4"},"versions":{"0.1.0":{"name":"@azohra/meteo.grib","version":"0.1.0","keywords":["grib","grib2","weather","meteorology","decoder","eccc","noaa"],"author":{"name":"Justin Watts"},"license":"MIT","_id":"@azohra/meteo.grib@0.1.0","maintainers":[{"name":"azohra","email":"justin@azohra.com"}],"homepage":"https://meteo.azohra.com","bugs":{"url":"https://github.com/azohra/meteo/issues"},"dist":{"shasum":"4241c52d21162ebd4b535d0f3560ecb5e3a40fcd","tarball":"https://registry.npmjs.org/@azohra/meteo.grib/-/meteo.grib-0.1.0.tgz","fileCount":26,"integrity":"sha512-420GudQ5IwAMFDACCAz3KmvKiEEM9s7y03lq8uEezJ9FzWLm95dLlWt5sdiNqUttFzIYUT/cGy+/XZ6186hXxA==","signatures":[{"sig":"MEQCIFanI1tb87uQfQguq9Gv62BTIOe/uo2qsYJAhzJbCM4KAiBGw40OuE3Q9dqubqDE3u/oYLdGSpHr0uNRCBrjgSY/KQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81070},"type":"module","_from":"file:azohra-meteo.grib-0.1.0.tgz","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./j2k-node":{"types":"./dist/j2k-node.d.ts","default":"./dist/j2k-node.js"},"./j2k-worker":{"types":"./dist/j2k-worker.d.ts","default":"./dist/j2k-worker.js"}},"scripts":{"test":"pnpm --dir ../j2k build && vp test","build":"pnpm --dir ../j2k build && vp pack","typecheck":"pnpm run build && tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"azohra","email":"justin@azohra.com"},"_resolved":"/Users/justin/.claude/jobs/6b06d5db/tmp/debut/azohra-meteo.grib-0.1.0.tgz","_integrity":"sha512-420GudQ5IwAMFDACCAz3KmvKiEEM9s7y03lq8uEezJ9FzWLm95dLlWt5sdiNqUttFzIYUT/cGy+/XZ6186hXxA==","repository":{"url":"git+https://github.com/azohra/meteo.git","type":"git","directory":"grib"},"_npmVersion":"11.17.0","description":"The GRIB2 decoder of meteo by Azohra: pure TypeScript section parsing, multi-field messages, grid geometry with O(1) nearest-gridpoint lookup (regular, rotated, and Lambert conformal grids), simple and complex packing, JPEG 2000 via an injected decoder, a","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@azohra/meteo.j2k":"0.1.0","@cornerstonejs/codec-openjpeg":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.0","typescript":"^5.6.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/meteo.grib_0.1.0_1786608197750_0.13758188512779745","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-preview.1":{"name":"@azohra/meteo.grib","version":"0.1.1-preview.1","keywords":["grib","grib2","weather","meteorology","decoder","eccc","noaa"],"author":"Justin Watts","license":"MIT","_id":"@azohra/meteo.grib@0.1.1-preview.1","maintainers":[{"name":"azohra","email":"justin@azohra.com"}],"homepage":"https://meteo.azohra.com","dist":{"shasum":"8ca7a8d3f5b234c6d41686a63f3a435abb8eb555","tarball":"https://registry.npmjs.org/@azohra/meteo.grib/-/meteo.grib-0.1.1-preview.1.tgz","fileCount":26,"integrity":"sha512-2rZTTAV9UPCpU/KkHnkTOF0c+/ykjVohc2qe69csAI4auN8LDtMkG513cXudlmZI74o1TtP5LI1XMN+12WSSEw==","signatures":[{"sig":"MEYCIQCkMya3F9HQeyTnEbSuvFpyvlG1xN/K6EQgifl1ocKlCQIhAPtfZCx2W4zy/Lq3F2x2ymvTqQubrsWHQGnDI8sgCzRs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84332},"type":"module","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./j2k-node":{"types":"./dist/j2k-node.d.ts","default":"./dist/j2k-node.js"},"./j2k-worker":{"types":"./dist/j2k-worker.d.ts","default":"./dist/j2k-worker.js"}},"scripts":{"test":"pnpm --dir ../j2k build && vp test","build":"pnpm --dir ../j2k build && vp pack","typecheck":"pnpm run build && tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"azohra","email":"justin@azohra.com"},"repository":{"url":"git+https://github.com/azohra/meteo.git","type":"git","directory":"grib"},"description":"The GRIB2 decoder of meteo by Azohra: pure TypeScript section parsing, multi-field messages, grid geometry with O(1) nearest-gridpoint lookup (regular, rotated, and Lambert conformal grids), simple and complex packing, JPEG 2000 via an injected decoder, a","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@azohra/meteo.j2k":"0.1.1-preview.1","@cornerstonejs/codec-openjpeg":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.0","typescript":"^5.6.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/meteo.grib_0.1.1-preview.1_1786650357070_0.5316391158095692","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@azohra/meteo.grib","version":"0.1.1","keywords":["grib","grib2","weather","meteorology","decoder","eccc","noaa"],"author":"Justin Watts","license":"MIT","_id":"@azohra/meteo.grib@0.1.1","maintainers":[{"name":"azohra","email":"justin@azohra.com"}],"homepage":"https://meteo.azohra.com","dist":{"shasum":"5a3d18585a97728a0935cc0276e71ce159c43c86","tarball":"https://registry.npmjs.org/@azohra/meteo.grib/-/meteo.grib-0.1.1.tgz","fileCount":26,"integrity":"sha512-6E16x4cpb7FmgNRhLAxC8K2avBULxqi6xY5lGnblpJD9+FZbwLxoSIlk0T0MNFDKmYYA3XTVKiP3YXvYTLl+NQ==","signatures":[{"sig":"MEQCIHQaShn7pJj4C/TuCPHxGHJSUnrpNHD3RyzBuMmJ0hZAAiB7fomAeUQ8qlY2/psKZUOYmdMAGr5e1VpO2GlR2GC5qw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84312},"type":"module","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./j2k-node":{"types":"./dist/j2k-node.d.ts","default":"./dist/j2k-node.js"},"./j2k-worker":{"types":"./dist/j2k-worker.d.ts","default":"./dist/j2k-worker.js"}},"scripts":{"test":"pnpm --dir ../j2k build && vp test","build":"pnpm --dir ../j2k build && vp pack","typecheck":"pnpm run build && tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"azohra","email":"justin@azohra.com"},"repository":{"url":"git+https://github.com/azohra/meteo.git","type":"git","directory":"grib"},"description":"The GRIB2 decoder of meteo by Azohra: pure TypeScript section parsing, multi-field messages, grid geometry with O(1) nearest-gridpoint lookup (regular, rotated, and Lambert conformal grids), simple and complex packing, JPEG 2000 via an injected decoder, a","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@azohra/meteo.j2k":"0.1.1","@cornerstonejs/codec-openjpeg":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.0","typescript":"^5.6.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/meteo.grib_0.1.1_1786651171534_0.8501076124662672","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@azohra/meteo.grib","version":"0.1.2","keywords":["grib","grib2","weather","meteorology","decoder","eccc","noaa"],"author":"Justin Watts","license":"MIT","_id":"@azohra/meteo.grib@0.1.2","maintainers":[{"name":"azohra","email":"justin@azohra.com"}],"homepage":"https://meteo.azohra.com","dist":{"shasum":"e0fa0b3b66854e1bd905cb7a728c413275f95d10","tarball":"https://registry.npmjs.org/@azohra/meteo.grib/-/meteo.grib-0.1.2.tgz","fileCount":26,"integrity":"sha512-aJK8Tb+TCvpE+LnWiwgUpPs8V8WjnTndQvPcKdbCoDCT3NXyaKItWXLruZHADZUl8GYfCnodrGLSKeriklrKQQ==","signatures":[{"sig":"MEUCIQCZdtJoYtjTpT7Gd0QuBdi87h+eXfZ/T5lGr/j2xO+oZwIgfbedfX+/sGXAslOXJVxUmPTIftQG2oZ0zJniPzwrf4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84890},"type":"module","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./j2k-node":{"types":"./dist/j2k-node.d.ts","default":"./dist/j2k-node.js"},"./j2k-worker":{"types":"./dist/j2k-worker.d.ts","default":"./dist/j2k-worker.js"}},"scripts":{"test":"pnpm --dir ../j2k build && vp test","build":"pnpm --dir ../j2k build && vp pack","typecheck":"pnpm run build && tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"azohra","email":"justin@azohra.com"},"repository":{"url":"git+https://github.com/azohra/meteo.git","type":"git","directory":"grib"},"description":"The GRIB2 decoder of meteo by Azohra: pure TypeScript section parsing, multi-field messages, grid geometry with O(1) nearest-gridpoint lookup (regular, rotated, and Lambert conformal grids), simple and complex packing, JPEG 2000 via an injected decoder, a","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@azohra/meteo.j2k":"0.1.1","@cornerstonejs/codec-openjpeg":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.0","typescript":"^5.6.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/meteo.grib_0.1.2_1786727757328_0.28777343543184886","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@azohra/meteo.grib","version":"0.1.3","keywords":["grib","grib2","weather","meteorology","decoder","eccc","noaa"],"author":"Justin Watts","license":"MIT","_id":"@azohra/meteo.grib@0.1.3","maintainers":[{"name":"azohra","email":"justin@azohra.com"}],"homepage":"https://meteo.azohra.com","dist":{"shasum":"1367d7925235dd814f01eb46e1ceec91a3757a83","tarball":"https://registry.npmjs.org/@azohra/meteo.grib/-/meteo.grib-0.1.3.tgz","fileCount":26,"integrity":"sha512-oRIm2ZSuiZ4mUuqXA9qu/v4THJO4Nxsm5j34he8u47PmAbUVDhb9L47Pm7WISH6sffJ288Xi8/6enn8Az+K0ig==","signatures":[{"sig":"MEUCIQDnxDivxEQFEcSmbbIOMi8Pynt2SXw3KeZDcFvASUyOWgIgTGf1JeNXmOKXWOe+9vcpHJKBXXsV6n4hHKmOG/p/NSo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85265},"type":"module","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./j2k-node":{"types":"./dist/j2k-node.d.ts","default":"./dist/j2k-node.js"},"./j2k-worker":{"types":"./dist/j2k-worker.d.ts","default":"./dist/j2k-worker.js"}},"scripts":{"test":"pnpm --dir ../j2k build && vp test","build":"pnpm --dir ../j2k build && vp pack","typecheck":"pnpm run build && tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"azohra","email":"justin@azohra.com"},"repository":{"url":"git+https://github.com/azohra/meteo.git","type":"git","directory":"grib"},"description":"The GRIB2 decoder of meteo by Azohra: pure TypeScript section parsing, multi-field messages, grid geometry with O(1) nearest-gridpoint lookup (regular, rotated, and Lambert conformal grids), simple and complex packing, JPEG 2000 via an injected decoder, a","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@azohra/meteo.j2k":"0.1.1","@cornerstonejs/codec-openjpeg":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.0","typescript":"^5.6.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/meteo.grib_0.1.3_1786817757961_0.841806578357879","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@azohra/meteo.grib","version":"0.1.4","description":"GRIB2 decoder in pure TypeScript: section parsing, multi-field messages, grid geometry with O(1) nearest-gridpoint lookup (regular, rotated, and Lambert conformal grids), simple and complex packing, JPEG 2000 via an injected decoder, and NOMADS .idx range","keywords":["grib","grib2","weather","meteorology","decoder","eccc","noaa"],"author":"Justin Watts","license":"MIT","repository":{"type":"git","url":"git+https://github.com/azohra/meteo.git","directory":"grib"},"type":"module","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./j2k-node":{"types":"./dist/j2k-node.d.ts","default":"./dist/j2k-node.js"},"./j2k-worker":{"types":"./dist/j2k-worker.d.ts","default":"./dist/j2k-worker.js"}},"dependencies":{"@cornerstonejs/codec-openjpeg":"^1.3.1","@azohra/meteo.j2k":"0.2.0"},"devDependencies":{"@types/node":"^22.10.0","typescript":"^5.6.0","vitest":"^4.0.0"},"engines":{"node":">=22"},"homepage":"https://meteo.azohra.com","scripts":{"build":"pnpm --dir ../j2k build && vp pack","test":"pnpm --dir ../j2k build && vp test","typecheck":"pnpm run build && tsc -p tsconfig.json --noEmit"},"_nodeVersion":"24.19.0","_id":"@azohra/meteo.grib@0.1.4","dist":{"integrity":"sha512-fNGJwFfoAPIAGw8pkCksYttCe5606xLnB6eT50XaD+M3dBIM3MOYiGqL+0wHj9uOCs3dOex3Qws4uBCitqTyQw==","shasum":"eb0440d5b60bed41d4305671e6cdfe12b0741877","tarball":"https://registry.npmjs.org/@azohra/meteo.grib/-/meteo.grib-0.1.4.tgz","fileCount":26,"unpackedSize":84188,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDJJcpzg0SrnWSymMfqHi1cfMCKBRNMMN151N8U/obDkQIgfEdCee5np8Ykjszk4GShKIzi0zsJex6lS84K2osJ5l4="}]},"_npmUser":{"name":"azohra","email":"justin@azohra.com"},"directories":{},"maintainers":[{"name":"azohra","email":"justin@azohra.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/meteo.grib_0.1.4_1787250944709_0.546093688421742"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-13T08:03:17.562Z","modified":"2026-08-20T18:35:45.115Z","0.1.0":"2026-08-13T08:03:17.905Z","0.1.1-preview.1":"2026-08-13T19:45:57.255Z","0.1.1":"2026-08-13T19:59:31.684Z","0.1.2":"2026-08-14T17:15:57.532Z","0.1.3":"2026-08-15T18:15:58.108Z","0.1.4":"2026-08-20T18:35:44.860Z"},"author":"Justin Watts","license":"MIT","homepage":"https://meteo.azohra.com","keywords":["grib","grib2","weather","meteorology","decoder","eccc","noaa"],"repository":{"type":"git","url":"git+https://github.com/azohra/meteo.git","directory":"grib"},"description":"GRIB2 decoder in pure TypeScript: section parsing, multi-field messages, grid geometry with O(1) nearest-gridpoint lookup (regular, rotated, and Lambert conformal grids), simple and complex packing, JPEG 2000 via an injected decoder, and NOMADS .idx range","maintainers":[{"name":"azohra","email":"justin@azohra.com"}],"readme":"# `@azohra/meteo.grib`\n\nA GRIB2 decoder in pure TypeScript, written because the forecast engine needs\ngrid template 3.1 (rotated latitude-longitude: every ECCC HRDPS, RDPS,\nREPS, and RAQDPS field) and multi-field messages (NCEP's paired U/V\nsubmessages), and no maintained JavaScript decoder provides either.\nThe browser-safe core carries no I/O; JPEG 2000 and the worker pool\nlive in the Node-only `@azohra/meteo.grib/j2k-node` subpath.\n\n```sh\npnpm add @azohra/meteo.grib\n```\n\n## Decode a real field\n\nThis decodes a committed HRDPS 2 m temperature field (rotated grid,\nJPEG 2000 packing, the combination that motivated the package) and\nsamples one launch:\n\n```js\n// decode-fixture.mjs — run inside grib/ after `pnpm build`\nimport { readFileSync } from \"node:fs\";\nimport {\n  decodeFieldValues,\n  nearestGridpoint,\n  parseFields,\n  parseGrid,\n  splitMessages,\n} from \"./dist/index.js\";\nimport { createNodeJ2kDecoder } from \"./dist/j2k-node.js\";\n\nconst bytes = readFileSync(\"test/fixtures/hrdps-continental-tmp-2m.grib2\");\nconst [field] = parseFields(splitMessages(bytes)[0]);\nconst grid = parseGrid(field.section3); // rotated lat-lon (GDT 3.1)\nconst decodeJ2k = await createNodeJ2kDecoder(); // every ECCC field is JPEG 2000\nconst { values } = decodeFieldValues(field, { decodeJ2k });\nconst site = nearestGridpoint(grid, 49.3634, -117.2361); // a launch near Nelson, BC\nconsole.log(`${grid.kind} ${grid.ni}x${grid.nj} = ${values.length} points`);\nconsole.log(site);\nconsole.log(`2 m temperature: ${(values[site.index] - 273.15).toFixed(2)} C`);\n```\n\n```text\nrotated 2540x1290 = 3276600 points\n{\n  index: 879425,\n  latitude: 49.3642714812993,\n  longitude: -117.23441055371016,\n  distanceKm: 0.1560769875776412\n}\n2 m temperature: 23.05 C\n```\n\nEvery decode path is accepted bit-for-bit against ecCodes over the\nfrozen twenty-message corpus in [`test/fixtures/`](test/fixtures/README.md);\nthe gate's full story is at\n<https://meteo.azohra.com/docs/grib/correctness/>.\n\n## Documentation\n\nThe reference lives in [`docs/`](docs/) (coverage, the ecCodes gate,\nand the JPEG 2000 codecs and worker pool each have a page) and is\nserved at <https://meteo.azohra.com/docs/grib/>.\n\nMIT © Justin Watts\n","readmeFilename":""}