{"_id":"@brashkie/signalis-codec","_rev":"8-abd45d8f683b773fa699462b345e44a5","name":"@brashkie/signalis-codec","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"@brashkie/signalis-codec","version":"0.1.0","keywords":["protobuf","protocol-buffers","codec","wire-format","serialization","napi","rust","signalis","waproto"],"author":{"url":"Hepein Oficial","name":"Brashkie"},"license":"Apache-2.0","_id":"@brashkie/signalis-codec@0.1.0","maintainers":[{"name":"brashkie","email":"fabianoarjunken@gmail.com"}],"homepage":"https://github.com/Brashkie/signalis-codec","bugs":{"url":"https://github.com/Brashkie/signalis-codec/issues"},"dist":{"shasum":"88138668f9008b1f40a2521d88425aca29d84165","tarball":"https://registry.npmjs.org/@brashkie/signalis-codec/-/signalis-codec-0.1.0.tgz","fileCount":14,"integrity":"sha512-xRoDww4vDgf6ypSV8Dae7hpcCYg8SMM90wfw1MgOEs6yWJgpYrWljG4NzYZaI2Vgy9DtLhf+wDow35ygLtqpPQ==","signatures":[{"sig":"MEUCIA9DFm89Rucc1zs14UFyd4ivXzcS/EZG5WdPAy+4ek8eAiEAtNZ2zxQAdGmCwWAlzLx6wxXqdKOosGHx3vTHSBuphZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@brashkie%2fsignalis-codec@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1454090},"main":"./dist/index.js","napi":{"name":"signalis-codec","triples":{"defaults":true,"additional":["aarch64-apple-darwin","aarch64-linux-android","aarch64-unknown-linux-gnu","aarch64-unknown-linux-musl","aarch64-pc-windows-msvc","armv7-unknown-linux-gnueabihf","x86_64-unknown-linux-musl","x86_64-unknown-freebsd"]}},"type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"6d1fdd9576290c765067e60e838e3bdbecb26c75","scripts":{"lint":"biome check src __tests__","test":"vitest run","build":"npm run build:native && npm run build:ts","format":"biome format --write src __tests__","build:ts":"tsup","lint:fix":"biome check --write src __tests__","artifacts":"napi artifacts","test:rust":"cargo test --workspace --exclude codec-node","typecheck":"tsc --noEmit","test:watch":"vitest","build:debug":"npm run build:native:debug && npm run build:ts","build:native":"napi build --platform --release --cargo-cwd crates/codec-node --js index.js --dts index.d.ts","test:coverage":"vitest run --coverage","prepublishOnly":"napi prepublish -t npm","build:native:debug":"napi build --platform --cargo-cwd crates/codec-node --js index.js --dts index.d.ts"},"_npmUser":{"name":"brashkie","email":"fabianoarjunken@gmail.com"},"repository":{"url":"git+https://github.com/Brashkie/signalis-codec.git","type":"git"},"_npmVersion":"10.9.8","description":"Safe, Rust-powered protobuf wire codec (Level 1) with bounds-checking and depth limiting. Schema-agnostic foundation for @brashkie/waproto.","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^3.0.0","typescript":"^6.0.3","@types/node":"^22.0.0","@napi-rs/cli":"^2.18.0","@biomejs/biome":"^1.9.0","@vitest/coverage-v8":"^3.0.0"},"optionalDependencies":{"@brashkie/signalis-codec-darwin-x64":"0.1.0","@brashkie/signalis-codec-freebsd-x64":"0.1.0","@brashkie/signalis-codec-darwin-arm64":"0.1.0","@brashkie/signalis-codec-android-arm64":"0.1.0","@brashkie/signalis-codec-linux-x64-gnu":"0.1.0","@brashkie/signalis-codec-linux-x64-musl":"0.1.0","@brashkie/signalis-codec-win32-x64-msvc":"0.1.0","@brashkie/signalis-codec-linux-arm64-gnu":"0.1.0","@brashkie/signalis-codec-linux-arm64-musl":"0.1.0","@brashkie/signalis-codec-win32-arm64-msvc":"0.1.0","@brashkie/signalis-codec-linux-arm-gnueabihf":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/signalis-codec_0.1.0_1785163328798_0.42335143065718395","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@brashkie/signalis-codec","version":"0.1.1","keywords":["protobuf","protocol-buffers","codec","wire-format","serialization","napi","rust","signalis","waproto"],"author":{"url":"Hepein Oficial","name":"Brashkie"},"license":"Apache-2.0","_id":"@brashkie/signalis-codec@0.1.1","maintainers":[{"name":"brashkie","email":"fabianoarjunken@gmail.com"}],"homepage":"https://github.com/Brashkie/signalis-codec","bugs":{"url":"https://github.com/Brashkie/signalis-codec/issues"},"dist":{"shasum":"93c61de787119bcbb4a0153642b30af93231da46","tarball":"https://registry.npmjs.org/@brashkie/signalis-codec/-/signalis-codec-0.1.1.tgz","fileCount":16,"integrity":"sha512-GqaxoOFZHuIOwWO7GRqGf7iqEbLDSsMW5v69knERdx+BtFz+rpzsuHTyC3IWuMgVjvyLjMSu8LGdkRg6a5ZaTg==","signatures":[{"sig":"MEQCIEq0Fd/kHLts7lfTS3ChmwM0VUPQA1ydCse4BjjuHC8gAiABMLw4kyGk6awETMse7Mod8R5cI2AYKKKduOIqmWv0UQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@brashkie%2fsignalis-codec@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1465547},"main":"./dist/index.js","napi":{"name":"signalis-codec","triples":{"defaults":false,"additional":["x86_64-unknown-linux-gnu","x86_64-pc-windows-msvc","aarch64-apple-darwin","x86_64-apple-darwin"]}},"type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"255be1e9ecf37861a4b87592632511319dc91998","scripts":{"lint":"biome check src __tests__","test":"vitest run","build":"npm run build:native && npm run build:ts","format":"biome format --write src __tests__","build:ts":"tsup","lint:fix":"biome check --write src __tests__","artifacts":"napi artifacts","test:rust":"cargo test --workspace --exclude codec-node","typecheck":"tsc --noEmit","test:watch":"vitest","build:debug":"npm run build:native:debug && npm run build:ts","build:native":"napi build --platform --release --cargo-cwd crates/codec-node --js index.js --dts index.d.ts","test:coverage":"vitest run --coverage","build:native:debug":"napi build --platform --cargo-cwd crates/codec-node --js index.js --dts index.d.ts"},"_npmUser":{"name":"brashkie","email":"fabianoarjunken@gmail.com"},"repository":{"url":"git+https://github.com/Brashkie/signalis-codec.git","type":"git"},"_npmVersion":"10.9.8","description":"Safe, Rust-powered protobuf wire codec (Level 1) with bounds-checking and depth limiting. Schema-agnostic foundation for @brashkie/waproto.","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^3.0.0","typescript":"^6.0.3","@types/node":"^22.0.0","@napi-rs/cli":"^2.18.0","@biomejs/biome":"^1.9.0","@vitest/coverage-v8":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/signalis-codec_0.1.1_1785792389609_0.14000679162595153","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@brashkie/signalis-codec","version":"0.1.2","keywords":["protobuf","protocol-buffers","codec","wire-format","serialization","napi","rust","signalis","waproto"],"author":{"url":"Hepein Oficial","name":"Brashkie"},"license":"Apache-2.0","_id":"@brashkie/signalis-codec@0.1.2","maintainers":[{"name":"brashkie","email":"fabianoarjunken@gmail.com"}],"homepage":"https://github.com/Brashkie/signalis-codec","bugs":{"url":"https://github.com/Brashkie/signalis-codec/issues"},"dist":{"shasum":"335bec4e372ef2c18f4c823d777fa0b9f954cd0f","tarball":"https://registry.npmjs.org/@brashkie/signalis-codec/-/signalis-codec-0.1.2.tgz","fileCount":16,"integrity":"sha512-OIm1zQcg6iyuRNIoikikYMhTiGbsY023CUKLc0M+YiESpnJR/RaTT0XmnyZklXZ7QVQmlTGNaNV1kwyWtflfPA==","signatures":[{"sig":"MEUCIQCWvbzbqFZQieIBv5CSonCLF7YN+pZHonm3KHLZ7RyVdwIgOLza1zA8ldy9Hpt3VOPujg+Rg5Z7HG3jKLZJGuUOM4E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@brashkie%2fsignalis-codec@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1466480},"main":"./dist/index.js","napi":{"name":"signalis-codec","triples":{"defaults":false,"additional":["x86_64-unknown-linux-gnu","x86_64-pc-windows-msvc","aarch64-apple-darwin","x86_64-apple-darwin"]}},"type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"eb598a236dd351037a8a2229c1b2db24995cba67","scripts":{"lint":"biome check src __tests__","test":"vitest run","build":"npm run build:native && npm run build:ts","format":"biome format --write src __tests__","build:ts":"tsup","lint:fix":"biome check --write src __tests__","artifacts":"napi artifacts","test:rust":"cargo test --workspace --exclude codec-node","typecheck":"tsc --noEmit","test:watch":"vitest","build:debug":"npm run build:native:debug && npm run build:ts","build:native":"napi build --platform --release --cargo-cwd crates/codec-node --js index.js --dts index.d.ts","test:coverage":"vitest run --coverage","build:native:debug":"napi build --platform --cargo-cwd crates/codec-node --js index.js --dts index.d.ts"},"_npmUser":{"name":"brashkie","email":"fabianoarjunken@gmail.com"},"repository":{"url":"git+https://github.com/Brashkie/signalis-codec.git","type":"git"},"_npmVersion":"10.9.8","description":"Safe, Rust-powered protobuf wire codec (Level 1) with bounds-checking and depth limiting. Schema-agnostic foundation for @brashkie/waproto.","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^3.0.0","typescript":"^6.0.3","@types/node":"^22.0.0","@napi-rs/cli":"^2.18.0","@biomejs/biome":"^1.9.0","@vitest/coverage-v8":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/signalis-codec_0.1.2_1785882916189_0.9269569310018217","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@brashkie/signalis-codec","version":"0.2.0","keywords":["protobuf","protocol-buffers","codec","wire-format","serialization","napi","rust","signalis","waproto"],"author":{"url":"Hepein Oficial","name":"Brashkie"},"license":"Apache-2.0","_id":"@brashkie/signalis-codec@0.2.0","maintainers":[{"name":"brashkie","email":"fabianoarjunken@gmail.com"}],"homepage":"https://github.com/Brashkie/signalis-codec","bugs":{"url":"https://github.com/Brashkie/signalis-codec/issues"},"dist":{"shasum":"b07f809de0bd22d2c125a152009fb1476d7b41af","tarball":"https://registry.npmjs.org/@brashkie/signalis-codec/-/signalis-codec-0.2.0.tgz","fileCount":13,"integrity":"sha512-laS1WspbcxckudDBXC1k/80kJ76gtrXr1MCVzhARluSt7XoC0y7SvnLWoQTlpVGRRXRdJewU9x0v5aZv/1xY1A==","signatures":[{"sig":"MEQCIAfXzkuN2WVZ9C+s0R8KScv7DenQIP1crzbtByP4JwZvAiBO4RQNm21DYCKFL/RW/gfkm5NFCg5KyhcIo8F2Yc82gA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@brashkie%2fsignalis-codec@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":109581},"main":"./dist/index.js","napi":{"name":"signalis-codec","triples":{"defaults":false,"additional":["x86_64-unknown-linux-gnu","x86_64-pc-windows-msvc","aarch64-apple-darwin","x86_64-apple-darwin"]}},"type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"397b428cd9dc3c8c674aa5130c0da599a92873f6","scripts":{"lint":"biome check src __tests__","test":"vitest run","build":"npm run build:native && npm run build:ts","format":"biome format --write src __tests__","build:ts":"tsup","lint:fix":"biome check --write src __tests__","artifacts":"napi artifacts","test:rust":"cargo test --workspace --exclude codec-node","typecheck":"tsc --noEmit","test:watch":"vitest","build:debug":"npm run build:native:debug && npm run build:ts","build:native":"napi build --platform --release --cargo-cwd crates/codec-node --js index.js --dts index.d.ts","preartifacts":"node scripts/create-npm-dirs.js","test:coverage":"vitest run --coverage","build:native:debug":"napi build --platform --cargo-cwd crates/codec-node --js index.js --dts index.d.ts"},"_npmUser":{"name":"brashkie","email":"fabianoarjunken@gmail.com"},"repository":{"url":"git+https://github.com/Brashkie/signalis-codec.git","type":"git"},"_npmVersion":"10.8.2","description":"Safe, Rust-powered protobuf wire codec (Level 1) with bounds-checking and depth limiting. Schema-agnostic foundation for @brashkie/waproto.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^3.0.0","typescript":"^6.0.3","@types/node":"^22.0.0","@napi-rs/cli":"^2.18.0","@biomejs/biome":"^1.9.0","@vitest/coverage-v8":"^3.0.0"},"optionalDependencies":{"@brashkie/signalis-codec-darwin-x64":"0.2.0","@brashkie/signalis-codec-darwin-arm64":"0.2.0","@brashkie/signalis-codec-linux-x64-gnu":"0.2.0","@brashkie/signalis-codec-win32-x64-msvc":"0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/signalis-codec_0.2.0_1785898708116_0.18042083718268787","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@brashkie/signalis-codec","version":"0.3.0","keywords":["protobuf","protocol-buffers","codec","wire-format","serialization","napi","rust","signalis","waproto"],"author":{"url":"Hepein Oficial","name":"Brashkie"},"license":"Apache-2.0","_id":"@brashkie/signalis-codec@0.3.0","maintainers":[{"name":"brashkie","email":"fabianoarjunken@gmail.com"}],"homepage":"https://github.com/Brashkie/signalis-codec","bugs":{"url":"https://github.com/Brashkie/signalis-codec/issues"},"dist":{"shasum":"913b4eaeed6b81bf37dcbe2e4ecbc809747eb460","tarball":"https://registry.npmjs.org/@brashkie/signalis-codec/-/signalis-codec-0.3.0.tgz","fileCount":13,"integrity":"sha512-qOGJ/zg75N6bFacE5m2vTOCGZrlkTJ+QnoRUQVsTjOdMSgXtJzeFlpsImfbB8iifHDeAHE4JzWmGfAgU1fEikA==","signatures":[{"sig":"MEUCICHKNNDDss9JDhJecR2wsXYA2ZTM7xQKuS1u4KGBtAbyAiEAi0ZTHfQC3AY8QQo7VJK+fUuWzgwFEQXEYaJGmEgnTnU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@brashkie%2fsignalis-codec@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":156085},"main":"./dist/index.js","napi":{"name":"signalis-codec","triples":{"defaults":false,"additional":["x86_64-unknown-linux-gnu","x86_64-pc-windows-msvc","aarch64-apple-darwin","x86_64-apple-darwin"]}},"type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"884ea19b88b543b4f0a258d1242e7a714dadb7c6","scripts":{"lint":"biome check src __tests__","test":"vitest run","build":"npm run build:native && npm run build:ts","format":"biome format --write src __tests__","build:ts":"tsup","lint:fix":"biome check --write src __tests__","artifacts":"napi artifacts","test:rust":"cargo test --workspace --exclude codec-node","typecheck":"tsc --noEmit","test:watch":"vitest","build:debug":"npm run build:native:debug && npm run build:ts","build:native":"napi build --platform --release --cargo-cwd crates/codec-node --js index.js --dts index.d.ts","preartifacts":"node scripts/create-npm-dirs.js","test:coverage":"vitest run --coverage","build:native:debug":"napi build --platform --cargo-cwd crates/codec-node --js index.js --dts index.d.ts"},"_npmUser":{"name":"brashkie","email":"fabianoarjunken@gmail.com"},"repository":{"url":"git+https://github.com/Brashkie/signalis-codec.git","type":"git"},"_npmVersion":"10.8.2","description":"Safe, Rust-powered protobuf wire codec (Level 1) with bounds-checking and depth limiting. Schema-agnostic foundation for @brashkie/waproto.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^3.0.0","typescript":"^6.0.3","@types/node":"^22.0.0","@napi-rs/cli":"^2.18.0","@biomejs/biome":"^1.9.0","@vitest/coverage-v8":"^3.0.0"},"optionalDependencies":{"@brashkie/signalis-codec-darwin-x64":"0.3.0","@brashkie/signalis-codec-darwin-arm64":"0.3.0","@brashkie/signalis-codec-linux-x64-gnu":"0.3.0","@brashkie/signalis-codec-win32-x64-msvc":"0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/signalis-codec_0.3.0_1786156162081_0.21357015819149638","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@brashkie/signalis-codec","version":"0.3.1","keywords":["protobuf","protocol-buffers","codec","wire-format","serialization","napi","rust","signalis","waproto"],"author":{"url":"Hepein Oficial","name":"Brashkie"},"license":"Apache-2.0","_id":"@brashkie/signalis-codec@0.3.1","maintainers":[{"name":"brashkie","email":"fabianoarjunken@gmail.com"}],"homepage":"https://github.com/Brashkie/signalis-codec","bugs":{"url":"https://github.com/Brashkie/signalis-codec/issues"},"dist":{"shasum":"042fc6b41401b8bd4089d898a88a694d24bb874c","tarball":"https://registry.npmjs.org/@brashkie/signalis-codec/-/signalis-codec-0.3.1.tgz","fileCount":13,"integrity":"sha512-2gtLErveZEHCuKas0+WQrx6mqKFNHnIR6d6s6nHzXWvSg6mv84GkuwAHaH6r/We3t7Sa/IKzWKQfE8/W2QpgPA==","signatures":[{"sig":"MEUCIQDnEbenq3SRP7jKVs8lUyX7mMxwgRIqY4sgk3OJaWbAiwIgdZFQLbH2EzZg1Yalh2bwAzsOUJkRqnD70aikLeZR/04=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@brashkie%2fsignalis-codec@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":158687},"main":"./dist/index.js","napi":{"name":"signalis-codec","triples":{"defaults":false,"additional":["x86_64-unknown-linux-gnu","x86_64-pc-windows-msvc","aarch64-apple-darwin","x86_64-apple-darwin"]}},"type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"cfd1a0883087e9de8d5edf5f0464252b0336281f","scripts":{"lint":"biome check src __tests__","test":"vitest run","bench":"node benchmarks/vs-protobufjs.mjs","build":"npm run build:native && npm run build:ts","format":"biome format --write src __tests__","build:ts":"tsup","lint:fix":"biome check --write src __tests__","artifacts":"napi artifacts","test:rust":"cargo test --workspace --exclude codec-node","typecheck":"tsc --noEmit","bench:rust":"cargo bench -p codec-bench","test:watch":"vitest","build:debug":"npm run build:native:debug && npm run build:ts","build:native":"napi build --platform --release --cargo-cwd crates/codec-node --js index.js --dts index.d.ts","preartifacts":"node scripts/create-npm-dirs.js","test:coverage":"vitest run --coverage","build:native:debug":"napi build --platform --cargo-cwd crates/codec-node --js index.js --dts index.d.ts"},"_npmUser":{"name":"brashkie","email":"fabianoarjunken@gmail.com"},"repository":{"url":"git+https://github.com/Brashkie/signalis-codec.git","type":"git"},"_npmVersion":"10.8.2","description":"Safe, Rust-powered protobuf wire codec (Level 1) with bounds-checking and depth limiting. Schema-agnostic foundation for @brashkie/waproto.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^3.0.0","tinybench":"^3.0.0","protobufjs":"^7.4.0","typescript":"^6.0.3","@types/node":"^22.0.0","@napi-rs/cli":"^2.18.0","@biomejs/biome":"^1.9.0","@vitest/coverage-v8":"^3.0.0"},"optionalDependencies":{"@brashkie/signalis-codec-darwin-x64":"0.3.1","@brashkie/signalis-codec-darwin-arm64":"0.3.1","@brashkie/signalis-codec-linux-x64-gnu":"0.3.1","@brashkie/signalis-codec-win32-x64-msvc":"0.3.1"},"_npmOperationalInternal":{"tmp":"tmp/signalis-codec_0.3.1_1789102289325_0.7440723600603973","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@brashkie/signalis-codec","version":"0.4.0","keywords":["protobuf","protocol-buffers","codec","wire-format","serialization","napi","rust","signalis","waproto"],"author":{"url":"Hepein Oficial","name":"Brashkie"},"license":"Apache-2.0","_id":"@brashkie/signalis-codec@0.4.0","maintainers":[{"name":"brashkie","email":"fabianoarjunken@gmail.com"}],"homepage":"https://github.com/Brashkie/signalis-codec","bugs":{"url":"https://github.com/Brashkie/signalis-codec/issues"},"dist":{"shasum":"83980c3ad897226b7ba07a4165e4f0a84ee1e888","tarball":"https://registry.npmjs.org/@brashkie/signalis-codec/-/signalis-codec-0.4.0.tgz","fileCount":13,"integrity":"sha512-jUMIcZZrR/5/YBVeVUl67jN5uXZ/yNmaN+k3gUXw54ncvSfLr5lgpI5uwrR3GKglJXtEHpzS4vWOsmuUBd2DUQ==","signatures":[{"sig":"MEUCIFDLHZr+D7ubRVUVXmlQnB5E+AOzs198MHo/3oPEsfZZAiEAiWKP/AwDCGzLbTI08NpId/jj5fQminegoQ1yJ/fQfnQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@brashkie%2fsignalis-codec@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":195103},"main":"./dist/index.js","napi":{"name":"signalis-codec","triples":{"defaults":false,"additional":["x86_64-unknown-linux-gnu","x86_64-pc-windows-msvc","aarch64-apple-darwin","x86_64-apple-darwin"]}},"type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"1e42e74816b8a8fd217ae3b05e300c65becf07c4","scripts":{"lint":"biome check src __tests__","test":"vitest run","bench":"node benchmarks/vs-protobufjs.mjs","build":"npm run build:native && npm run build:ts","format":"biome format --write src __tests__","build:ts":"tsup","lint:fix":"biome check --write src __tests__","artifacts":"napi artifacts","test:rust":"cargo test --workspace --exclude codec-node","typecheck":"tsc --noEmit","bench:rust":"cargo bench -p codec-bench","test:watch":"vitest","build:debug":"npm run build:native:debug && npm run build:ts","build:native":"napi build --platform --release --cargo-cwd crates/codec-node --js index.js --dts index.d.ts","preartifacts":"node scripts/create-npm-dirs.js","test:coverage":"vitest run --coverage","build:native:debug":"napi build --platform --cargo-cwd crates/codec-node --js index.js --dts index.d.ts"},"_npmUser":{"name":"brashkie","email":"fabianoarjunken@gmail.com"},"repository":{"url":"git+https://github.com/Brashkie/signalis-codec.git","type":"git"},"_npmVersion":"10.8.2","description":"Safe, Rust-powered protobuf wire codec (Level 1) with bounds-checking and depth limiting. Schema-agnostic foundation for @brashkie/waproto.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^3.0.0","tinybench":"^3.0.0","protobufjs":"^7.4.0","typescript":"^6.0.3","@types/node":"^22.0.0","@napi-rs/cli":"^2.18.0","@biomejs/biome":"^1.9.0","@vitest/coverage-v8":"^3.0.0"},"optionalDependencies":{"@brashkie/signalis-codec-darwin-x64":"0.4.0","@brashkie/signalis-codec-darwin-arm64":"0.4.0","@brashkie/signalis-codec-linux-x64-gnu":"0.4.0","@brashkie/signalis-codec-win32-x64-msvc":"0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/signalis-codec_0.4.0_1789173346957_0.9766299388970316","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"_id":"@brashkie/signalis-codec@0.5.0","bugs":{"url":"https://github.com/Brashkie/signalis-codec/issues"},"dist":{"shasum":"82696a00b22d1a7033488b0ad05b355acd093d11","tarball":"https://registry.npmjs.org/@brashkie/signalis-codec/-/signalis-codec-0.5.0.tgz","fileCount":13,"integrity":"sha512-gosAgF9ibx2iWBZbr0CkBbAUXcd5ecAaK72M84WEAq156tjjIbE2nSngIBUq27v50dtL2eh0WhonBmc7f2vJHg==","signatures":[{"sig":"MEQCIF7Wpy8+WuHE6Qwnjdbus5eKIkDjbVUesORPsXMD/U4KAiBWlgw4q8N5VRxAOwZraucMmG2KG92f5KKUYnrrkYiVYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDCof72E6cU/8qf+vDfPbjAVdOkHL6BXMhagMXdZ7+zUwIgP+H+XGa16LPiB8haGAuusod/sWjVM1Jhz18827J5p14="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@brashkie%2fsignalis-codec@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":210318},"main":"./dist/index.js","name":"@brashkie/signalis-codec","napi":{"name":"signalis-codec","triples":{"defaults":false,"additional":["x86_64-unknown-linux-gnu","x86_64-pc-windows-msvc","aarch64-apple-darwin","x86_64-apple-darwin"]}},"type":"commonjs","types":"./dist/index.d.ts","author":{"url":"Hepein Oficial","name":"Brashkie"},"module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"91cd6800e66c8dc3b35aa0b3768c7140bb08c1f2","license":"Apache-2.0","scripts":{"lint":"biome check src __tests__","test":"vitest run","bench":"node benchmarks/vs-protobufjs.mjs","build":"npm run build:native && npm run build:ts","format":"biome format --write src __tests__","build:ts":"tsup","lint:fix":"biome check --write src __tests__","artifacts":"napi artifacts","test:rust":"cargo test --workspace --exclude codec-node","typecheck":"tsc --noEmit","bench:rust":"cargo bench -p codec-bench","test:watch":"vitest","build:debug":"npm run build:native:debug && npm run build:ts","build:native":"napi build --platform --release --cargo-cwd crates/codec-node --js index.js --dts index.d.ts","preartifacts":"node scripts/create-npm-dirs.js","test:coverage":"vitest run --coverage","build:native:debug":"napi build --platform --cargo-cwd crates/codec-node --js index.js --dts index.d.ts"},"version":"0.5.0","_npmUser":{"name":"brashkie","email":"fabianoarjunken@gmail.com"},"homepage":"https://github.com/Brashkie/signalis-codec","keywords":["protobuf","protocol-buffers","codec","wire-format","serialization","napi","rust","signalis","waproto"],"repository":{"url":"git+https://github.com/Brashkie/signalis-codec.git","type":"git"},"_npmVersion":"10.8.2","description":"Safe, Rust-powered protobuf wire codec (Level 1) with bounds-checking and depth limiting. Schema-agnostic foundation for @brashkie/waproto.","directories":{},"maintainers":[{"name":"brashkie","email":"fabianoarjunken@gmail.com"}],"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^3.0.0","tinybench":"^3.0.0","protobufjs":"^7.4.0","typescript":"^6.0.3","@types/node":"^22.0.0","@napi-rs/cli":"^2.18.0","@biomejs/biome":"^1.9.0","@vitest/coverage-v8":"^3.0.0"},"optionalDependencies":{"@brashkie/signalis-codec-darwin-x64":"0.5.0","@brashkie/signalis-codec-darwin-arm64":"0.5.0","@brashkie/signalis-codec-linux-x64-gnu":"0.5.0","@brashkie/signalis-codec-win32-x64-msvc":"0.5.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/signalis-codec_0.5.0_1789862301471_0.8754915215481727"}}},"time":{"created":"2026-07-27T14:42:08.628Z","modified":"2026-09-19T23:58:21.888Z","0.1.0":"2026-07-27T14:42:08.966Z","0.1.1":"2026-08-03T21:26:29.986Z","0.1.2":"2026-08-04T22:35:16.381Z","0.2.0":"2026-08-05T02:58:28.264Z","0.3.0":"2026-08-08T02:29:22.230Z","0.3.1":"2026-09-11T04:51:29.469Z","0.4.0":"2026-09-12T00:35:47.141Z","0.5.0":"2026-09-19T23:58:21.573Z"},"bugs":{"url":"https://github.com/Brashkie/signalis-codec/issues"},"author":{"url":"Hepein Oficial","name":"Brashkie"},"license":"Apache-2.0","homepage":"https://github.com/Brashkie/signalis-codec","keywords":["protobuf","protocol-buffers","codec","wire-format","serialization","napi","rust","signalis","waproto"],"repository":{"url":"git+https://github.com/Brashkie/signalis-codec.git","type":"git"},"description":"Safe, Rust-powered protobuf wire codec (Level 1) with bounds-checking and depth limiting. Schema-agnostic foundation for @brashkie/waproto.","maintainers":[{"name":"brashkie","email":"fabianoarjunken@gmail.com"}],"readme":"<div align=\"center\">\n\n# @brashkie/signalis-codec\n\n**A safe, Rust-powered protobuf wire codec.**\n\n[![CI](https://github.com/Brashkie/signalis-codec/actions/workflows/ci.yml/badge.svg)](https://github.com/Brashkie/signalis-codec/actions/workflows/ci.yml)\n[![npm version](https://img.shields.io/npm/v/@brashkie/signalis-codec.svg)](https://www.npmjs.com/package/@brashkie/signalis-codec)\n[![license](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](./LICENSE)\n[![types](https://img.shields.io/badge/types-TypeScript-3178c6.svg)](https://www.typescriptlang.org/)\n[![core](https://img.shields.io/badge/core-Rust-orange.svg)](https://www.rust-lang.org/)\n\n</div>\n\n---\n\nA **Level-1 protobuf wire codec**: it reads and writes Protocol Buffers' four\nwire types (varint, fixed64, length-delimited, fixed32) with a Rust core that is\nstrictly bounds-checked and **depth-limited by design**. It is schema-agnostic —\nyou work with field numbers and wire types, not named messages.\n\nThis is the serialization foundation for [`@brashkie/waproto`](https://github.com/Brashkie/waproto)\n(WhatsApp's protobuf schema), but it's a useful standalone protobuf primitive for\nany binary protocol.\n\n## Why another protobuf library?\n\nMost JS protobuf libraries are pure JavaScript and were not written with hostile\ninput as a first-class concern. WhatsApp's schema is deeply recursive, and a\ncrafted payload nesting tens of thousands of levels can exhaust the stack — a\nreal, disclosed class of denial-of-service (the \"Proto6\" bugs).\n\n`signalis-codec` addresses this at the core:\n\n- **Rust engine** — native speed for varint-heavy parsing, memory-safe by\n  construction (`#![forbid(unsafe_code)]`).\n- **Depth limiting** — recursive decoding is bounded by an explicit `maxDepth`;\n  exceeding it throws instead of overflowing the stack.\n- **Strict bounds-checking** — every read validates the buffer first, so\n  truncated or malicious input yields a clean error with a byte position.\n- **No panics on bad input** — malformed payloads always surface as catchable\n  errors.\n\n## Install\n\n```bash\nnpm install @brashkie/signalis-codec\n```\n\nPrebuilt native binaries ship for common platforms; no toolchain needed to use it.\n\n### Supported platforms\n\nPrebuilt binaries are bundled for:\n\n| OS | Architecture |\n|----|--------------|\n| Linux | x64 (glibc) |\n| macOS | x64 (Intel) · arm64 (Apple Silicon) |\n| Windows | x64 |\n\nOn any other platform, install fails to find a binary. If you need one that\nisn't listed, open an issue — adding a target is a one-line change to the build\nmatrix. (To build from source you need a Rust toolchain and Node 18+.)\n\n## Quick start\n\n```ts\nimport { encodeFields, decodeFields, WireType } from '@brashkie/signalis-codec';\n\n// Encode a few typed fields\nconst buf = encodeFields([\n  { fieldNumber: 1, wireType: WireType.Varint, varint: 150n },\n  { fieldNumber: 2, wireType: WireType.Bytes, bytes: Buffer.from('hello') },\n]);\n// buf → <Buffer 08 96 01 12 05 68 65 6c 6c 6f>\n\n// Decode back\nconst fields = decodeFields(buf);\n// [\n//   { fieldNumber: 1, wireType: 0, varint: 150n },\n//   { fieldNumber: 2, wireType: 2, bytes: <Buffer 68 65 6c 6c 6f> },\n// ]\n```\n\n64-bit values (varint, fixed64) are returned as `BigInt` so all 64 bits survive\nthe trip through JavaScript.\n\n## Recursive decoding with a depth limit\n\nFor nested messages, `decodeTree` descends into submessages while enforcing a\nmaximum depth — the anti-DoS guarantee:\n\n```ts\nimport { decodeTree } from '@brashkie/signalis-codec';\n\nconst tree = decodeTree(buf, 100); // maxDepth = 100 (default)\n// tree nodes have kind: 'varint' | 'fixed64' | 'fixed32' | 'bytes' | 'message'\n\n// A malicious 10,000-deep payload throws instead of crashing:\ndecodeTree(evilBuf, 100); // → Error: nesting depth exceeded limit of 100\n```\n\n## Logical-type helpers\n\nThe wire codec is schema-agnostic: a varint is just a varint. The *logical* type\n(int32 vs sint32 vs bool vs enum…) lives in the schema, so decoding returns raw\nvalues and a set of helpers interprets them. The `as*` (read) and `from*` (write)\nhelpers are perfectly symmetric, and every `from*` is range-checked — passing an\nout-of-range value throws `RangeError` rather than silently truncating.\n\n```ts\nimport {\n  encodeFields, decodeFields, WireType,\n  asUint32, asString, fromUint32, fromString,\n} from '@brashkie/signalis-codec';\n\n// Given a schema like:  message Device { uint32 id = 1; string name = 2; }\n\n// Encode\nconst buf = encodeFields([\n  { fieldNumber: 1, wireType: WireType.Varint, varint: fromUint32(150) },\n  { fieldNumber: 2, wireType: WireType.Bytes,  bytes:  fromString('phone') },\n]);\n\n// Decode\nconst f = decodeFields(buf);\nconst device = {\n  id:   asUint32(f[0].varint),\n  name: asString(f[1].bytes),\n};\n// → { id: 150, name: 'phone' }\n```\n\nAvailable helpers, grouped by the wire type they read from / write to:\n\n| Wire type | Read (`as*`) | Write (`from*`) |\n|-----------|--------------|-----------------|\n| Varint | `asInt32` `asInt64` `asUint32` `asUint64` `asSint32` `asSint64` `asBool` `asEnum` | mirror `from*` |\n| Fixed32 | `asFloat` `asFixed32` `asSfixed32` | mirror `from*` |\n| Fixed64 | `asDouble` `asFixed64` `asSfixed64` | mirror `from*` |\n| Bytes | `asString` `asBytes` | mirror `from*` |\n\nNegative `int32` (encoded as a full-width varint), ZigZag `sint*`, and IEEE-754\n`float`/`double` are all handled correctly and verified against the reference\nprotobuf implementation.\n\n## Packed repeated fields\n\nA `repeated` field marked `[packed=true]` is encoded as a single\nlength-delimited field whose payload is the concatenated element values (no\nper-element tags). The physical packing runs in the Rust engine; a typed helper\nper protobuf type layers the logical conversion on top.\n\n```ts\nimport {\n  encodeFields, decodeFields, WireType,\n  encodePackedSint32, decodePackedSint32,\n} from '@brashkie/signalis-codec';\n\n// message Path { repeated sint32 deltas = 4 [packed=true]; }\n\n// Encode: build the packed payload, then wrap it in a length-delimited field.\nconst payload = encodePackedSint32([-10, 20, -30]);\nconst buf = encodeFields([{ fieldNumber: 4, wireType: WireType.Bytes, bytes: payload }]);\n\n// Decode: read the field, then unpack its bytes.\nconst field = decodeFields(buf)[0];\nconst deltas = decodePackedSint32(field.bytes!); // [-10, 20, -30]\n```\n\nThere's an `encodePacked*` / `decodePacked*` pair for every packable type:\n`int32`, `int64`, `uint32`, `uint64`, `sint32`, `sint64`, `bool`, `enum`,\n`float`, `double`, `fixed32`, `sfixed32`, `fixed64`, `sfixed64`. For raw packing\nwithout type interpretation, the low-level `packVarints` / `unpackVarints`,\n`packFixed32` / `unpackFixed32`, and `packFixed64` / `unpackFixed64` are exported\ntoo.\n\n## Lazy decoding for large / sparse messages\n\n`lazyIndex` scans a buffer **once** into an offset table (crossing the native\nboundary a single time, as one typed array — no per-field object allocation) and\nlets you read only the fields you need, on demand, in O(1):\n\n```ts\nimport { lazyIndex } from '@brashkie/signalis-codec';\n\nconst msg = lazyIndex(buf);          // one pass, nothing decoded yet\nif (msg.getUint32(2) !== 3) return;  // route by a single field, payload untouched\nconst jid = msg.getString(1);        // decode one field, no extra boundary crossing\nconst media = msg.getMessage(7);     // index a submessage in place\n```\n\n`LazyMessage` offers `has`, `fieldCount`, `fieldNumbers`, and typed getters\n(`getVarint`, `getUint32`, `getBool`, `getString`, `getBytes`, `getFixed32`,\n`getFixed64`, `getMessage`). `getBytes` returns a **view** over the buffer — copy\nit if you keep it beyond the buffer's lifetime.\n\n**When it helps (measured, honest):** the lazy path is an *adaptive* strategy,\nnot a universal speedup.\n\n| Message | Winner |\n|---|---|\n| Small (1–4 fields, ~88 B — typical chat/signalling) | eager decode / protobuf.js is faster |\n| Large & sparse (>1 KB, read a few of many fields) | **lazy: 1.3×–2.7× faster, zero GC churn** |\n\nUse `lazyIndex` for large payloads (history sync, media metadata, heavy\ndocuments) and routing/filtering; use eager `decodeFields` for small messages.\nBoth keep 100% protobuf wire-format compatibility.\n\n\n**Repeated fields (v0.5.0):** `getAllStrings`, `getAllBytes`, `getAllVarints`, `getAllUint32`, `getAllMessages`, and `count` return every occurrence of a field (protobuf `repeated`). Single-value getters still return the first.\n## API\n\n| Export | Description |\n|--------|-------------|\n| `encodeFields(fields)` | Encode a list of typed fields to a `Buffer` |\n| `decodeFields(buf)` | Decode a flat list of fields (no recursion) |\n| `decodeTree(buf, maxDepth?)` | Recursively decode into a bounded tree |\n| `zigzagEncode` / `zigzagDecode` | ZigZag transform for `sint32` / `sint64` |\n| `fieldKey(n, wireType)` | Compute a field key (tag) |\n| `WireType` | Enum: `Varint`, `Fixed64`, `Bytes`, `Fixed32` |\n| `DEFAULT_MAX_DEPTH` | `100` |\n\nWire types map to protobuf as: `Varint` → int/uint/sint/bool/enum;\n`Fixed64` → double/fixed64/sfixed64; `Fixed32` → float/fixed32/sfixed32;\n`Bytes` → string/bytes/embedded messages/packed repeated.\n\n## What this is (and isn't)\n\n- ✅ A **wire codec** — the byte-level layer of protobuf.\n- ❌ Not a **schema compiler** — it doesn't read `.proto` files or generate typed\n  message classes. That's a higher layer (e.g. `@brashkie/waproto` maps field\n  numbers to WhatsApp's schema on top of this codec).\n\nKeeping the codec schema-agnostic makes it small, auditable, and reusable for any\nprotobuf-based protocol.\n\n## Architecture\n\n```\ncrates/codec-core   Pure Rust wire codec (no dependencies, no unsafe)\ncrates/codec-node   NAPI-RS bindings → the native addon\nsrc/                TypeScript wrapper with the typed public API\n```\n\nThe Rust core is exercised by its own `cargo test` suite; the TypeScript layer by\nVitest against the real native addon.\n\n## Benchmarks\n\nTwo benchmark suites live in the repo (both dev-only, not shipped):\n\n```\nnpm run bench:rust    # Criterion micro-benchmarks of the Rust core\nnpm run bench         # head-to-head vs protobuf.js (run after `npm run build`)\n```\n\nThe `bench` script encodes and decodes the same messages with both\n`signalis-codec` and `protobuf.js`, first asserting they produce **byte-identical**\noutput, then reporting ops/sec. The native engine's advantage is largest on\nvarint-heavy and larger payloads (the parsing this codec is built for); for very\nsmall messages the NAPI boundary crossing means a tuned pure-JS decoder can be\ncompetitive. Run them on your own hardware — numbers vary by CPU.\n\n## Security\n\nSee [SECURITY.md](./SECURITY.md). In short: terminate on decode errors, and pick\na `maxDepth` appropriate to your protocol (WhatsApp messages nest only a handful\nof levels; the default of 100 is generous).\n\n## Ecosystem\n\n| Package | Role |\n|---------|------|\n| [`@brashkie/signalis-core`](https://github.com/Brashkie/signalis-core) | Cryptographic primitives (Rust) |\n| [`@brashkie/signalis`](https://github.com/Brashkie/signalis) | The Signal Protocol |\n| [`@brashkie/signalis-noise`](https://github.com/Brashkie/signalis-noise) | The Noise Protocol Framework |\n| **`@brashkie/signalis-codec`** | **This package — protobuf wire codec** |\n\n## License\n\nApache-2.0 © Brashkie (Hepein Oficial)\n","readmeFilename":"README.md"}