{"_id":"@ecmwf.int/tensogram","_rev":"10-acd249527fd929e0caf311fcabb7cda2","name":"@ecmwf.int/tensogram","dist-tags":{"latest":"0.24.0"},"versions":{"0.16.1":{"name":"@ecmwf.int/tensogram","version":"0.16.1","keywords":["tensogram","ecmwf","cbor","wasm","scientific-data","weather","tensor"],"author":{"name":"ECMWF"},"license":"Apache-2.0","_id":"@ecmwf.int/tensogram@0.16.1","maintainers":[{"name":"ecmwf","email":"software@ecmwf.int"}],"homepage":"https://github.com/ecmwf/tensogram","bugs":{"url":"https://github.com/ecmwf/tensogram/issues"},"dist":{"shasum":"5c4cecf2b8d56cacffd69cc9e8f89a73f3d8b17c","tarball":"https://registry.npmjs.org/@ecmwf.int/tensogram/-/tensogram-0.16.1.tgz","fileCount":87,"integrity":"sha512-8FBwSU5z3G1jrznfzAz6sB/cVJTvRXmK6/yXBHxqr1oa+MEyY/0SjGe4040UMWcfDXn3MobxZpC65C2Sgg74Lg==","signatures":[{"sig":"MEUCIQChVG3zRC0FEsL/SC/sfG0dzckD6vLCYRxKs+hVFxSmZQIgTdvAU5Ui7hUqqxEA76U3a8IwXNqVzjwPCkIXnOgvrTk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":289944},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm":{"default":"./wasm/tensogram_wasm.js"}},"gitHead":"3f3bde7b662a861934a0150ee1437f9f11b73ad1","scripts":{"test":"vitest run","build":"npm run build:wasm && npm run build:ts","build:ts":"tsc","typecheck":"tsc --noEmit","build:wasm":"wasm-pack build ../rust/tensogram-wasm --release --target web --out-dir ../../typescript/wasm --out-name tensogram_wasm","test:watch":"vitest"},"_npmUser":{"name":"ecmwf","email":"software@ecmwf.int"},"repository":{"url":"git+https://github.com/ecmwf/tensogram.git","type":"git","directory":"typescript"},"_npmVersion":"10.9.7","description":"TypeScript bindings for the Tensogram N-tensor message format","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","fast-check":"^3.23.2","typescript":"^5.5.0","@types/node":"^20.11.0","@vitest/coverage-v8":"^2.1.9"},"_npmOperationalInternal":{"tmp":"tmp/tensogram_0.16.1_1776869155110_0.227316652213011","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@ecmwf.int/tensogram","version":"0.17.0","keywords":["tensogram","ecmwf","cbor","wasm","scientific-data","weather","tensor"],"author":{"name":"ECMWF"},"license":"Apache-2.0","_id":"@ecmwf.int/tensogram@0.17.0","maintainers":[{"name":"ecmwf","email":"software@ecmwf.int"}],"homepage":"https://github.com/ecmwf/tensogram","bugs":{"url":"https://github.com/ecmwf/tensogram/issues"},"dist":{"shasum":"f557edb0829e7ae8a7716ca41eb30e16f8b72d67","tarball":"https://registry.npmjs.org/@ecmwf.int/tensogram/-/tensogram-0.17.0.tgz","fileCount":87,"integrity":"sha512-9+MgjlsvbiwayfahJ+cUEQaW+jhfNWcwvUkAySPD1BpHT6MzaFe0Aa7u9esQEcoX8AaD3PCkHAKNzkrgcDR3Kw==","signatures":[{"sig":"MEUCIDkPdhdoIx8zFrLMwEWnecsbDlBM99xllUggXRqktyO2AiEAp6nW96Hw74cBoisCKPJEyEA+NXFclvzVCgKiyjt0MMY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":289845},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm":{"default":"./wasm/tensogram_wasm.js"}},"gitHead":"c69c2946cf96c47783cfd9656a0a1df1661dc06c","scripts":{"test":"vitest run","build":"npm run build:wasm && npm run build:ts","build:ts":"tsc","typecheck":"tsc --noEmit","build:wasm":"wasm-pack build ../rust/tensogram-wasm --release --target web --out-dir ../../typescript/wasm --out-name tensogram_wasm","test:watch":"vitest"},"_npmUser":{"name":"ecmwf","email":"software@ecmwf.int"},"repository":{"url":"git+https://github.com/ecmwf/tensogram.git","type":"git","directory":"typescript"},"_npmVersion":"10.9.7","description":"TypeScript bindings for the Tensogram N-tensor message format","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","fast-check":"^3.23.2","typescript":"^5.5.0","@types/node":"^20.11.0","@vitest/coverage-v8":"^2.1.9"},"_npmOperationalInternal":{"tmp":"tmp/tensogram_0.17.0_1776886743619_0.7287091619297856","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@ecmwf.int/tensogram","version":"0.18.0","keywords":["tensogram","ecmwf","cbor","wasm","scientific-data","weather","tensor"],"author":{"name":"ECMWF"},"license":"Apache-2.0","_id":"@ecmwf.int/tensogram@0.18.0","maintainers":[{"name":"ecmwf","email":"software@ecmwf.int"}],"homepage":"https://github.com/ecmwf/tensogram","bugs":{"url":"https://github.com/ecmwf/tensogram/issues"},"dist":{"shasum":"855063af84b0583b93285769fef1aa272896f7d2","tarball":"https://registry.npmjs.org/@ecmwf.int/tensogram/-/tensogram-0.18.0.tgz","fileCount":115,"integrity":"sha512-8EOAoXRCaiuWA3ZFVpFdDlI4BZatiF+WZ3rC2mymWy8KRuBzLm48Ae3zItoDrljgCGyuaRmzdryp1cjAfIlxGg==","signatures":[{"sig":"MEUCIQCaueMzALDKF5W9fInHTBDA7vyKjp487nIIIIFX146S2AIgSK4LChN2A4ROGx3pLMSf1MkrxwTkWWJjxszq5b0IZQk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":402590},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm":{"default":"./wasm/tensogram_wasm.js"}},"gitHead":"a078240d8e2850e05b1c73f243eed6c6455e9b32","scripts":{"test":"vitest run","build":"npm run build:wasm && npm run build:ts","build:ts":"tsc","typecheck":"tsc --noEmit","build:wasm":"wasm-pack build ../rust/tensogram-wasm --release --target web --out-dir ../../typescript/wasm --out-name tensogram_wasm","test:watch":"vitest"},"_npmUser":{"name":"ecmwf","email":"software@ecmwf.int"},"repository":{"url":"git+https://github.com/ecmwf/tensogram.git","type":"git","directory":"typescript"},"_npmVersion":"10.9.7","description":"TypeScript bindings for the Tensogram N-tensor message format","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","fast-check":"^3.23.2","typescript":"^5.5.0","@types/node":"^20.11.0","@vitest/coverage-v8":"^2.1.9"},"_npmOperationalInternal":{"tmp":"tmp/tensogram_0.18.0_1776928505050_0.4297436853711587","host":"s3://npm-registry-packages-npm-production"}},"0.18.1":{"name":"@ecmwf.int/tensogram","version":"0.18.1","keywords":["tensogram","ecmwf","cbor","wasm","scientific-data","weather","tensor"],"author":{"name":"ECMWF"},"license":"Apache-2.0","_id":"@ecmwf.int/tensogram@0.18.1","maintainers":[{"name":"ecmwf","email":"software@ecmwf.int"}],"homepage":"https://github.com/ecmwf/tensogram","bugs":{"url":"https://github.com/ecmwf/tensogram/issues"},"dist":{"shasum":"8bb429be8eb384070768a101460ea3aa1cf1b04e","tarball":"https://registry.npmjs.org/@ecmwf.int/tensogram/-/tensogram-0.18.1.tgz","fileCount":115,"integrity":"sha512-o9EyAkOynRLo9xma6c+CjIHdiEN9xeAbpjtmhiWqkjL2h3+4MMc9APB+loweTAdfqISHOjJ2gFJWVKBDo4ESrQ==","signatures":[{"sig":"MEUCIBfo850JRd57pqd4ZH34UaIUOgoINAzpcwIJGcMUC7ELAiEA/8KkfDr02SgF9Qf4q6rNuGoeoNiSX3QU0pvW7s28osc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":402590},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm":{"default":"./wasm/tensogram_wasm.js"}},"gitHead":"d4dc6d02e0d614633a32778701f12eef2c93c40c","scripts":{"test":"vitest run","build":"npm run build:wasm && npm run build:ts","build:ts":"tsc","typecheck":"tsc --noEmit","build:wasm":"wasm-pack build ../rust/tensogram-wasm --release --target web --out-dir ../../typescript/wasm --out-name tensogram_wasm","test:watch":"vitest"},"_npmUser":{"name":"ecmwf","email":"software@ecmwf.int"},"repository":{"url":"git+https://github.com/ecmwf/tensogram.git","type":"git","directory":"typescript"},"_npmVersion":"10.9.7","description":"TypeScript bindings for the Tensogram N-tensor message format","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","fast-check":"^3.23.2","typescript":"^5.5.0","@types/node":"^20.11.0","@vitest/coverage-v8":"^2.1.9"},"_npmOperationalInternal":{"tmp":"tmp/tensogram_0.18.1_1776945429991_0.2631942492423871","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@ecmwf.int/tensogram","version":"0.19.0","keywords":["tensogram","ecmwf","cbor","wasm","scientific-data","weather","tensor"],"author":{"name":"ECMWF"},"license":"Apache-2.0","_id":"@ecmwf.int/tensogram@0.19.0","maintainers":[{"name":"ecmwf","email":"software@ecmwf.int"}],"homepage":"https://github.com/ecmwf/tensogram","bugs":{"url":"https://github.com/ecmwf/tensogram/issues"},"dist":{"shasum":"973090be17f7b3e2fcec5fe10dd1eebd0c18f459","tarball":"https://registry.npmjs.org/@ecmwf.int/tensogram/-/tensogram-0.19.0.tgz","fileCount":115,"integrity":"sha512-dEtadz/7DJR7ia7z916puyiw3PSa/5mA4ffnT9EYglWMVw2LFW9q+NZvGVW8YPIpR7FISXmSkQ35HT4iniVERg==","signatures":[{"sig":"MEYCIQCHp6bj5UN/7b96HZrdZr+fYo1QRUBqf5ay+JUFvZ9avQIhAOeRSX2WQQmb18ny/z3yWOftG9JwgBljkWo0a3ZJp7ET","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":403357},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm":{"default":"./wasm/tensogram_wasm.js"}},"gitHead":"4d3de2efbf04210613675f2e8b91df9c43aaeef8","scripts":{"test":"vitest run","build":"npm run build:wasm && npm run build:ts","build:ts":"tsc","typecheck":"tsc --noEmit","build:wasm":"wasm-pack build ../rust/tensogram-wasm --release --target web --out-dir ../../typescript/wasm --out-name tensogram_wasm","test:watch":"vitest"},"_npmUser":{"name":"ecmwf","email":"software@ecmwf.int"},"repository":{"url":"git+https://github.com/ecmwf/tensogram.git","type":"git","directory":"typescript"},"_npmVersion":"10.9.7","description":"TypeScript bindings for the Tensogram N-tensor message format","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","fast-check":"^3.23.2","typescript":"^5.5.0","@types/node":"^20.11.0","@vitest/coverage-v8":"^2.1.9"},"_npmOperationalInternal":{"tmp":"tmp/tensogram_0.19.0_1777120455024_0.2279488876082243","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"@ecmwf.int/tensogram","version":"0.20.0","keywords":["tensogram","ecmwf","cbor","wasm","scientific-data","weather","tensor"],"author":{"name":"ECMWF"},"license":"Apache-2.0","_id":"@ecmwf.int/tensogram@0.20.0","maintainers":[{"name":"ecmwf","email":"software@ecmwf.int"}],"homepage":"https://github.com/ecmwf/tensogram","bugs":{"url":"https://github.com/ecmwf/tensogram/issues"},"dist":{"shasum":"a121a27e6bb0fccb9359fe52d1df7c74ccab74ca","tarball":"https://registry.npmjs.org/@ecmwf.int/tensogram/-/tensogram-0.20.0.tgz","fileCount":119,"integrity":"sha512-PueJ5kK++ZkDLhm1hujBy/zzdZQZOQREDQKqaikBMMO1oQjqdYK1ztyaKPFlfvllkROSzKx6I9bTiuCUjx7vUA==","signatures":[{"sig":"MEQCIGv4zRz4e5vQNsuZB+ibq15P3hQcx+sy+LMQ9TNCaraaAiBYg/H5OJLx/Dq714iB6l1Du9nBIp7pvosgEQkLSXkgCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":441326},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm":{"default":"./wasm/tensogram_wasm.js"}},"gitHead":"f3ff9ab7ce204c6e2e4aa8045bab075e3e97bff6","scripts":{"test":"vitest run","build":"npm run build:wasm && npm run build:ts","build:ts":"tsc","typecheck":"tsc --noEmit","build:wasm":"wasm-pack build ../rust/tensogram-wasm --release --target web --out-dir ../../typescript/wasm --out-name tensogram_wasm","test:watch":"vitest","bench:remote-metrics":"npx tsx tests/run_remote_bench.ts","bench:remote-wallclock":"vitest bench --run tests/remote_scan.bench.ts"},"_npmUser":{"name":"ecmwf","email":"software@ecmwf.int"},"repository":{"url":"git+https://github.com/ecmwf/tensogram.git","type":"git","directory":"typescript"},"_npmVersion":"10.9.7","description":"TypeScript bindings for the Tensogram N-tensor message format","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","fast-check":"^3.23.2","typescript":"^5.5.0","@types/node":"^20.11.0","@vitest/coverage-v8":"^2.1.9"},"_npmOperationalInternal":{"tmp":"tmp/tensogram_0.20.0_1777224283340_0.4141925883857198","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"@ecmwf.int/tensogram","version":"0.21.0","keywords":["tensogram","ecmwf","cbor","wasm","scientific-data","weather","tensor"],"author":{"name":"ECMWF"},"license":"Apache-2.0","_id":"@ecmwf.int/tensogram@0.21.0","maintainers":[{"name":"ecmwf","email":"software@ecmwf.int"}],"homepage":"https://github.com/ecmwf/tensogram","bugs":{"url":"https://github.com/ecmwf/tensogram/issues"},"dist":{"shasum":"a0f781638797b8d23dd7cd265e2a2f5bbd1504c6","tarball":"https://registry.npmjs.org/@ecmwf.int/tensogram/-/tensogram-0.21.0.tgz","fileCount":119,"integrity":"sha512-SuLKy3BuQYEnaWm8Zxld7eGBEriBVbsLI5cxBMPBiSsCbgVdoz4fot5Xv4gcelfUZvpMh6qUGXpP6YtZG9VrjA==","signatures":[{"sig":"MEQCIDw3sd69hH5ScHenCySTCcEN8bhGCorSnb1brNcPUMMoAiBBB/PbIqOey1yJjHD/J1XJ95tEN5+yAnIwGOZGQXSMjw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":451564},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm":{"default":"./wasm/tensogram_wasm.js"}},"gitHead":"4bf6a74eed279312600cf31d2ff6a8ee7dff1485","scripts":{"test":"vitest run","build":"npm run build:wasm && npm run build:ts","build:ts":"tsc","typecheck":"tsc --noEmit","build:wasm":"wasm-pack build ../rust/tensogram-wasm --release --target web --out-dir ../../typescript/wasm --out-name tensogram_wasm","test:watch":"vitest","bench:remote-metrics":"npx tsx tests/run_remote_bench.ts","bench:remote-wallclock":"vitest bench --run tests/remote_scan.bench.ts"},"_npmUser":{"name":"ecmwf","email":"software@ecmwf.int"},"repository":{"url":"git+https://github.com/ecmwf/tensogram.git","type":"git","directory":"typescript"},"_npmVersion":"10.9.7","description":"TypeScript bindings for the Tensogram N-tensor message format","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","fast-check":"^4.7.0","typescript":"^5.5.0","@types/node":"^20.11.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/tensogram_0.21.0_1777507403447_0.09513315876158224","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"@ecmwf.int/tensogram","version":"0.22.0","keywords":["tensogram","ecmwf","cbor","wasm","scientific-data","weather","tensor"],"author":{"name":"ECMWF"},"license":"Apache-2.0","_id":"@ecmwf.int/tensogram@0.22.0","maintainers":[{"name":"ecmwf","email":"software@ecmwf.int"}],"homepage":"https://github.com/ecmwf/tensogram","bugs":{"url":"https://github.com/ecmwf/tensogram/issues"},"dist":{"shasum":"20a5794a1dc394f3272cd2ed77be222e4e69472d","tarball":"https://registry.npmjs.org/@ecmwf.int/tensogram/-/tensogram-0.22.0.tgz","fileCount":125,"integrity":"sha512-mfE5Wuk2dn3XUQg2vTAEgyfv1dF7GNAV4OoG2LlaNuT6S8VLl1eu//pOuX1zZF5j5AQGQOm+jC2WOCu81bNwYw==","signatures":[{"sig":"MEUCIQDYNjfpfQg8sv9iGum/pp+KOBya8bIJv5txYEK/S+OmZgIgaa7EYNYxutlMLw35DWMF5qVC/ogxzUJkNGFNY+F5/ew=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1402236},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm":{"default":"./wasm/tensogram_wasm.js"}},"gitHead":"13e84b90b5a9c2f025585c574f0dbb0bb6e168e3","scripts":{"test":"vitest run","build":"npm run build:wasm && npm run build:ts","prepack":"node -e \"require('fs').rmSync('wasm/.gitignore', { force: true })\"","build:ts":"tsc","typecheck":"tsc --noEmit","build:wasm":"wasm-pack build ../rust/tensogram-wasm --release --target web --out-dir ../../typescript/wasm --out-name tensogram_wasm","test:watch":"vitest","bench:remote-metrics":"npx tsx tests/run_remote_bench.ts","bench:remote-wallclock":"vitest bench --run tests/remote_scan.bench.ts"},"_npmUser":{"name":"ecmwf","email":"software@ecmwf.int"},"repository":{"url":"git+https://github.com/ecmwf/tensogram.git","type":"git","directory":"typescript"},"_npmVersion":"10.9.7","description":"TypeScript bindings for the Tensogram N-tensor message format","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","fast-check":"^4.7.0","typescript":"^5.5.0","@types/node":"^20.11.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/tensogram_0.22.0_1783243520699_0.03717136089646478","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"@ecmwf.int/tensogram","version":"0.23.0","keywords":["tensogram","ecmwf","cbor","wasm","scientific-data","weather","tensor"],"author":{"name":"ECMWF"},"license":"Apache-2.0","_id":"@ecmwf.int/tensogram@0.23.0","maintainers":[{"name":"ecmwf","email":"software@ecmwf.int"}],"homepage":"https://github.com/ecmwf/tensogram","bugs":{"url":"https://github.com/ecmwf/tensogram/issues"},"dist":{"shasum":"aaac38884250f419806b4bf6f361fe0ae44d09bd","tarball":"https://registry.npmjs.org/@ecmwf.int/tensogram/-/tensogram-0.23.0.tgz","fileCount":125,"integrity":"sha512-SOqhn6Rh7Qv5QpOGLtUaFHN78h9OlCXqAPHOVWkMrsaNckZBFboNTBV6XjhFy3LT4nKKPVA7olRgFWAtCmS3Vw==","signatures":[{"sig":"MEYCIQDX2VzJz8O5mcxcilksq2K1QpNZ6J8GbHO76iKWzZ6rnwIhALqLVBzRFMvs2Gd2C58CosJYn85HSFyLefDkPVwYwpl2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1383817},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm":{"default":"./wasm/tensogram_wasm.js"}},"gitHead":"44937c8601be5279d785b77797e92c6263478e4b","scripts":{"test":"vitest run","build":"npm run build:wasm && npm run build:ts","prepack":"node -e \"require('fs').rmSync('wasm/.gitignore', { force: true })\"","build:ts":"tsc","typecheck":"tsc --noEmit","build:wasm":"wasm-pack build ../rust/tensogram-wasm --release --target web --out-dir ../../typescript/wasm --out-name tensogram_wasm","test:watch":"vitest","bench:remote-metrics":"npx tsx tests/run_remote_bench.ts","bench:remote-wallclock":"vitest bench --run tests/remote_scan.bench.ts"},"_npmUser":{"name":"ecmwf","email":"software@ecmwf.int"},"repository":{"url":"git+https://github.com/ecmwf/tensogram.git","type":"git","directory":"typescript"},"_npmVersion":"10.9.7","description":"TypeScript bindings for the Tensogram N-tensor message format","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","fast-check":"^4.7.0","typescript":"^5.5.0","@types/node":"^20.11.0","@vitest/coverage-v8":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/tensogram_0.23.0_1784567395612_0.4795778385504208","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"@ecmwf.int/tensogram","version":"0.24.0","description":"TypeScript bindings for the Tensogram N-tensor message format","keywords":["tensogram","ecmwf","cbor","wasm","scientific-data","weather","tensor"],"license":"Apache-2.0","author":{"name":"ECMWF"},"homepage":"https://github.com/ecmwf/tensogram","repository":{"type":"git","url":"git+https://github.com/ecmwf/tensogram.git","directory":"typescript"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm":{"default":"./wasm/tensogram_wasm.js"}},"scripts":{"build:wasm":"wasm-pack build ../rust/tensogram-wasm --release --target web --out-dir ../../typescript/wasm --out-name tensogram_wasm","build:ts":"tsc","build":"npm run build:wasm && npm run build:ts","prepack":"node -e \"require('fs').rmSync('wasm/.gitignore', { force: true })\"","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest","bench:remote-wallclock":"vitest bench --run tests/remote_scan.bench.ts","bench:remote-metrics":"npx tsx tests/run_remote_bench.ts"},"devDependencies":{"@types/node":"^20.11.0","@vitest/coverage-v8":"^4.1.5","fast-check":"^4.7.0","typescript":"^5.5.0","vitest":"^4.1.5"},"engines":{"node":">=20"},"publishConfig":{"access":"public"},"_id":"@ecmwf.int/tensogram@0.24.0","gitHead":"3a734356b0223a755040e05d15b3d85707567a6e","bugs":{"url":"https://github.com/ecmwf/tensogram/issues"},"_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-vonK+aQtqRf5knt/TCTX5IODLMB8iCpRGVGk0ZQikAFceG6nX8bRmLRcaBGE9zOkbP3TAaKkpkQ2tCSCLOGHPg==","shasum":"be67ca58524af6b6100e65efd0110382ec73cb95","tarball":"https://registry.npmjs.org/@ecmwf.int/tensogram/-/tensogram-0.24.0.tgz","fileCount":125,"unpackedSize":1396323,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD9U8CKZGMDLp3ZXDFusXBr/qim8OEySIWxGvM8t2RxWgIhAKr9uORDBz3SFQZrTPQC8YB9Vg1oINS9tas//kZUV2Tl"}]},"_npmUser":{"name":"ecmwf","email":"software@ecmwf.int"},"directories":{},"maintainers":[{"name":"ecmwf","email":"software@ecmwf.int"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tensogram_0.24.0_1784829915356_0.8610352358567759"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-22T14:45:55.005Z","modified":"2026-07-23T18:05:15.698Z","0.16.1":"2026-04-22T14:45:55.326Z","0.17.0":"2026-04-22T19:39:03.804Z","0.18.0":"2026-04-23T07:15:05.192Z","0.18.1":"2026-04-23T11:57:10.138Z","0.19.0":"2026-04-25T12:34:15.173Z","0.20.0":"2026-04-26T17:24:43.476Z","0.21.0":"2026-04-30T00:03:23.586Z","0.22.0":"2026-07-05T09:25:20.856Z","0.23.0":"2026-07-20T17:09:55.784Z","0.24.0":"2026-07-23T18:05:15.523Z"},"bugs":{"url":"https://github.com/ecmwf/tensogram/issues"},"author":{"name":"ECMWF"},"license":"Apache-2.0","homepage":"https://github.com/ecmwf/tensogram","keywords":["tensogram","ecmwf","cbor","wasm","scientific-data","weather","tensor"],"repository":{"type":"git","url":"git+https://github.com/ecmwf/tensogram.git","directory":"typescript"},"description":"TypeScript bindings for the Tensogram N-tensor message format","maintainers":[{"name":"ecmwf","email":"software@ecmwf.int"}],"readme":"# @ecmwf.int/tensogram\n\nTypeScript bindings for [Tensogram](https://github.com/ecmwf/tensogram),\na binary message format for N-dimensional scientific tensors. Tensogram is\ndeveloped and maintained by ECMWF.\n\nWraps the Rust core (via WebAssembly) with a typed, idiomatic TS API:\n\n- Strong types for metadata, descriptors, dtypes, and errors\n- Dtype-aware payload dispatch (`object.data()` returns the correct TypedArray)\n- Web Streams API for progressive decode (`decodeStream`)\n- Node + browser file helpers with HTTP Range support (`TensogramFile`)\n- **Layout-aware remote reads** — `messageMetadata`, `messageDescriptors`,\n  `messageObject`, `messageObjectRange`, `messageObjectBatch`,\n  `messageObjectRangeBatch`, `prefetchLayouts`; on the lazy HTTP backend\n  each fetches only the bytes it needs (header chunk, footer suffix,\n  per-object frame), with bounded-concurrency fan-out\n- **AWS SigV4 helper** — `createAwsSigV4Fetch` plugs into\n  `TensogramFile.fromUrl({ fetch })` for read-only S3-compatible\n  endpoints; pure signer at `signAwsV4Request` for byte-for-byte\n  AWS sig-v4-test-suite parity\n- Full API parity with Rust / Python / C++ (encode/decode/validate,\n  streaming encoder, pre-encoded bytes, first-class half-precision +\n  complex view classes)\n\n## Install\n\nNot yet published to npm. Build from source:\n\n```bash\n# From the repo root\ncd typescript\nnpm install\nnpm run build     # wasm-pack + tsc\n```\n\nRequirements:\n- Rust + [wasm-pack](https://rustwasm.github.io/wasm-pack/installer/)\n- Node ≥ 20\n\n## Quick start\n\n```ts\nimport { init, encode, decode } from '@ecmwf.int/tensogram';\n\nawait init();\n\nconst temps = new Float32Array(100 * 200);\nfor (let i = 0; i < temps.length; i++) temps[i] = 273.15 + i / 100;\n\nconst msg = encode(\n  { version: 3 },\n  [{\n    descriptor: {\n      type: 'ntensor', ndim: 2,\n      shape: [100, 200], strides: [200, 1],\n      dtype: 'float32', byte_order: 'little',\n      encoding: 'none', filter: 'none', compression: 'none',\n    },\n    data: temps,\n  }],\n);\n\nconst { metadata, objects } = decode(msg);\nconsole.log(objects[0].data());  // Float32Array(20000)\n```\n\nSee the [user guide](../docs/src/guide/typescript-api.md) for the full API\nand [examples/typescript/](../examples/typescript/) for runnable scripts.\n\n## Remote access\n\n`TensogramFile.fromUrl` opens a `.tgm` over HTTP(S) with Range support\ndetection.  When the server advertises `Accept-Ranges: bytes` it falls\ninto the lazy backend, which fetches only the bytes you ask for:\n\n```ts\nconst file = await TensogramFile.fromUrl(\n  'https://example.org/forecast.tgm',\n  { concurrency: 6 },               // per-host fan-out cap (default 6)\n);\ntry {\n  // Header chunk only — no payload bytes downloaded.\n  const meta = await file.messageMetadata(0);\n\n  // Index frame + per-frame CBOR descriptors.\n  const { descriptors } = await file.messageDescriptors(0);\n\n  // Exactly one Range GET for object 0's frame.\n  const obj = await file.messageObject(0, 0);\n  try {\n    const arr = obj.objects[0].data() as Float32Array;\n    // ... use arr ...\n  } finally {\n    obj.close();\n  }\n\n  // Pre-warm layout cache for all messages, bounded to 6 concurrent fetches.\n  await file.prefetchLayouts(\n    Array.from({ length: file.messageCount }, (_, i) => i),\n  );\n\n  // Parallel decode the same object across many messages.\n  const xs = await file.messageObjectBatch([0, 1, 2, 3], 0);\n  xs.forEach((x) => x.close());\n} finally {\n  file.close();\n}\n```\n\nFor S3-compatible endpoints behind AWS Signature V4 authentication,\nbuild a signed `fetch` and pass it through `FromUrlOptions.fetch`:\n\n```ts\nimport { createAwsSigV4Fetch, TensogramFile } from '@ecmwf.int/tensogram';\n\nconst signedFetch = createAwsSigV4Fetch({\n  accessKeyId: process.env.AWS_ACCESS_KEY_ID!,\n  secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!,\n  region: 'eu-west-1',\n});\n\nconst file = await TensogramFile.fromUrl(\n  'https://my-bucket.s3.eu-west-1.amazonaws.com/data.tgm',\n  { fetch: signedFetch },\n);\n```\n\nThe pure signer (`signAwsV4Request`) is also exported for callers\nthat want to handle the request lifecycle themselves.  Both are\ncovered by byte-for-byte AWS sig-v4-test-suite parity tests.\n\nFor Azure or Google Cloud Storage, generate a presigned (signed) URL\nin your control plane and pass it as a plain HTTPS URL — Azure Shared\nKey signing and GCS HMAC are out of scope for this package.\n\nFor runnable end-to-end demos, see\n[`examples/typescript/15_remote_access.ts`](../examples/typescript/15_remote_access.ts),\n[`16_remote_batch.ts`](../examples/typescript/16_remote_batch.ts), and\n[`17_remote_s3_signed_fetch.ts`](../examples/typescript/17_remote_s3_signed_fetch.ts).\n\n## Licence\n\nApache 2.0 — see [LICENSE](../LICENSE).\n","readmeFilename":"README.md"}