{"_id":"@addmaple/parquet-lite","_rev":"13-73290229c754229864c8041610902431","name":"@addmaple/parquet-lite","dist-tags":{"latest":"1.2.1"},"versions":{"0.1.0":{"name":"@addmaple/parquet-lite","version":"0.1.0","keywords":["parquet","wasm","webassembly","data","columnar"],"license":"MIT","_id":"@addmaple/parquet-lite@0.1.0","maintainers":[{"name":"hitradostava","email":"nick@addmaple.com"}],"dist":{"shasum":"5cc2585e356d7bb05a619f70a27d58812f9635d9","tarball":"https://registry.npmjs.org/@addmaple/parquet-lite/-/parquet-lite-0.1.0.tgz","fileCount":5,"integrity":"sha512-zbe5F2cUfhAPjPSAF0SVdRlwpQXLZdrHhXwUb3+j+a7R7zj3/ufYdF9gRGweJiFzX6JD8Ls78bArtHqq4h6MLw==","signatures":[{"sig":"MEUCIQDaZ3Vs1h30oxid0mxkrs5uB4fhI0lcdW/cKPz72J3b0QIgYehvLBA6DM3YNvmV1KQ/KwCEajC5wnv0PeTVTzOMnuo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13737},"main":"./dist/index.js","type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./reader":{"types":"./dist/reader.d.ts","import":"./dist/reader.js"},"./writer":{"types":"./dist/writer.d.ts","import":"./dist/writer.js"}},"gitHead":"f2d862b7339a0750af43b3f99acc7f793010d8ba","scripts":{"test":"node --test test/*.test.js","build":"npm run build:wasm && npm run build:js","clean":"rm -rf dist","build:js":"node scripts/build.js","build:wasm":"npm run build:writer-web && npm run build:reader-web","build:reader-web":"wasm-pack build crates/parquet-lite-reader --target web --out-dir ../../dist/wasm-reader","build:writer-web":"wasm-pack build crates/parquet-lite-writer --target web --out-dir ../../dist/wasm-writer"},"_npmUser":{"name":"hitradostava","email":"nick@addmaple.com"},"_npmVersion":"10.9.3","description":"Lightweight Parquet reader/writer using Rust compiled to WebAssembly","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/parquet-lite_0.1.0_1764191939261_0.46399952004225886","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@addmaple/parquet-lite","version":"0.1.1","keywords":["parquet","wasm","webassembly","data","columnar"],"license":"MIT","_id":"@addmaple/parquet-lite@0.1.1","maintainers":[{"name":"hitradostava","email":"nick@addmaple.com"}],"dist":{"shasum":"bc9a7f753e50d5ca438aff3d5c24547d8f667226","tarball":"https://registry.npmjs.org/@addmaple/parquet-lite/-/parquet-lite-0.1.1.tgz","fileCount":15,"integrity":"sha512-qE+YVLcw8rdTfbA/xIjbo7vUutZZ8vUIw4WJH6qnVlmIa+1wTbIrVRCz412NEb9dpYfuFFJVjaNzXYPoTojl6Q==","signatures":[{"sig":"MEQCIFwRpkUf70RC79zgfLpgOBV+gwiX71eSvZ1qOXI7zI2/AiAPQJqAFBd/WVrmI2RTL1L5lbSI2imJaDga7nw+/kKMug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":457486},"main":"./dist/index.js","type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./reader":{"types":"./dist/reader.d.ts","import":"./dist/reader.js"},"./writer":{"types":"./dist/writer.d.ts","import":"./dist/writer.js"}},"gitHead":"f2d862b7339a0750af43b3f99acc7f793010d8ba","scripts":{"test":"node --test test/*.test.js","build":"npm run build:wasm && npm run build:js","clean":"rm -rf dist","build:js":"node scripts/build.js","build:wasm":"npm run build:writer-web && npm run build:reader-web","build:reader-web":"wasm-pack build crates/parquet-lite-reader --target web --out-dir ../../dist/wasm-reader","build:writer-web":"wasm-pack build crates/parquet-lite-writer --target web --out-dir ../../dist/wasm-writer"},"_npmUser":{"name":"hitradostava","email":"nick@addmaple.com"},"_npmVersion":"10.9.3","description":"Lightweight Parquet reader/writer using Rust compiled to WebAssembly","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/parquet-lite_0.1.1_1764191986139_0.05464837190457961","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@addmaple/parquet-lite","version":"0.1.2","keywords":["parquet","wasm","webassembly","data","columnar"],"license":"MIT","_id":"@addmaple/parquet-lite@0.1.2","maintainers":[{"name":"hitradostava","email":"nick@addmaple.com"}],"dist":{"shasum":"4514fa0c080b15b11fafddc8d01bf0c8929d45b0","tarball":"https://registry.npmjs.org/@addmaple/parquet-lite/-/parquet-lite-0.1.2.tgz","fileCount":15,"integrity":"sha512-pfnKDz3rxAXHc/PLQYRj4p3ycbJn9psHfb6k3bDmvXSno9OyMvaV+iErZD2zTSDPFk/879u0X6vdPgMu9Cp3NA==","signatures":[{"sig":"MEUCIQCycpWjJ1wz2UBNHxjo5zUUlk1LqqaloFkiXt5SUgd58wIgZjf656MRHXnFL0JJNLe60nkoU1E+GrCjICnJ+rkrIwo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":460391},"main":"./dist/index.js","type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./reader":{"types":"./dist/reader.d.ts","import":"./dist/reader.js"},"./writer":{"types":"./dist/writer.d.ts","import":"./dist/writer.js"}},"gitHead":"255ba8c040c5e487e25f75dc87b17d74ffd04ef9","scripts":{"lint":"cargo clippy --all-targets --all-features -- -D warnings","test":"node --test test/*.test.js","build":"npm run build:wasm && npm run build:js","clean":"rm -rf dist","build:js":"node scripts/build.js","lint:fix":"cargo clippy --fix --all-targets --all-features","benchmark":"node --expose-gc benchmark/benchmark.js","test:rust":"cargo test","build:wasm":"npm run build:writer-web && npm run build:reader-web","build:reader-web":"wasm-pack build crates/parquet-lite-reader --target web --out-dir ../../dist/wasm-reader","build:writer-web":"wasm-pack build crates/parquet-lite-writer --target web --out-dir ../../dist/wasm-writer"},"_npmUser":{"name":"hitradostava","email":"nick@addmaple.com"},"_npmVersion":"10.9.3","description":"Lightweight Parquet reader/writer using Rust compiled to WebAssembly","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"parquetjs":"^0.11.2"},"_npmOperationalInternal":{"tmp":"tmp/parquet-lite_0.1.2_1764194748356_0.5228256697298048","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@addmaple/parquet-lite","version":"0.1.3","keywords":["parquet","wasm","webassembly","data","columnar"],"license":"MIT","_id":"@addmaple/parquet-lite@0.1.3","maintainers":[{"name":"hitradostava","email":"nick@addmaple.com"}],"dist":{"shasum":"0e1d4a891d856bbf33bebe5800f66c985efae0ca","tarball":"https://registry.npmjs.org/@addmaple/parquet-lite/-/parquet-lite-0.1.3.tgz","fileCount":15,"integrity":"sha512-lT1tiF09+izqYO+ZeFFc4QPlg9gT0onMVIgYNpzJaNbFc6vIYIgOR1XSitR9XrBSYCwWQ7S8l6u/BpCE2YiJJw==","signatures":[{"sig":"MEUCIQDNUIkHJis5hH2YzB+KbophKb3wM0d4UsYANK3I92MvtQIgXLLmO2KT9NNPwi9J/6n8eyYYD/5zr4j8ma79S3WYo10=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":518237},"main":"./dist/index.js","type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./reader":{"types":"./dist/reader.d.ts","import":"./dist/reader.js"},"./writer":{"types":"./dist/writer.d.ts","import":"./dist/writer.js"}},"gitHead":"a2bd74aa5155f7fd45f37f10ef159cdb95b8045b","scripts":{"lint":"cargo clippy --all-targets --all-features -- -D warnings","test":"node --test test/*.test.js","build":"npm run build:wasm && npm run build:js","clean":"rm -rf dist","build:js":"node scripts/build.js","lint:fix":"cargo clippy --fix --all-targets --all-features","benchmark":"node --expose-gc benchmark/benchmark.js","test:rust":"cargo test","build:wasm":"npm run build:writer-web && npm run build:reader-web","build:reader-web":"wasm-pack build crates/parquet-lite-reader --target web --out-dir ../../dist/wasm-reader","build:writer-web":"wasm-pack build crates/parquet-lite-writer --target web --out-dir ../../dist/wasm-writer"},"_npmUser":{"name":"hitradostava","email":"nick@addmaple.com"},"_npmVersion":"10.9.3","description":"Lightweight Parquet reader/writer using Rust compiled to WebAssembly","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"parquetjs":"^0.11.2"},"_npmOperationalInternal":{"tmp":"tmp/parquet-lite_0.1.3_1764196444140_0.7055904277369012","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@addmaple/parquet-lite","version":"0.1.4","keywords":["parquet","wasm","webassembly","data","columnar"],"license":"MIT","_id":"@addmaple/parquet-lite@0.1.4","maintainers":[{"name":"hitradostava","email":"nick@addmaple.com"}],"dist":{"shasum":"c2e9a2447d2f90b0cb1998c5711d8da8887549a8","tarball":"https://registry.npmjs.org/@addmaple/parquet-lite/-/parquet-lite-0.1.4.tgz","fileCount":15,"integrity":"sha512-8rIpcgT292iLqDL45b1cvZXgLNSBA1V2wBZrI0RPO4szwEezWxHGFU/0QeFj6k1SWWml601g7K3s8GM1TlHcQg==","signatures":[{"sig":"MEYCIQCbj3hTvX5ulUKGOauDYUTTxXkkdjq0UARZUnKkTWa3PgIhAPhYeA9rwmw5jtRirVKi4AcnQ5JZTacUsJ6xor8qtUH5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":547272},"main":"./dist/index.js","type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./reader":{"types":"./dist/reader.d.ts","import":"./dist/reader.js"},"./writer":{"types":"./dist/writer.d.ts","import":"./dist/writer.js"}},"gitHead":"c09ec68c4f5997f5d8b3c174e336fd9101d72cf3","scripts":{"lint":"cargo clippy --all-targets --all-features -- -D warnings","test":"node --test test/*.test.js","build":"npm run build:wasm && npm run build:js","clean":"rm -rf dist","build:js":"node scripts/build.js","lint:fix":"cargo clippy --fix --all-targets --all-features","benchmark":"node --expose-gc benchmark/benchmark.js","test:rust":"cargo test","build:wasm":"npm run build:writer-web && npm run build:reader-web","build:reader-web":"wasm-pack build crates/parquet-lite-reader --target web --out-dir ../../dist/wasm-reader","build:writer-web":"wasm-pack build crates/parquet-lite-writer --target web --out-dir ../../dist/wasm-writer"},"_npmUser":{"name":"hitradostava","email":"nick@addmaple.com"},"_npmVersion":"10.9.3","description":"Lightweight Parquet reader/writer using Rust compiled to WebAssembly","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"parquetjs":"^0.11.2"},"_npmOperationalInternal":{"tmp":"tmp/parquet-lite_0.1.4_1764199532249_0.5376068758041923","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@addmaple/parquet-lite","version":"0.1.5","keywords":["parquet","wasm","webassembly","data","columnar"],"license":"MIT","_id":"@addmaple/parquet-lite@0.1.5","maintainers":[{"name":"hitradostava","email":"nick@addmaple.com"}],"dist":{"shasum":"ec9983931e6584f6534f7bd8342a5bca447b0724","tarball":"https://registry.npmjs.org/@addmaple/parquet-lite/-/parquet-lite-0.1.5.tgz","fileCount":15,"integrity":"sha512-8bQaLbxJ3INYYY180TvLtNd38oUQoAFjuNHe9vXojin/Spu89c4qQETScqITVSPvI23fBmAG4uEgJNvS3VKnjw==","signatures":[{"sig":"MEUCICa5B+dHQy4LBodNyykmfYO1cCd18Ffb3Kqa/OtbyECZAiEAtOCZaOduZ9hrha45O8DeDvvRwp0tRXmTQwucjc128Hc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":549229},"main":"./dist/index.js","type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./reader":{"types":"./dist/reader.d.ts","import":"./dist/reader.js"},"./writer":{"types":"./dist/writer.d.ts","import":"./dist/writer.js"}},"gitHead":"713b2aa7d5edaeeba8573acf8a7e39a7645aec20","scripts":{"lint":"cargo clippy --all-targets --all-features -- -D warnings","test":"node --test test/*.test.js","build":"npm run build:wasm && npm run build:js","clean":"rm -rf dist","build:js":"node scripts/build.js","lint:fix":"cargo clippy --fix --all-targets --all-features","benchmark":"node --expose-gc benchmark/benchmark.js","test:rust":"cargo test","build:wasm":"npm run build:writer-web && npm run build:reader-web","build:reader-web":"wasm-pack build crates/parquet-lite-reader --target web --out-dir ../../dist/wasm-reader","build:writer-web":"wasm-pack build crates/parquet-lite-writer --target web --out-dir ../../dist/wasm-writer"},"_npmUser":{"name":"hitradostava","email":"nick@addmaple.com"},"_npmVersion":"10.9.3","description":"Lightweight Parquet reader/writer using Rust compiled to WebAssembly","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"parquetjs":"^0.11.2"},"_npmOperationalInternal":{"tmp":"tmp/parquet-lite_0.1.5_1764520019677_0.7530438301739313","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@addmaple/parquet-lite","version":"0.1.6","keywords":["parquet","wasm","webassembly","data","columnar"],"license":"MIT","_id":"@addmaple/parquet-lite@0.1.6","maintainers":[{"name":"hitradostava","email":"nick@addmaple.com"}],"dist":{"shasum":"602a92fb949dc7292118b866165ddfede3500f67","tarball":"https://registry.npmjs.org/@addmaple/parquet-lite/-/parquet-lite-0.1.6.tgz","fileCount":15,"integrity":"sha512-HJ+TprPDTchLgzGKTFGcvaiN3DcjJblO3+5UER0qAW186Ds4kDETVGwkq5iPmeqE0jJk3FAit6gYPg3xq0+dKQ==","signatures":[{"sig":"MEYCIQCB8IikuNbz+PkKu1PhWLHWmisnseYX7Y8iPuhm7Wq1AQIhAJiRUX7i2laeRNhAWGKjlc5/xMBSMl8E25Wlo764owOu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":563655},"main":"./dist/index.js","type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./reader":{"types":"./dist/reader.d.ts","import":"./dist/reader.js"},"./writer":{"types":"./dist/writer.d.ts","import":"./dist/writer.js"}},"gitHead":"713b2aa7d5edaeeba8573acf8a7e39a7645aec20","scripts":{"lint":"cargo clippy --all-targets --all-features -- -D warnings","test":"node --test test/*.test.js","build":"npm run build:wasm && npm run build:js","clean":"rm -rf dist","build:js":"node scripts/build.js","lint:fix":"cargo clippy --fix --all-targets --all-features","benchmark":"node --expose-gc benchmark/benchmark.js","test:rust":"cargo test","build:wasm":"npm run build:writer-web && npm run build:reader-web","build:reader-web":"wasm-pack build crates/parquet-lite-reader --target web --out-dir ../../dist/wasm-reader","build:writer-web":"wasm-pack build crates/parquet-lite-writer --target web --out-dir ../../dist/wasm-writer"},"_npmUser":{"name":"hitradostava","email":"nick@addmaple.com"},"_npmVersion":"10.9.3","description":"Lightweight Parquet reader/writer using Rust compiled to WebAssembly","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"parquetjs":"^0.11.2"},"_npmOperationalInternal":{"tmp":"tmp/parquet-lite_0.1.6_1764521698861_0.9796512418768293","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@addmaple/parquet-lite","version":"0.1.7","keywords":["parquet","wasm","webassembly","data","columnar"],"license":"MIT","_id":"@addmaple/parquet-lite@0.1.7","maintainers":[{"name":"hitradostava","email":"nick@addmaple.com"}],"dist":{"shasum":"9bd21e22696708d2cfde545d5961d350ebbaaba3","tarball":"https://registry.npmjs.org/@addmaple/parquet-lite/-/parquet-lite-0.1.7.tgz","fileCount":15,"integrity":"sha512-OILN1nQYdqObZAbzIyFbPZZeihR16Bb/5UeLE/E0+reVNfZApYPLLF/QJ1QWMfQe8XSEi1XFRv3uIobANB8LkA==","signatures":[{"sig":"MEUCIQDWDNHkAXnEWZ7tG3r7uPeSNbaqEjLqXe2BmZc3YceyVQIgFf/P9681RrW6u2savDtQzc6ZgmmW4rYdQZBdVm7lcZc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":711267},"main":"./dist/index.js","type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./reader":{"types":"./dist/reader.d.ts","import":"./dist/reader.js"},"./writer":{"types":"./dist/writer.d.ts","import":"./dist/writer.js"}},"gitHead":"713b2aa7d5edaeeba8573acf8a7e39a7645aec20","scripts":{"lint":"cargo clippy --all-targets --all-features -- -D warnings","test":"node --test test/*.test.js","build":"npm run build:wasm && npm run build:js","clean":"rm -rf dist","build:js":"node scripts/build.js","lint:fix":"cargo clippy --fix --all-targets --all-features","benchmark":"node --expose-gc benchmark/benchmark.js","test:rust":"cargo test","build:wasm":"npm run build:writer-web && npm run build:reader-web","build:reader-web":"wasm-pack build crates/parquet-lite-reader --target web --out-dir ../../dist/wasm-reader","build:writer-web":"wasm-pack build crates/parquet-lite-writer --target web --out-dir ../../dist/wasm-writer"},"_npmUser":{"name":"hitradostava","email":"nick@addmaple.com"},"_npmVersion":"10.9.3","description":"Lightweight Parquet reader/writer using Rust compiled to WebAssembly","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"parquetjs":"^0.11.2"},"_npmOperationalInternal":{"tmp":"tmp/parquet-lite_0.1.7_1764524654183_0.04477706948673443","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@addmaple/parquet-lite","version":"1.0.0","keywords":["parquet","wasm","webassembly","data","columnar"],"license":"MIT","_id":"@addmaple/parquet-lite@1.0.0","maintainers":[{"name":"hitradostava","email":"nick@addmaple.com"}],"dist":{"shasum":"1f5adb5c8d24a4bcb68f504e8410f5273dc139e7","tarball":"https://registry.npmjs.org/@addmaple/parquet-lite/-/parquet-lite-1.0.0.tgz","fileCount":15,"integrity":"sha512-RVnhTKqNYMZ0xRbI2UWiJVo9hmYhozVPT7ACuUxxu7TDnJWprEfw+u8XqNkT+xyQKR/GH/TyDF9j75zMW75h/Q==","signatures":[{"sig":"MEQCIF8br8nrBFL99PK3v3JnqKW13rNv66g31buAVO/IwySIAiABpEB5unN2T1EHdFIJsYeNq8hIorCw0Oj2n7JkhfjJtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":711267},"main":"./dist/index.js","type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./reader":{"types":"./dist/reader.d.ts","import":"./dist/reader.js"},"./writer":{"types":"./dist/writer.d.ts","import":"./dist/writer.js"}},"gitHead":"713b2aa7d5edaeeba8573acf8a7e39a7645aec20","scripts":{"lint":"cargo clippy --all-targets --all-features -- -D warnings","test":"node --test test/*.test.js","build":"npm run build:wasm && npm run build:js","clean":"rm -rf dist","build:js":"node scripts/build.js","lint:fix":"cargo clippy --fix --all-targets --all-features","benchmark":"node --expose-gc benchmark/benchmark.js","test:rust":"cargo test","build:wasm":"npm run build:writer-web && npm run build:reader-web","build:reader-web":"wasm-pack build crates/parquet-lite-reader --target web --out-dir ../../dist/wasm-reader","build:writer-web":"wasm-pack build crates/parquet-lite-writer --target web --out-dir ../../dist/wasm-writer"},"_npmUser":{"name":"hitradostava","email":"nick@addmaple.com"},"_npmVersion":"10.9.3","description":"Lightweight Parquet reader/writer using Rust compiled to WebAssembly","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"parquetjs":"^0.11.2"},"_npmOperationalInternal":{"tmp":"tmp/parquet-lite_1.0.0_1764527630712_0.3687521981139632","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@addmaple/parquet-lite","version":"1.0.1","keywords":["parquet","wasm","webassembly","data","columnar"],"license":"MIT","_id":"@addmaple/parquet-lite@1.0.1","maintainers":[{"name":"hitradostava","email":"nick@addmaple.com"}],"dist":{"shasum":"537ec3684eb5e00026439dda62ae5198e589b22d","tarball":"https://registry.npmjs.org/@addmaple/parquet-lite/-/parquet-lite-1.0.1.tgz","fileCount":15,"integrity":"sha512-owcRD9tzSUEdAeM4rVZRE6PiiaHvYaUcEN0fKwBD4ac9tAglGFXfFjYUxcTQGBXvu7hclaqAHaH737hNM/BBaw==","signatures":[{"sig":"MEUCICqY5Hmew6fr5e+11li+R+OBleEgmhQwDVOzvu8l/RfYAiEAwDy1t2+TAcOiVLIxvfTO2rjg9ZfTk1iGC5W75XKAUcA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":712153},"main":"./dist/index.js","type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./reader":{"types":"./dist/reader.d.ts","import":"./dist/reader.js"},"./writer":{"types":"./dist/writer.d.ts","import":"./dist/writer.js"}},"gitHead":"713b2aa7d5edaeeba8573acf8a7e39a7645aec20","scripts":{"lint":"cargo clippy --all-targets --all-features -- -D warnings","test":"node --test test/*.test.js","build":"npm run build:wasm && npm run build:js","clean":"rm -rf dist","build:js":"node scripts/build.js","lint:fix":"cargo clippy --fix --all-targets --all-features","benchmark":"node --expose-gc benchmark/benchmark.js","test:rust":"cargo test","build:wasm":"npm run build:writer-web && npm run build:reader-web","build:reader-web":"wasm-pack build crates/parquet-lite-reader --target web --out-dir ../../dist/wasm-reader","build:writer-web":"wasm-pack build crates/parquet-lite-writer --target web --out-dir ../../dist/wasm-writer"},"_npmUser":{"name":"hitradostava","email":"nick@addmaple.com"},"_npmVersion":"10.9.3","description":"Lightweight Parquet reader/writer using Rust compiled to WebAssembly","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"parquetjs":"^0.11.2"},"_npmOperationalInternal":{"tmp":"tmp/parquet-lite_1.0.1_1764527973301_0.31610291090060016","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@addmaple/parquet-lite","version":"1.1.0","keywords":["parquet","wasm","webassembly","data","columnar"],"license":"MIT","_id":"@addmaple/parquet-lite@1.1.0","maintainers":[{"name":"hitradostava","email":"nick@addmaple.com"}],"dist":{"shasum":"67079796bfb86e7d08922051de051ae3089c210a","tarball":"https://registry.npmjs.org/@addmaple/parquet-lite/-/parquet-lite-1.1.0.tgz","fileCount":26,"integrity":"sha512-XSZBsOFlS21XoHmy+KPGPMR/M+QwJAuF8TMKSTtKtqG33MtBnqmfzW/i4iNTe5Mj8Xak4wK8b6C92vX9y1V9vA==","signatures":[{"sig":"MEQCIEGjJB8nS+et9l5TiJbxXTxAu86DVgSiHb9dld/fiZ+iAiAY7KJt/SD4kW9ODSFlKz5IvItSRaWNR5GFmPrJjk4fUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1568273},"main":"./dist/index.js","type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./reader":{"types":"./dist/reader.d.ts","import":"./dist/reader.js"},"./writer":{"types":"./dist/writer.d.ts","import":"./dist/writer.js"},"./reader-lite":{"types":"./dist/reader-lite.d.ts","import":"./dist/reader-lite.js"}},"gitHead":"713b2aa7d5edaeeba8573acf8a7e39a7645aec20","scripts":{"lint":"cargo clippy --all-targets --all-features -- -D warnings","test":"node --test test/*.test.js","build":"npm run build:wasm && npm run build:js","clean":"rm -rf dist","build:js":"node scripts/build.js","lint:fix":"cargo clippy --fix --all-targets --all-features","benchmark":"node --expose-gc benchmark/benchmark.js","test:rust":"cargo test","build:wasm":"npm run build:writer-web && npm run build:reader-web && npm run build:reader-lite-web && npm run build:full-web","build:full-web":"wasm-pack build crates/parquet-lite-full --target web --out-dir ../../dist/wasm-full","build:reader-web":"wasm-pack build crates/parquet-lite-reader --target web --out-dir ../../dist/wasm-reader","build:writer-web":"wasm-pack build crates/parquet-lite-writer --target web --out-dir ../../dist/wasm-writer","build:reader-lite-web":"wasm-pack build crates/parquet-lite-reader-lite --target web --out-dir ../../dist/wasm-reader-lite"},"_npmUser":{"name":"hitradostava","email":"nick@addmaple.com"},"_npmVersion":"10.9.3","description":"Lightweight Parquet reader/writer using Rust compiled to WebAssembly","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"parquetjs":"^0.11.2"},"_npmOperationalInternal":{"tmp":"tmp/parquet-lite_1.1.0_1764528680102_0.45053065876957876","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@addmaple/parquet-lite","version":"1.2.0","keywords":["parquet","wasm","webassembly","data","columnar"],"license":"MIT","_id":"@addmaple/parquet-lite@1.2.0","maintainers":[{"name":"hitradostava","email":"nick@addmaple.com"}],"dist":{"shasum":"e4a45b982006cefebc6090c678d574619d5b739e","tarball":"https://registry.npmjs.org/@addmaple/parquet-lite/-/parquet-lite-1.2.0.tgz","fileCount":26,"integrity":"sha512-9iFzc1ie2H8GVhhtOfJ0BhdV/bl8G/7+sHuwUDuChy6F8+vWZQoBwxTkZbO5LG/At4GZi9yx2XZcvtkxguAvgA==","signatures":[{"sig":"MEUCIAd6CfVGUSpim4M5Zx650zFq0ac2CMn/Bxi7TqI/prA9AiEAy5qIhVxYgyMYhMd558A9f4uDqD4f0e8IPXV3qbrR140=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1569371},"main":"./dist/index.js","type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./reader":{"types":"./dist/reader.d.ts","import":"./dist/reader.js"},"./writer":{"types":"./dist/writer.d.ts","import":"./dist/writer.js"},"./reader-lite":{"types":"./dist/reader-lite.d.ts","import":"./dist/reader-lite.js"}},"gitHead":"95afe00c498c7209d3a331ec25773ce9a9365f30","scripts":{"lint":"cargo clippy --all-targets --all-features -- -D warnings","test":"node --test test/*.test.js","build":"npm run build:wasm && npm run build:js","clean":"rm -rf dist","build:js":"node scripts/build.js","lint:fix":"cargo clippy --fix --all-targets --all-features","benchmark":"node --expose-gc benchmark/benchmark.js","test:rust":"cargo test","build:wasm":"npm run build:writer-web && npm run build:reader-web && npm run build:reader-lite-web && npm run build:full-web","build:full-web":"wasm-pack build crates/parquet-lite-full --target web --out-dir ../../dist/wasm-full","build:reader-web":"wasm-pack build crates/parquet-lite-reader --target web --out-dir ../../dist/wasm-reader","build:writer-web":"wasm-pack build crates/parquet-lite-writer --target web --out-dir ../../dist/wasm-writer","build:reader-lite-web":"wasm-pack build crates/parquet-lite-reader-lite --target web --out-dir ../../dist/wasm-reader-lite"},"_npmUser":{"name":"hitradostava","email":"nick@addmaple.com"},"_npmVersion":"10.9.3","description":"Lightweight Parquet reader/writer using Rust compiled to WebAssembly","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"parquetjs":"^0.11.2"},"_npmOperationalInternal":{"tmp":"tmp/parquet-lite_1.2.0_1764836057585_0.7288616190615318","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@addmaple/parquet-lite","version":"1.2.1","description":"Lightweight Parquet reader/writer using Rust compiled to WebAssembly","type":"module","main":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./writer":{"types":"./dist/writer.d.ts","import":"./dist/writer.js"},"./reader":{"types":"./dist/reader.d.ts","import":"./dist/reader.js"},"./reader-lite":{"types":"./dist/reader-lite.d.ts","import":"./dist/reader-lite.js"}},"sideEffects":false,"scripts":{"build:writer-web":"wasm-pack build crates/parquet-lite-writer --target web --out-dir ../../dist/wasm-writer","build:reader-web":"wasm-pack build crates/parquet-lite-reader --target web --out-dir ../../dist/wasm-reader","build:reader-lite-web":"wasm-pack build crates/parquet-lite-reader-lite --target web --out-dir ../../dist/wasm-reader-lite","build:full-web":"wasm-pack build crates/parquet-lite-full --target web --out-dir ../../dist/wasm-full","build:wasm":"npm run build:writer-web && npm run build:reader-web && npm run build:reader-lite-web && npm run build:full-web","build:js":"node scripts/build.js","build":"npm run build:wasm && npm run build:js","format":"prettier --write \"src/**/*.js\" && cargo fmt","format:js":"prettier --write \"src/**/*.js\"","format:rust":"cargo fmt","lint":"cargo clippy --all-targets --all-features -- -D warnings","lint:fix":"cargo clippy --fix --all-targets --all-features","test":"node --test test/*.test.js","test:rust":"cargo test","benchmark":"node --expose-gc benchmark/benchmark.js","clean":"rm -rf dist"},"keywords":["parquet","wasm","webassembly","data","columnar"],"license":"MIT","engines":{"node":">=18"},"devDependencies":{"parquetjs":"^0.11.2","prettier":"^3.7.4"},"_id":"@addmaple/parquet-lite@1.2.1","gitHead":"98dbf6ac45059f950791ac186c0e1f03356512b1","_nodeVersion":"22.19.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-Ngnb8fN+HlrObq9goYlHWCSYZ1QgvSLnUog9jvv+gzJIdwj+Gedi8rLCinBw0nzUftFMjzwzSIDF0IU1Cfw/dg==","shasum":"6696b299c085ec1a8fb97deb1568771b447ee2a3","tarball":"https://registry.npmjs.org/@addmaple/parquet-lite/-/parquet-lite-1.2.1.tgz","fileCount":26,"unpackedSize":1569210,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFWHYJp71LWuwjNAVCT+hi6OTrq1FEUMsWsW7jEqP4TyAiEAnY8kZSEljChcF5DiMnpDIMx5gyVEwTUxNJd+g6pThEs="}]},"_npmUser":{"name":"hitradostava","email":"nick@addmaple.com"},"directories":{},"maintainers":[{"name":"hitradostava","email":"nick@addmaple.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/parquet-lite_1.2.1_1765776525749_0.18259759461533998"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-26T21:18:59.213Z","modified":"2025-12-15T05:28:46.170Z","0.1.0":"2025-11-26T21:18:59.448Z","0.1.1":"2025-11-26T21:19:46.372Z","0.1.2":"2025-11-26T22:05:48.597Z","0.1.3":"2025-11-26T22:34:04.368Z","0.1.4":"2025-11-26T23:25:32.513Z","0.1.5":"2025-11-30T16:26:59.907Z","0.1.6":"2025-11-30T16:54:59.067Z","0.1.7":"2025-11-30T17:44:14.394Z","1.0.0":"2025-11-30T18:33:50.936Z","1.0.1":"2025-11-30T18:39:33.495Z","1.1.0":"2025-11-30T18:51:20.359Z","1.2.0":"2025-12-04T08:14:17.822Z","1.2.1":"2025-12-15T05:28:45.938Z"},"license":"MIT","keywords":["parquet","wasm","webassembly","data","columnar"],"description":"Lightweight Parquet reader/writer using Rust compiled to WebAssembly","maintainers":[{"name":"hitradostava","email":"nick@addmaple.com"}],"readme":"# @addmaple/parquet-lite\n\n**Disclaimer:** This project was created entirely with Anthropic Opus 4.5 and Cursor Composer. There is not much logic - we are making use of the efficient rust toolchain and the parquet2 crate.\n\n---\n\nA lightweight JavaScript library for reading and writing Parquet files, powered by Rust compiled to WebAssembly.\n\n## Features\n\n- **Lightweight**: Choose what you need - from 214KB (lite reader) to 568KB (full bundle)\n- **Fast**: Rust/WASM core for high performance\n- **Browser & Node.js**: Works in modern browsers and Node.js 18+\n- **Bundler-friendly**: Works with Vite, Webpack, Rollup, etc.\n- **Pure ESM**: Native ES modules\n- **Nullable columns**: Optional schema fields preserve `null` values end-to-end\n- **Delta encoding**: Reads delta-encoded integer and string columns\n- **Nested types**: Reads list/array columns as nested JavaScript arrays\n\n## Package Exports\n\n| Import | WASM Size | Use Case |\n|--------|-----------|----------|\n| `@addmaple/parquet-lite/reader-lite` | **214 KB** | Read basic parquet (no delta, no nested) |\n| `@addmaple/parquet-lite/writer` | **267 KB** | Write only |\n| `@addmaple/parquet-lite/reader` | **358 KB** | Read with delta encoding + nested types |\n| `@addmaple/parquet-lite` | **568 KB** | Combined reader + writer (single WASM load) |\n\n```javascript\n// Minimal reader for basic parquet files\nimport { readParquet } from '@addmaple/parquet-lite/reader-lite'\n\n// Full reader with all features\nimport { readParquet } from '@addmaple/parquet-lite/reader'\n\n// Writer only\nimport { writeParquet } from '@addmaple/parquet-lite/writer'\n\n// Combined (single WASM load for both read + write)\nimport { readParquet, writeParquet } from '@addmaple/parquet-lite'\n```\n\n## Size Comparison\n\n| Library | Package Size | WASM/Code Size | Notes |\n|---------|-------------|----------------|-------|\n| **@addmaple/parquet-lite** | **500 KB** | Reader-lite: 214 KB<br>Reader: 358 KB<br>Writer: 267 KB<br>Full: **568 KB** | Modular - load only what you need |\n| **parquet-wasm** | **5.9 MB** | ~1.2 MB (brotli) | Includes Apache Arrow, all compression codecs |\n| **parquetjs** | **38.3 KB** (tarball)<br>**4.6 MB** (with deps) | 219 KB unpacked<br>~4.6 MB installed | Pure JS, no WASM, slower, read & write |\n| **hyparquet** | **46.5 KB** | 184.5 KB unpacked | Read-only, pure JS, no deps |\n\n**Note:** `parquetjs` does support Snappy compression (via `snappyjs` dependency). The 38.3 KB is the compressed tarball size, but the actual installed size with all dependencies is **~4.6 MB** (including `brotli` 1.5MB, `thrift` 444KB, `snappyjs` 100KB, and others). The unpacked package size of 219 KB is just the library code without dependencies.\n\n### Performance Comparison\n\nBenchmark results comparing `@addmaple/parquet-lite` vs `parquetjs` (Node.js v22):\n\n| Rows | Operation | @addmaple/parquet-lite | parquetjs | Speedup |\n|------|-----------|------------------------|-----------|---------|\n| 1,000 | Write | ~20 ms | ~15 ms | ~0.75x |\n| 1,000 | Read | ~5 ms | ~5 ms | ~1x |\n| 10,000 | Write | ~7 ms | ~79 ms | **~11x faster** |\n| 10,000 | Read | ~4 ms | ~16 ms | **~4x faster** |\n| 100,000 | Write | ~56 ms | ~731 ms | **~13x faster** |\n| 100,000 | Read | ~51 ms | ~89 ms | **~1.75x faster** |\n\n**Key findings:**\n- **WASM performance scales better** - Significant speedups at larger dataset sizes\n- **Smaller file sizes** - Better compression (e.g., 2.1 MB vs 3.15 MB for 100k rows)\n- **Lower memory usage** - More efficient memory footprint for reads\n- **Optimized TypedArray handling** - Efficient bulk memory transfer using `to_vec()` for zero-copy operations\n\n#### Enum Performance\n\nFor enum columns, using index arrays provides massive performance improvements:\n\n| Dataset Size | Method | Time | Speedup vs Full Strings |\n|--------------|--------|------|-------------------------|\n| 10,000 rows | Full strings | ~276 ms | baseline |\n| 10,000 rows | Index array | ~3.5 ms | **~79x faster** |\n| 10,000 rows | TypedArray indices | ~3.6 ms | **~77x faster** |\n| 100,000 rows | Full strings | ~4.3 s | baseline |\n| 100,000 rows | Index array | ~31 ms | **~140x faster** |\n| 100,000 rows | TypedArray indices | ~63 ms | **~69x faster** |\n| 1,000,000 rows | Full strings | ~14.9 s | baseline |\n| 1,000,000 rows | Index array | ~332 ms | **~45x faster** |\n| 1,000,000 rows | TypedArray indices | ~3.1 s | **~4.8x faster** |\n\n**Enum optimization tips:**\n- Use `enumValues` in schema + index arrays for best performance\n- **Regular index arrays are fastest for large datasets** (100k+ rows)\n- TypedArrays (`Uint8Array`) perform similarly for small datasets (10k rows)\n- At very large sizes (1M+ rows), regular arrays significantly outperform TypedArrays\n- All methods produce identical Parquet files (same file size)\n\n**Why are TypedArrays slower for large arrays?**\nTypedArrays require copying data across the WASM boundary (`to_vec()`), which becomes expensive for very large arrays (1M+ elements = 1MB+ copied). Regular JavaScript arrays benefit from:\n- **JS engine optimizations**: V8/SpiderMonkey optimize array iteration patterns\n- **Lazy element access**: Elements are accessed on-demand without upfront bulk copy\n- **Better cache locality**: Regular arrays may have better memory access patterns\n- **Lower memory overhead**: Less upfront memory allocation\n\nFor small-to-medium arrays (10k-100k rows), the difference is minimal, but for very large arrays, regular arrays are significantly faster.\n\nRun benchmarks yourself: `npm run benchmark`\n\n## Installation\n\n```bash\nnpm install @addmaple/parquet-lite\n```\n\n## Quick Start\n\n### Writing Parquet\n\n```javascript\nimport { writeParquet } from '@addmaple/parquet-lite/writer';\n\nconst schema = [\n  { name: 'id', type: 'int32' },\n  { name: 'name', type: 'string' },\n  { name: 'score', type: 'double' }\n];\n\nconst data = {\n  id: [1, 2, 3],\n  name: ['Alice', 'Bob', 'Charlie'],\n  score: [95.5, 87.3, 92.1]\n};\n\nconst bytes = await writeParquet(schema, data);\n\n// Browser: create download\nconst blob = new Blob([bytes], { type: 'application/octet-stream' });\nconst url = URL.createObjectURL(blob);\nconst a = document.createElement('a');\na.href = url;\na.download = 'data.parquet';\na.click();\n\n// Node.js: save to file\nimport { writeFileSync } from 'fs';\nwriteFileSync('data.parquet', bytes);\n```\n\n**Configuration Options:**\n- `compression`: `'snappy'` (default) or `'none'`\n- `rowGroupSize`: Number of rows per row group (default: `10000`)\n- `version`: `'v1'` (default, better compatibility with parquetjs) or `'v2'` (better compression, more efficient)\n\n**Type Safety:** The library performs strict type checking. If you pass incorrect types, it will throw descriptive errors:\n- `Error: invalid type: string \"not\", expected i32` - Wrong type in column (e.g., strings in numeric columns)\n- `Error: invalid type: JsValue(Object({...})), expected a string` - Complex objects/arrays not supported\n- `Error: invalid type: unit value, expected i32` - Null/undefined in non-nullable column\n- `Error: Failed to get column: <name>` - Missing column or non-array value\n- All columns must have the same array length\n\n### Reading Parquet\n\n```javascript\nimport { readParquet, readMetadata } from '@addmaple/parquet-lite/reader';\n\n// Read from file (Node.js)\nimport { readFileSync } from 'fs';\nconst bytes = readFileSync('data.parquet');\n\n// Get metadata\nconst metadata = await readMetadata(bytes);\nconsole.log(`${metadata.num_rows} rows, ${metadata.columns.length} columns`);\n\n// Read all data\nconst data = await readParquet(bytes);\nconsole.log(data.id);    // [1, 2, 3]\nconsole.log(data.name);  // ['Alice', 'Bob', 'Charlie']\n\n// Read specific columns only\nconst partial = await readParquet(bytes, ['id', 'name']);\n\n// Read from fetch (Browser)\nconst response = await fetch('data.parquet');\nconst arrayBuffer = await response.arrayBuffer();\nconst browserBytes = new Uint8Array(arrayBuffer);\nconst browserData = await readParquet(browserBytes);\n```\n\n## Bundler Setup\n\nThe library uses `import.meta.url` for WASM resolution, which works with most modern bundlers.\n\n### Vite\n\nWorks out of the box. Vite handles WASM files automatically.\n\n```javascript\nimport { writeParquet } from '@addmaple/parquet-lite/writer';\n```\n\nIf you need more control, use explicit WASM loading:\n\n```javascript\nimport { initWriter, writeParquet } from '@addmaple/parquet-lite/writer';\nimport wasmUrl from '@addmaple/parquet-lite/dist/wasm-writer/parquet_lite_writer_bg.wasm?url';\n\nawait initWriter(fetch(wasmUrl));\nconst bytes = await writeParquet(schema, data);\n```\n\n### Webpack 5\n\nEnable WASM support in your webpack config:\n\n```javascript\n// webpack.config.js\nmodule.exports = {\n  experiments: {\n    asyncWebAssembly: true,\n  },\n};\n```\n\n### Rollup\n\nUse `@rollup/plugin-wasm`:\n\n```javascript\n// rollup.config.js\nimport wasm from '@rollup/plugin-wasm';\n\nexport default {\n  plugins: [wasm()],\n};\n```\n\n### Manual WASM Loading\n\nFor full control, you can provide WASM bytes directly:\n\n```javascript\nimport { initWriter, writeParquet } from '@addmaple/parquet-lite/writer';\n\n// Fetch or load WASM however you need\nconst wasmResponse = await fetch('/path/to/parquet_lite_writer_bg.wasm');\nawait initWriter(wasmResponse);\n\nconst bytes = await writeParquet(schema, data);\n```\n\n## API Reference\n\n### Writer\n\n```javascript\nimport { writeParquet, initWriter, getWriterVersion } from '@addmaple/parquet-lite/writer';\n\n// Initialize (optional, called automatically)\nawait initWriter(wasmSource?);\n\n// Write parquet\nconst bytes = await writeParquet(schema, data, config?);\n\n// Config options\n{\n  compression: 'snappy' | 'none',  // default: 'snappy'\n  rowGroupSize: number,            // default: 10000\n}\n```\n\n### Reader\n\n```javascript\n// Full reader (358KB) - supports all encodings including delta + nested types\nimport { readParquet, readMetadata, initReader } from '@addmaple/parquet-lite/reader';\n\n// Lite reader (214KB) - for basic parquet files without delta/nested\nimport { readParquet, readMetadata, initReader } from '@addmaple/parquet-lite/reader-lite';\n\n// Initialize (optional, called automatically)\nawait initReader(wasmSource?);\n\n// Read metadata\nconst metadata = await readMetadata(bytes);\n// { num_rows: number, num_row_groups: number, columns: [...] }\n\n// Read data\nconst data = await readParquet(bytes, columns?);\n// { columnName: [...values], ... }\n```\n\n### Reader Encoding Support\n\n| Encoding | Status | Notes |\n|----------|--------|-------|\n| Plain | ✅ | Default encoding |\n| Dictionary (RLE/Plain) | ✅ | Efficient for repeated values |\n| Delta Binary Packed | ✅ | For sorted integers |\n| Delta Length Byte Array | ✅ | For variable-length strings |\n| Delta Byte Array | ✅ | For strings with common prefixes |\n| RLE | ✅ | For definition/repetition levels |\n\n### Nested Types\n\nList columns are automatically grouped by repetition levels:\n\n```javascript\n// Parquet file with: [[a, b], [c], [d, e, f]]\nconst data = await readParquet(bytes);\n// Column name includes path: \"tags.list.element\"\nconsole.log(data['tags.list.element']); \n// [[a, b], [c], [d, e, f]] - properly nested arrays\n```\n\n## Supported Types\n\n| Type | JavaScript | Description |\n|------|------------|-------------|\n| `int32` | `number` or `Int32Array` | 32-bit signed integer |\n| `int64` | `number` or `BigInt64Array` | 64-bit integer (precision loss for large values) |\n| `float` | `number` or `Float32Array` | 32-bit float |\n| `double` | `number` or `Float64Array` | 64-bit float |\n| `boolean` | `boolean` | True/false |\n| `string` | `string` | UTF-8 text |\n\n### Logical Types\n\nLogical types provide semantic meaning to physical types, improving interoperability with tools like pandas, Spark, and DuckDB:\n\n| Logical Type | Physical Type | Description | Parameters |\n|--------------|---------------|-------------|------------|\n| `date` | `int32` | Days since Unix epoch | - |\n| `time_millis` | `int32` | Time of day in milliseconds | - |\n| `time_micros` | `int64` | Time of day in microseconds | - |\n| `timestamp_millis` | `int64` | Unix timestamp in milliseconds | - |\n| `timestamp_micros` | `int64` | Unix timestamp in microseconds | - |\n| `utf8` | `string` | UTF-8 encoded string (explicit) | - |\n| `json` | `string` | JSON text | - |\n| `bson` | `string` | BSON-encoded data | - |\n| `decimal` | `int32`/`int64`/`string` | Arbitrary precision decimal | `precision`, `scale` |\n| `enum` | `string` | Enumerated string values | `enumValues` (optional, for index arrays) |\n| `integer` | `int32`/`int64` | Signed/unsigned integers with specific bit width | `bitWidth`, `isSigned` |\n| `uuid` | `FixedLenByteArray(16)` | 128-bit UUID | - |\n\n**Example:**\n```javascript\nconst schema = [\n  { name: 'date', type: 'int32', logicalType: 'date' },\n  { name: 'timestamp', type: 'int64', logicalType: 'timestamp_millis' },\n  { name: 'text', type: 'string', logicalType: 'utf8' },\n  { name: 'price', type: 'int64', logicalType: 'decimal', precision: 10, scale: 2 },\n  { name: 'status', type: 'string', logicalType: 'enum' },\n  { name: 'age', type: 'int32', logicalType: 'integer', bitWidth: 8, isSigned: true }\n];\n\nconst data = {\n  date: [1, 2, 3],\n  timestamp: [1000000n, 2000000n],\n  text: ['Hello', 'World'],\n  price: [10000, 20000], // Stored as integers (100.00, 200.00)\n  status: ['active', 'inactive'], // Enum: pass strings normally\n  age: new Int8Array([25, 30, 35]) // Integer: can use matching TypedArray\n};\n\n// Efficient Enum with index arrays:\nconst enumSchema = [\n  { name: 'status', type: 'string', logicalType: 'enum', enumValues: ['active', 'inactive', 'pending'] }\n];\nconst enumData = {\n  status: [0, 1, 2, 0] // Indices into enumValues - more efficient than full strings\n  // Or use TypedArray: status: new Uint8Array([0, 1, 2, 0])\n};\n```\n\n**TypedArray Support for Integer Logical Types:**\nWhen using `integer` logical type, you can pass matching TypedArrays for better performance:\n- `integer(8, false)` → `Uint8Array`\n- `integer(8, true)` → `Int8Array`\n- `integer(16, false)` → `Uint16Array`\n- `integer(16, true)` → `Int16Array`\n- `integer(32, false)` → `Uint32Array`\n- `integer(32, true)` → `Int32Array`\n- `integer(64, false)` → `BigUint64Array`\n- `integer(64, true)` → `BigInt64Array`\n\nRegular arrays also work - TypedArrays are optimized using efficient bulk memory transfer (`to_vec()`) for zero-copy operations.\n\n**Enum with TypedArrays:**\nFor enum columns, TypedArrays (`Uint8Array`, `Uint16Array`, `Uint32Array`) provide excellent performance:\n- Efficient bulk memory transfer using `to_vec()`\n- Faster than regular arrays for small-to-medium datasets\n- Up to **99x faster** than full string arrays\n\n### Automatic Type Conversion\n\nThe library automatically converts JavaScript types when logical types are specified:\n\n**JavaScript Date Objects:**\n- `date` logical type: Converts to days since Unix epoch (INT32)\n- `timestamp_millis`/`timestamp_micros`: Converts to milliseconds/microseconds since Unix epoch (INT64)\n- `time_millis`/`time_micros`: Converts to milliseconds/microseconds since midnight (INT32/INT64)\n\n**JavaScript Objects:**\n- `json` logical type: Automatically stringifies objects to JSON strings\n\n**Example:**\n```javascript\nconst schema = [\n  { name: 'date', type: 'int32', logicalType: 'date' },\n  { name: 'timestamp', type: 'int64', logicalType: 'timestamp_millis' },\n  { name: 'data', type: 'string', logicalType: 'json' }\n];\n\nconst data = {\n  date: [new Date('2024-01-01'), new Date('2024-01-02')], // Automatically converted\n  timestamp: [new Date('2024-01-01T12:00:00Z')], // Automatically converted\n  data: [{ a: 1, b: 'test' }, { x: 2 }] // Automatically stringified to JSON\n};\n\nconst bytes = await writeParquet(schema, data);\n```\n\n**Note:** TypedArrays are supported and can be more efficient for large datasets:\n- `Int32Array` for `int32`\n- `BigInt64Array` for `int64`\n- `Float32Array` for `float`\n- `Float64Array` for `double`\n\n## Building from Source\n\n```bash\n# Prerequisites: Rust, wasm-pack, Node.js 18+\ncargo install wasm-pack\n\n# Build\nnpm run build\n\n# Test\ncargo test && npm test\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}