{"_id":"@remix-run/multipart-parser","_rev":"16-a602482c9b9a61bb46c7529df0004886","name":"@remix-run/multipart-parser","dist-tags":{"latest":"0.16.5"},"versions":{"0.11.0":{"name":"@remix-run/multipart-parser","version":"0.11.0","keywords":["multipart","parser","stream","http"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/multipart-parser@0.11.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"},{"name":"chancestrickland","email":"hi@chance.dev"}],"homepage":"https://github.com/remix-run/remix/tree/v3/packages/multipart-parser#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"98470e5aac4f5d9682c1bf86d1e065a4e7618ac6","tarball":"https://registry.npmjs.org/@remix-run/multipart-parser/-/multipart-parser-0.11.0.tgz","fileCount":32,"integrity":"sha512-AE/H+ok0fWOZb84sJ8vREOJiSwYoEoGL0rpHZSAiPmCkBKbnsmHCbiUtg5+wELem4Q0HAEY6vjVK83u9cIlAhw==","signatures":[{"sig":"MEQCIBVSQm5rRISroCF/1B0WLldygJ8ZB2HJ24ogoLjGp07XAiB8SilSUkF6VGD2kBjRIuPH55Qmfvhw0p3BOsmjnjwuxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":817528},"main":"./dist/multipart-parser.cjs","type":"module","_from":"file:remix-run-multipart-parser-0.11.0.tgz","types":"./dist/multipart-parser.d.ts","module":"./dist/multipart-parser.js","exports":{".":{"types":"./dist/multipart-parser.d.ts","import":"./dist/multipart-parser.js","default":"./dist/multipart-parser.js","require":"./dist/multipart-parser.cjs"},"./node":{"types":"./dist/multipart-parser.node.d.ts","import":"./dist/multipart-parser.node.js","default":"./dist/multipart-parser.node.js","require":"./dist/multipart-parser.node.cjs"},"./package.json":"./package.json"},"scripts":{"test":"node --disable-warning=ExperimentalWarning --test ./src/**/*.test.ts","bench":"pnpm run bench:node && pnpm run bench:bun && pnpm run bench:deno","build":"pnpm run clean && pnpm run build:types && pnpm run build:esm && pnpm run build:cjs && pnpm run build:esm:node && pnpm run build:cjs:node","clean":"rm -rf dist","bench:bun":"bun run ./bench/runner.ts","build:cjs":"esbuild src/multipart-parser.ts --bundle --outfile=dist/multipart-parser.cjs --format=cjs --platform=node --sourcemap","build:esm":"esbuild src/multipart-parser.ts --bundle --outfile=dist/multipart-parser.js --format=esm --platform=neutral --sourcemap","bench:deno":"deno run --allow-sys ./bench/runner.ts","bench:node":"node --disable-warning=ExperimentalWarning ./bench/runner.ts","build:types":"tsc --project tsconfig.build.json","build:cjs:node":"esbuild src/multipart-parser.node.ts --bundle --outfile=dist/multipart-parser.node.cjs --format=cjs --platform=node --sourcemap","build:esm:node":"esbuild src/multipart-parser.node.ts --bundle --outfile=dist/multipart-parser.node.js --format=esm --platform=node --sourcemap"},"_npmUser":{"name":"mjackson","email":"mjijackson+npm@gmail.com"},"_resolved":"/private/var/folders/n5/1lxhnzk56hg6b7vnl558364m0000gn/T/68d3d3277ff684512aa360020d85a7a9/remix-run-multipart-parser-0.11.0.tgz","_integrity":"sha512-AE/H+ok0fWOZb84sJ8vREOJiSwYoEoGL0rpHZSAiPmCkBKbnsmHCbiUtg5+wELem4Q0HAEY6vjVK83u9cIlAhw==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/multipart-parser"},"_npmVersion":"11.4.2","description":"A fast, efficient parser for multipart streams in any JavaScript environment","directories":{},"_nodeVersion":"24.2.0","dependencies":{"@remix-run/headers":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.25.5","@types/node":"^20.14.10"},"_npmOperationalInternal":{"tmp":"tmp/multipart-parser_0.11.0_1753386577607_0.1552446776627674","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@remix-run/multipart-parser","version":"0.12.0","keywords":["multipart","parser","stream","http"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/multipart-parser@0.12.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"},{"name":"ryanflorence","email":"rpflorence@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/multipart-parser#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"15f0ca952a272f6f3cc25acdb45f4fbc47c1013a","tarball":"https://registry.npmjs.org/@remix-run/multipart-parser/-/multipart-parser-0.12.0.tgz","fileCount":28,"integrity":"sha512-u/o4lKmIy/KuZGuQYMGhmr+BN7VKAt3G0ny8a1SBVlBXIBAtTOmDiI2WMZtyAv0VPbaIpT3OBTrRrKIfdDAE6w==","signatures":[{"sig":"MEUCIF1YmD/MSygzh/NW+RrnEn5yWMTZV7/Q0h/xdYjp86HEAiEAgcBaNIwT41gChCTndW67bF07N2Vd2RiFKaSEnG+ZuXI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":429924},"type":"module","_from":"file:remix-run-multipart-parser-0.12.0.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./package.json":"./package.json"},"scripts":{"test":"node --disable-warning=ExperimentalWarning --test './src/**/*.test.ts'","bench":"pnpm run bench:node && pnpm run bench:bun && pnpm run bench:deno","build":"pnpm run clean && pnpm run build:types && pnpm run build:esm && pnpm run build:esm:node","clean":"rm -rf dist","bench:bun":"bun run ./bench/runner.ts","build:esm":"esbuild src/index.ts --bundle --outfile=dist/index.js --format=esm --platform=neutral --sourcemap","typecheck":"tsc --noEmit","bench:deno":"deno run --allow-sys ./bench/runner.ts","bench:node":"node --disable-warning=ExperimentalWarning ./bench/runner.ts","build:types":"tsc --project tsconfig.build.json","build:esm:node":"esbuild src/node.ts --bundle --outfile=dist/node.js --format=esm --platform=node --sourcemap"},"_npmUser":{"name":"mjackson","email":"mjijackson+npm@gmail.com"},"_resolved":"/tmp/8712a8ecb85331f68e4953bd258eb42f/remix-run-multipart-parser-0.12.0.tgz","_integrity":"sha512-u/o4lKmIy/KuZGuQYMGhmr+BN7VKAt3G0ny8a1SBVlBXIBAtTOmDiI2WMZtyAv0VPbaIpT3OBTrRrKIfdDAE6w==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/multipart-parser"},"_npmVersion":"11.6.1","description":"A fast, efficient parser for multipart streams in any JavaScript environment","directories":{},"_nodeVersion":"24.10.0","dependencies":{"@remix-run/headers":"^0.14.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.25.10","@types/node":"^24.6.0"},"_npmOperationalInternal":{"tmp":"tmp/multipart-parser_0.12.0_1761151723057_0.302481903163736","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@remix-run/multipart-parser","version":"0.13.0","keywords":["multipart","parser","stream","http"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/multipart-parser@0.13.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"},{"name":"ryanflorence","email":"rpflorence@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/multipart-parser#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"41ca8b56f2423974306161259ae4ae65027ad09f","tarball":"https://registry.npmjs.org/@remix-run/multipart-parser/-/multipart-parser-0.13.0.tgz","fileCount":31,"integrity":"sha512-EMEnc4YOzOnw62BmdTqvlmvzUCYDsQ1fpca6Xtvn8oV5GHXMYJoB3ocQyA+KNAa3j8QzKyNomifUXJ9OVrGEXA==","signatures":[{"sig":"MEUCIQDioJRBKpUXeB3w+bdPClsGETHjkiqkN98yPRuWOl8dbgIgUCREv1bXQKMbq3rl/02cMpgDfa66YHozLs/HCfjHw4c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fmultipart-parser@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":69663},"type":"module","_from":"file:remix-run-multipart-parser-0.13.0.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./package.json":"./package.json"},"scripts":{"test":"node --disable-warning=ExperimentalWarning --test './src/**/*.test.ts'","bench":"pnpm run bench:node && pnpm run bench:bun && pnpm run bench:deno","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","bench:bun":"bun run ./bench/runner.ts","typecheck":"tsc --noEmit","bench:deno":"deno run --allow-sys ./bench/runner.ts","bench:node":"node --disable-warning=ExperimentalWarning ./bench/runner.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0387253d-c073-4381-b912-42e253ee0a1f"}},"_resolved":"/tmp/d8807c09c42c882849cfbfe1fc7f0fd6/remix-run-multipart-parser-0.13.0.tgz","_integrity":"sha512-EMEnc4YOzOnw62BmdTqvlmvzUCYDsQ1fpca6Xtvn8oV5GHXMYJoB3ocQyA+KNAa3j8QzKyNomifUXJ9OVrGEXA==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/multipart-parser"},"_npmVersion":"11.6.1","description":"A fast, efficient parser for multipart streams in any JavaScript environment","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@remix-run/headers":"^0.15.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^24.6.0"},"_npmOperationalInternal":{"tmp":"tmp/multipart-parser_0.13.0_1762301033325_0.3569834183699303","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@remix-run/multipart-parser","version":"0.14.0","keywords":["multipart","parser","stream","http"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/multipart-parser@0.14.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"},{"name":"ryanflorence","email":"rpflorence@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/multipart-parser#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"08c9a0b42effb93adfa371ac0cf6d4dd95250889","tarball":"https://registry.npmjs.org/@remix-run/multipart-parser/-/multipart-parser-0.14.0.tgz","fileCount":31,"integrity":"sha512-HZoFqazJJanZ+xxcQzS8SeSBbtvxvYRf9+iWhxBFFTHxlcUG+CUL8rb2RcNFqP9fKrju0O26REkDLl2dytbpJA==","signatures":[{"sig":"MEUCIQCY1t477wRghzJyUwzlS+FvOc7zBEIIdSDj4YPciwdeHQIgBlgrh+jKnAT23Nn6To0PsJ4y8GkuiuVAJXYXv4eMoZ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fmultipart-parser@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":71413},"type":"module","_from":"file:remix-run-multipart-parser-0.14.0.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./package.json":"./package.json"},"scripts":{"test":"node --disable-warning=ExperimentalWarning --test './src/**/*.test.ts'","bench":"pnpm run bench:node && pnpm run bench:bun && pnpm run bench:deno","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","bench:bun":"bun run ./bench/runner.ts","typecheck":"tsc --noEmit","bench:deno":"deno run --allow-sys ./bench/runner.ts","bench:node":"node --disable-warning=ExperimentalWarning ./bench/runner.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0387253d-c073-4381-b912-42e253ee0a1f"}},"_resolved":"/tmp/523f877aada0c09903f05f42d5b041f2/remix-run-multipart-parser-0.14.0.tgz","_integrity":"sha512-HZoFqazJJanZ+xxcQzS8SeSBbtvxvYRf9+iWhxBFFTHxlcUG+CUL8rb2RcNFqP9fKrju0O26REkDLl2dytbpJA==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/multipart-parser"},"_npmVersion":"11.6.2","description":"A fast, efficient parser for multipart streams in any JavaScript environment","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^24.6.0"},"peerDependencies":{"@remix-run/headers":"^0.18.0"},"_npmOperationalInternal":{"tmp":"tmp/multipart-parser_0.14.0_1764115522245_0.16522188599740417","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"@remix-run/multipart-parser","version":"0.14.1","keywords":["multipart","parser","stream","http"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/multipart-parser@0.14.1","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"},{"name":"ryanflorence","email":"rpflorence@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/multipart-parser#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"5675c63ca2cdbb2bfd3b365698fe0ae6dacace8b","tarball":"https://registry.npmjs.org/@remix-run/multipart-parser/-/multipart-parser-0.14.1.tgz","fileCount":31,"integrity":"sha512-Jqkr8hsPt88l5a2aerGZY0SUHqj/Wf/70H2oYcEc/pdR5cyAlNsj58IGbTEn7kHX1uiLrYAorzx3FL3cO+5GsA==","signatures":[{"sig":"MEQCIFRpemHslharRCtk97eXQOb4d/mG4a0RFMqeMH6faBbmAiBEgA/6N8gzo8WfJBydp2V90lTeZp5O0XpCDn0JuwHqOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fmultipart-parser@0.14.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":71838},"type":"module","_from":"file:remix-run-multipart-parser-0.14.1.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./package.json":"./package.json"},"scripts":{"test":"node --disable-warning=ExperimentalWarning --test","bench":"pnpm run bench:node && pnpm run bench:bun && pnpm run bench:deno","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","bench:bun":"bun run ./bench/runner.ts","typecheck":"tsgo --noEmit","bench:deno":"deno run --allow-sys ./bench/runner.ts","bench:node":"node --disable-warning=ExperimentalWarning ./bench/runner.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0387253d-c073-4381-b912-42e253ee0a1f"}},"_resolved":"/tmp/b5cb791c1ad2330f6791aafd7ae0a36d/remix-run-multipart-parser-0.14.1.tgz","_integrity":"sha512-Jqkr8hsPt88l5a2aerGZY0SUHqj/Wf/70H2oYcEc/pdR5cyAlNsj58IGbTEn7kHX1uiLrYAorzx3FL3cO+5GsA==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/multipart-parser"},"_npmVersion":"11.6.2","description":"A fast, efficient parser for multipart streams in any JavaScript environment","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@typescript/native-preview":"7.0.0-dev.20251125.1"},"peerDependencies":{"@remix-run/headers":"^0.19.0"},"_npmOperationalInternal":{"tmp":"tmp/multipart-parser_0.14.1_1768948102424_0.6070452030265445","host":"s3://npm-registry-packages-npm-production"}},"0.14.2":{"name":"@remix-run/multipart-parser","version":"0.14.2","keywords":["multipart","parser","stream","http"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/multipart-parser@0.14.2","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"},{"name":"ryanflorence","email":"rpflorence@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/multipart-parser#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"86326faa269b2cfa1f1bb080135e7ceb58ff6274","tarball":"https://registry.npmjs.org/@remix-run/multipart-parser/-/multipart-parser-0.14.2.tgz","fileCount":31,"integrity":"sha512-yDq9ql4Xz92bRG/Sgl4cg2dRlxxC6A40XBy/oyDhy76hJtTQvgyzx9sfPXYPxcfL1BtqljC+sYHE0PvjmQhSfw==","signatures":[{"sig":"MEYCIQD6Og5/j8PMBWTdczBMxAbWUuCNh/Lm91ykC1O9/phQKQIhAI6rgCUf6TGNEclNqKrHAfoNhpqA0IwnfFNedG6sDYuy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fmultipart-parser@0.14.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":71834},"type":"module","_from":"file:remix-run-multipart-parser-0.14.2.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./package.json":"./package.json"},"scripts":{"test":"node --disable-warning=ExperimentalWarning --test","bench":"pnpm run bench:node && pnpm run bench:bun && pnpm run bench:deno","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","bench:bun":"bun run ./bench/runner.ts","typecheck":"tsgo --noEmit","bench:deno":"deno run --allow-sys ./bench/runner.ts","bench:node":"node --disable-warning=ExperimentalWarning ./bench/runner.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0387253d-c073-4381-b912-42e253ee0a1f"}},"_resolved":"/tmp/18e38f6f5e8deee07829ff98c30e5753/remix-run-multipart-parser-0.14.2.tgz","_integrity":"sha512-yDq9ql4Xz92bRG/Sgl4cg2dRlxxC6A40XBy/oyDhy76hJtTQvgyzx9sfPXYPxcfL1BtqljC+sYHE0PvjmQhSfw==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/multipart-parser"},"_npmVersion":"11.6.2","description":"A fast, efficient parser for multipart streams in any JavaScript environment","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@remix-run/headers":"^0.19.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/multipart-parser_0.14.2_1769471895344_0.4370734294791365","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@remix-run/multipart-parser","version":"0.15.0","keywords":["multipart","parser","stream","http"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/multipart-parser@0.15.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/multipart-parser#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"ff179182150e547c4a6fb225c9307203c0da737b","tarball":"https://registry.npmjs.org/@remix-run/multipart-parser/-/multipart-parser-0.15.0.tgz","fileCount":31,"integrity":"sha512-/Ugo6k2bN7gh7Ybyhe7R/NrkD075fHrEfVf17P+NNC9rlWHBQCOSyJ4V8n4wtoG8umeImagU/AuHuUuTwzvHww==","signatures":[{"sig":"MEUCICT3TTxNyFroTFGiaYV5iDu3kvNhycyZHRvCjVwh0MD2AiEAvzx0kV/RjOvK2GzLzGG7rRAcBkqWGTqaDRnIeWNNf0Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fmultipart-parser@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":86209},"type":"module","_from":"file:remix-run-multipart-parser-0.15.0.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./package.json":"./package.json"},"scripts":{"test":"node --test","bench":"pnpm run bench:node && pnpm run bench:bun && pnpm run bench:deno","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","bench:bun":"bun run ./bench/runner.ts","typecheck":"tsgo --noEmit","bench:deno":"deno run --allow-sys ./bench/runner.ts","bench:node":"node ./bench/runner.ts","bench:node:single":"node ./bench/runner.ts","bench:node:steady":"node --expose-gc ./bench/runner.ts --steady --metrics","bench:node:profile":"node --cpu-prof --heap-prof ./bench/runner.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0387253d-c073-4381-b912-42e253ee0a1f"}},"_resolved":"/tmp/83887da585a2e1eb79ecdb81a266b98d/remix-run-multipart-parser-0.15.0.tgz","_integrity":"sha512-/Ugo6k2bN7gh7Ybyhe7R/NrkD075fHrEfVf17P+NNC9rlWHBQCOSyJ4V8n4wtoG8umeImagU/AuHuUuTwzvHww==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/multipart-parser"},"_npmVersion":"11.9.0","description":"A fast, efficient parser for multipart streams in any JavaScript environment","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@remix-run/headers":"^0.19.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/multipart-parser_0.15.0_1774479829688_0.6959286420492519","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@remix-run/multipart-parser","version":"0.16.0","keywords":["multipart","parser","stream","http"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/multipart-parser@0.16.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/multipart-parser#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"9bca1b1f4816738c4edc8beb8de46cfb7efccb95","tarball":"https://registry.npmjs.org/@remix-run/multipart-parser/-/multipart-parser-0.16.0.tgz","fileCount":31,"integrity":"sha512-RZqdkP+jOW3sQSsv/kC9OwaA0eifMEvTwlaIw/VC3HOHgebKgvQO/+gBJsBgH7YecFSbvaZq1/iB5J+1jVhDpg==","signatures":[{"sig":"MEUCIQDlJ2h81Vo/TfK3Vbof5D2II44BuqytE7NHDiZpwn+KYQIgaGdTYRl1jfAqdqYS+NGTbr1YNn+Ja8EhKbIquFyR22s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fmultipart-parser@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":88589},"type":"module","_from":"file:remix-run-multipart-parser-0.16.0.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","bench":"pnpm run bench:node && pnpm run bench:bun && pnpm run bench:deno","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix-test","bench:bun":"bun run ./bench/runner.ts","typecheck":"tsgo --noEmit","bench:deno":"deno run --allow-sys ./bench/runner.ts","bench:node":"node ./bench/runner.ts","bench:node:single":"node ./bench/runner.ts","bench:node:steady":"node --expose-gc ./bench/runner.ts --steady --metrics","bench:node:profile":"node --cpu-prof --heap-prof ./bench/runner.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0387253d-c073-4381-b912-42e253ee0a1f"}},"_resolved":"/tmp/fd6e0583b0257c8c22be971ae4f5d2ca/remix-run-multipart-parser-0.16.0.tgz","_integrity":"sha512-RZqdkP+jOW3sQSsv/kC9OwaA0eifMEvTwlaIw/VC3HOHgebKgvQO/+gBJsBgH7YecFSbvaZq1/iB5J+1jVhDpg==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/multipart-parser"},"_npmVersion":"11.11.0","description":"A fast, efficient parser for multipart streams in any JavaScript environment","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@remix-run/headers":"^0.19.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/test":"0.2.0","@remix-run/assert":"0.1.0","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/multipart-parser_0.16.0_1777483790521_0.5638394299721026","host":"s3://npm-registry-packages-npm-production"}},"0.16.1":{"name":"@remix-run/multipart-parser","version":"0.16.1","keywords":["multipart","parser","stream","http"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/multipart-parser@0.16.1","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/multipart-parser#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"cc03683bf2e5123ae532a9489fd70b981d43e079","tarball":"https://registry.npmjs.org/@remix-run/multipart-parser/-/multipart-parser-0.16.1.tgz","fileCount":31,"integrity":"sha512-oYmYPCm7DmSo1L3onWc71390j1/vwGaK0ktjpDV2KDyfW/hazdDaujHWHeTNTJahf9sJndUyBTdyoxoWnzbwFg==","signatures":[{"sig":"MEYCIQCRKy4hHe8SrXcnrkNKFyKS8a8cVoVdzomBb5Ys0A0dkwIhAKo/6x0dR5zek8/qOcL+Dxp6V8tfyaB+k1rVSKG8tzvd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fmultipart-parser@0.16.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89398},"type":"module","_from":"file:remix-run-multipart-parser-0.16.1.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","bench":"pnpm run bench:node && pnpm run bench:bun && pnpm run bench:deno","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix-test","bench:bun":"bun run ./bench/runner.ts","typecheck":"tsgo --noEmit","bench:deno":"deno run --allow-sys ./bench/runner.ts","bench:node":"node ./bench/runner.ts","bench:node:single":"node ./bench/runner.ts","bench:node:steady":"node --expose-gc ./bench/runner.ts --steady --metrics","bench:node:profile":"node --cpu-prof --heap-prof ./bench/runner.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0387253d-c073-4381-b912-42e253ee0a1f"}},"_resolved":"/tmp/f2b713de4cf4b2686888e4f669c7f043/remix-run-multipart-parser-0.16.1.tgz","_integrity":"sha512-oYmYPCm7DmSo1L3onWc71390j1/vwGaK0ktjpDV2KDyfW/hazdDaujHWHeTNTJahf9sJndUyBTdyoxoWnzbwFg==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/multipart-parser"},"_npmVersion":"11.12.1","description":"A fast, efficient parser for multipart streams in any JavaScript environment","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@remix-run/headers":"^0.20.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/test":"0.4.0","@remix-run/assert":"0.2.0","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/multipart-parser_0.16.1_1779247291565_0.7238570063790757","host":"s3://npm-registry-packages-npm-production"}},"0.16.2":{"name":"@remix-run/multipart-parser","version":"0.16.2","keywords":["multipart","parser","stream","http"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/multipart-parser@0.16.2","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/multipart-parser#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"014608ed2a5e55db01f0182b74d8ce2478ee77ba","tarball":"https://registry.npmjs.org/@remix-run/multipart-parser/-/multipart-parser-0.16.2.tgz","fileCount":31,"integrity":"sha512-3B36kyAa/bKGzciNWFQM8MBQT291059Q6vjkqgmDPgENFfaejORIVKYpUHJGLHtTI62xrnLXxgL89kXE/nVzSQ==","signatures":[{"sig":"MEYCIQCW4Is1WC7wdPD7Z8f6Wfxuq2tAoyGvYJOCNnzw06ttPgIhAIt96ilcB7bj1IgnaSB3xuLFRtVYyjXGY3rEdcYyanKu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fmultipart-parser@0.16.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89398},"type":"module","_from":"file:remix-run-multipart-parser-0.16.2.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","bench":"pnpm run bench:node && pnpm run bench:bun && pnpm run bench:deno","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix-test","bench:bun":"bun run ./bench/runner.ts","typecheck":"tsgo --noEmit","bench:deno":"deno run --allow-sys ./bench/runner.ts","bench:node":"node ./bench/runner.ts","bench:node:single":"node ./bench/runner.ts","bench:node:steady":"node --expose-gc ./bench/runner.ts --steady --metrics","bench:node:profile":"node --cpu-prof --heap-prof ./bench/runner.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0387253d-c073-4381-b912-42e253ee0a1f"}},"_resolved":"/tmp/6960857e935f2f980f6d5f8154b0fe58/remix-run-multipart-parser-0.16.2.tgz","_integrity":"sha512-3B36kyAa/bKGzciNWFQM8MBQT291059Q6vjkqgmDPgENFfaejORIVKYpUHJGLHtTI62xrnLXxgL89kXE/nVzSQ==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/multipart-parser"},"_npmVersion":"11.12.1","description":"A fast, efficient parser for multipart streams in any JavaScript environment","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@remix-run/headers":"^0.21.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/test":"0.4.1","@remix-run/assert":"0.2.1","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/multipart-parser_0.16.2_1779308249297_0.007087928356654283","host":"s3://npm-registry-packages-npm-production"}},"0.16.3":{"name":"@remix-run/multipart-parser","version":"0.16.3","keywords":["multipart","parser","stream","http"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/multipart-parser@0.16.3","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/multipart-parser#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"30b7bff04bf85f1612dcc4fa9dff084080f0af38","tarball":"https://registry.npmjs.org/@remix-run/multipart-parser/-/multipart-parser-0.16.3.tgz","fileCount":31,"integrity":"sha512-XvMYPIyDTuquR7s1YF4wo4CqMPDrBkpWY0zHSa7SpX0F+t9awg7FWd5mJywc6vTn4oWeS7nQYQQarZ9CuoC/RQ==","signatures":[{"sig":"MEUCIHtOBH6NrmWGgDQafWIr+5Em47epXFwCFRzo6NJymCqfAiEA2uMpsLKbiqflImo500qNuhkt9jYZBvyTqZEKTbklrng=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fmultipart-parser@0.16.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89537},"type":"module","_from":"file:remix-run-multipart-parser-0.16.3.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","bench":"pnpm run bench:node && pnpm run bench:bun && pnpm run bench:deno","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix-test","bench:bun":"bun run ./bench/runner.ts","typecheck":"tsgo --noEmit","bench:deno":"deno run --allow-sys ./bench/runner.ts","bench:node":"node ./bench/runner.ts","bench:node:single":"node ./bench/runner.ts","bench:node:steady":"node --expose-gc ./bench/runner.ts --steady --metrics","bench:node:profile":"node --cpu-prof --heap-prof ./bench/runner.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0387253d-c073-4381-b912-42e253ee0a1f"}},"_resolved":"/tmp/ad5f764a1f8720f38eb5d0f49ff5ef0f/remix-run-multipart-parser-0.16.3.tgz","_integrity":"sha512-XvMYPIyDTuquR7s1YF4wo4CqMPDrBkpWY0zHSa7SpX0F+t9awg7FWd5mJywc6vTn4oWeS7nQYQQarZ9CuoC/RQ==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/multipart-parser"},"_npmVersion":"11.13.0","description":"A fast, efficient parser for multipart streams in any JavaScript environment","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@remix-run/headers":"^0.21.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/test":"0.4.2","@remix-run/assert":"0.2.1","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/multipart-parser_0.16.3_1780078607775_0.042970916165503414","host":"s3://npm-registry-packages-npm-production"}},"0.16.4":{"name":"@remix-run/multipart-parser","version":"0.16.4","keywords":["multipart","parser","stream","http"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/multipart-parser@0.16.4","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/multipart-parser#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"772ddc887842ec90cc00263a3ea0a7d8ab389ac1","tarball":"https://registry.npmjs.org/@remix-run/multipart-parser/-/multipart-parser-0.16.4.tgz","fileCount":31,"integrity":"sha512-XrrfbuU4csgEpTmHv9rjrnFrGu/7iz+31PM51cFL2fcu/JZ7+wZhDyqaOca2uOE8qNhVgXuJHqEOl/8eFCYTHQ==","signatures":[{"sig":"MEUCIFwmptKHDdzR/jD1MYJYSUfERxsqc8N3ktU59kow0oYqAiEArFkHqJEV63VKUIY/VQNqEGwugQAztItxNeuuaBqZmB0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fmultipart-parser@0.16.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":90534},"type":"module","_from":"file:remix-run-multipart-parser-0.16.4.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./package.json":"./package.json"},"scripts":{"test":"remix test","bench":"pnpm run bench:node && pnpm run bench:bun && pnpm run bench:deno","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix test","bench:bun":"bun run ./bench/runner.ts","typecheck":"tsc --noEmit","bench:deno":"deno run --allow-sys ./bench/runner.ts","bench:node":"node ./bench/runner.ts","bench:node:single":"node ./bench/runner.ts","bench:node:steady":"node --expose-gc ./bench/runner.ts --steady --metrics","bench:node:profile":"node --cpu-prof --heap-prof ./bench/runner.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0387253d-c073-4381-b912-42e253ee0a1f"}},"_resolved":"/tmp/1249fa2f256838f8f82bb2475c133f99/remix-run-multipart-parser-0.16.4.tgz","_integrity":"sha512-XrrfbuU4csgEpTmHv9rjrnFrGu/7iz+31PM51cFL2fcu/JZ7+wZhDyqaOca2uOE8qNhVgXuJHqEOl/8eFCYTHQ==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/multipart-parser"},"_npmVersion":"11.16.0","description":"A fast, efficient parser for multipart streams in any JavaScript environment","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@remix-run/headers":"^0.21.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@types/node":"^24.6.0","@remix-run/test":"0.6.0","@remix-run/assert":"0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/multipart-parser_0.16.4_1786666402342_0.7759233630055071","host":"s3://npm-registry-packages-npm-production"}},"0.16.5":{"_id":"@remix-run/multipart-parser@0.16.5","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"dcd0dca69f5db52d12d282f09a8cf8d091d4a897","tarball":"https://registry.npmjs.org/@remix-run/multipart-parser/-/multipart-parser-0.16.5.tgz","fileCount":31,"integrity":"sha512-Pt4JxLl10z8xSYw7Fo9VNCCajzNbNXoWNPeOb2JlWSsAcdWV8LoWiUmUu3sLvWsKHoDl7oqErVzp4DYcPElRQg==","signatures":[{"sig":"MEQCIFRkNRd8gmc/piA+p7mb90tmRvZp0zdxurvXZjpdBgE8AiBvElF84FOuIFfF+rEI6qv3+reOQrlwOG3heWk+foTt0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFUUqErg01lQVvG8kHE0NrdCHDTVWf8HmydlZW/SYmYWAiEA2lSyjJ2RP+pUdtEIA4Y9E0fIUlICtYHS2UQuyJEH9To="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fmultipart-parser@0.16.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":92222},"name":"@remix-run/multipart-parser","type":"module","_from":"file:/tmp/remix-publish-multipart-parser-Jsz6GY/remix-run-multipart-parser-0.16.5.tgz","author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./package.json":"./package.json"},"license":"MIT","scripts":{"test":"remix test","bench":"pnpm run bench:node && pnpm run bench:bun && pnpm run bench:deno","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix test","bench:bun":"bun run ./bench/runner.ts","typecheck":"tsc --noEmit","bench:deno":"deno run --allow-sys ./bench/runner.ts","bench:node":"node ./bench/runner.ts","bench:node:single":"node ./bench/runner.ts","bench:node:steady":"node --expose-gc ./bench/runner.ts --steady --metrics","bench:node:profile":"node --cpu-prof --heap-prof ./bench/runner.ts"},"version":"0.16.5","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0387253d-c073-4381-b912-42e253ee0a1f"}},"homepage":"https://github.com/remix-run/remix/tree/main/packages/multipart-parser#readme","keywords":["multipart","parser","stream","http"],"_resolved":"/tmp/remix-publish-multipart-parser-Jsz6GY/remix-run-multipart-parser-0.16.5.tgz","_integrity":"sha512-Pt4JxLl10z8xSYw7Fo9VNCCajzNbNXoWNPeOb2JlWSsAcdWV8LoWiUmUu3sLvWsKHoDl7oqErVzp4DYcPElRQg==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/multipart-parser"},"_npmVersion":"11.19.0","description":"A fast, efficient parser for multipart streams in any JavaScript environment","directories":{},"maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"_nodeVersion":"24.20.0","dependencies":{"@remix-run/headers":"^0.21.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@types/node":"^24.6.0","@remix-run/test":"0.6.1","@remix-run/assert":"0.3.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/multipart-parser_0.16.5_1789770907507_0.9999790599348415"}}},"time":{"created":"2025-07-24T19:49:37.504Z","modified":"2026-09-18T22:35:07.942Z","0.11.0":"2025-07-24T19:49:37.855Z","0.12.0":"2025-10-22T16:48:43.250Z","0.13.0":"2025-11-05T00:03:53.535Z","0.14.0":"2025-11-26T00:05:22.467Z","0.14.1":"2026-01-20T22:28:22.571Z","0.14.2":"2026-01-26T23:58:15.497Z","0.15.0":"2026-03-25T23:03:49.872Z","0.16.0":"2026-04-29T17:29:50.676Z","0.16.1":"2026-05-20T03:21:31.724Z","0.16.2":"2026-05-20T20:17:29.446Z","0.16.3":"2026-05-29T18:16:47.944Z","0.16.4":"2026-08-14T00:13:22.498Z","0.16.5":"2026-09-18T22:35:07.615Z"},"bugs":{"url":"https://github.com/remix-run/remix/issues"},"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","homepage":"https://github.com/remix-run/remix/tree/main/packages/multipart-parser#readme","keywords":["multipart","parser","stream","http"],"repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/multipart-parser"},"description":"A fast, efficient parser for multipart streams in any JavaScript environment","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"readme":"# multipart-parser\n\nFast streaming multipart parsing for JavaScript. `multipart-parser` processes multipart bodies incrementally so large uploads can be handled without buffering the entire multipart payload in memory.\n\n## Features\n\n- **File Upload Parsing** - Parse file uploads (`multipart/form-data`) with automatic field and file detection\n- **Full Multipart Support** - Support for all `multipart/*` content types (mixed, alternative, related, etc.)\n- **Convenient API** - `MultipartPart` API with `arrayBuffer`, `bytes`, `text`, `size`, and metadata access\n- **Built-in Limits** - Header, per-part, part-count, and aggregate-size limits to prevent abuse\n- **Node.js Support** - First-class Node.js support with native `http.IncomingMessage` compatibility\n- **Runtime Demos** - [Demos for every major runtime](https://github.com/remix-run/remix/tree/main/packages/multipart-parser/demos)\n\n## Installation\n\n```sh\nnpm i remix\n```\n\n## Usage\n\nThe most common use case for `multipart-parser` is handling file uploads when you're building a web server. For this case, the `parseMultipartRequest` function is your friend. It automatically validates the request is `multipart/form-data`, extracts the multipart boundary from the `Content-Type` header, parses all fields and files in the `request.body` stream, and gives each one to you as a `MultipartPart` object with a rich API for accessing its metadata and content.\n\n```ts\nimport { MultipartParseError, parseMultipartRequest } from 'remix/multipart-parser'\n\nasync function handleRequest(request: Request): void {\n  try {\n    for await (let part of parseMultipartRequest(request)) {\n      if (part.isFile) {\n        // Access file data in multiple formats\n        let buffer = part.arrayBuffer // ArrayBuffer\n        console.log(`File received: ${part.filename} (${buffer.byteLength} bytes)`)\n        console.log(`Content type: ${part.mediaType}`)\n        console.log(`Field name: ${part.name}`)\n        console.log(`Content-Type header: ${part.headers['content-type']}`)\n\n        // Save to disk, upload to cloud storage, etc.\n        await saveFile(part.filename, part.bytes)\n      } else {\n        let text = part.text // string\n        console.log(`Field received: ${part.name} = ${JSON.stringify(text)}`)\n      }\n    }\n  } catch (error) {\n    if (error instanceof MultipartParseError) {\n      console.error('Failed to parse multipart request:', error.message)\n    } else {\n      console.error('An unexpected error occurred:', error)\n    }\n  }\n}\n```\n\n## Part Headers\n\nEach `MultipartPart` exposes decoded part headers as a plain object keyed by lower-case header name. Values are strings, and repeated headers are joined with `, `. Multipart part headers are parsed metadata from the request body, not native `Headers` objects, so access them with bracket notation:\n\n```ts\nfor await (let part of parseMultipartRequest(request)) {\n  let contentDisposition = part.headers['content-disposition']\n  let contentType = part.headers['content-type']\n\n  console.log(contentDisposition, contentType)\n}\n```\n\n## Size Limits\n\nA common use case when handling file uploads is limiting the overall shape of incoming multipart bodies so malicious clients cannot force unbounded growth in memory. Use `maxFileSize` to limit each part, `maxParts` to limit how many parts are accepted, and `maxTotalSize` to limit aggregate part content across the entire request. `multipart-parser` applies finite defaults for each of these limits.\n\n```ts\nimport {\n  MultipartParseError,\n  MaxFileSizeExceededError,\n  MaxPartsExceededError,\n  MaxTotalSizeExceededError,\n  parseMultipartRequest,\n} from 'remix/multipart-parser/node'\n\nconst oneMb = Math.pow(2, 20)\nconst limits = {\n  maxFileSize: 10 * oneMb,\n  maxParts: 100,\n  maxTotalSize: 25 * oneMb,\n}\n\nasync function handleRequest(request: Request): Promise<Response> {\n  try {\n    for await (let part of parseMultipartRequest(request, limits)) {\n      // ...\n    }\n  } catch (error) {\n    if (error instanceof MaxFileSizeExceededError) {\n      return new Response('File size limit exceeded', { status: 413 })\n    } else if (error instanceof MaxPartsExceededError) {\n      return new Response('Too many multipart parts', { status: 413 })\n    } else if (error instanceof MaxTotalSizeExceededError) {\n      return new Response('Multipart request is too large', { status: 413 })\n    } else if (error instanceof MultipartParseError) {\n      return new Response('Failed to parse multipart request', { status: 400 })\n    } else {\n      console.error(error)\n      return new Response('Internal Server Error', { status: 500 })\n    }\n  }\n}\n```\n\n## Node.js Bindings\n\nThe main module (`import {} from 'remix/multipart-parser'`) assumes you're working with [the fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) (`Request`, `ReadableStream`, etc). Support for these interfaces was added to Node.js by the [undici](https://github.com/nodejs/undici) project in [version 16.5.0](https://nodejs.org/en/blog/release/v16.5.0).\n\nIf however you're building a server for Node.js that relies on node-specific APIs like `http.IncomingMessage`, `stream.Readable`, and `buffer.Buffer` (ala Express or `http.createServer`), `multipart-parser` ships with an additional module that works directly with these APIs.\n\n```ts\nimport * as http from 'node:http'\nimport { MultipartParseError, parseMultipartRequest } from 'remix/multipart-parser/node'\n\nlet server = http.createServer(async (req, res) => {\n  try {\n    for await (let part of parseMultipartRequest(req)) {\n      // ...\n    }\n  } catch (error) {\n    if (error instanceof MultipartParseError) {\n      console.error('Failed to parse multipart request:', error.message)\n    } else {\n      console.error('An unexpected error occurred:', error)\n    }\n  }\n})\n\nserver.listen(8080)\n```\n\n## Low-level API\n\nIf you're working directly with multipart boundaries and buffers/streams of multipart data that are not necessarily part of a request, `multipart-parser` provides a low-level `parseMultipart()` API that you can use directly:\n\n```ts\nimport { parseMultipart } from 'remix/multipart-parser'\n\nlet message = new Uint8Array(/* ... */)\nlet boundary = '----WebKitFormBoundary56eac3x'\n\nfor (let part of parseMultipart(message, { boundary })) {\n  // ...\n}\n```\n\nIn addition, the `parseMultipartStream` function provides an `async` generator interface for multipart data in a `ReadableStream`:\n\n```ts\nimport { parseMultipartStream } from 'remix/multipart-parser'\n\nlet message = new ReadableStream(/* ... */)\nlet boundary = '----WebKitFormBoundary56eac3x'\n\nfor await (let part of parseMultipartStream(message, { boundary })) {\n  // ...\n}\n```\n\n## Demos\n\nThe [`demos` directory](https://github.com/remix-run/remix/tree/main/packages/multipart-parser/demos) contains a few working demos of how you can use this library:\n\n- [`demos/bun`](https://github.com/remix-run/remix/tree/main/packages/multipart-parser/demos/bun) - using multipart-parser in Bun\n- [`demos/cf-workers`](https://github.com/remix-run/remix/tree/main/packages/multipart-parser/demos/cf-workers) - using multipart-parser in a Cloudflare Worker and storing file uploads in R2\n- [`demos/deno`](https://github.com/remix-run/remix/tree/main/packages/multipart-parser/demos/deno) - using multipart-parser in Deno\n- [`demos/node`](https://github.com/remix-run/remix/tree/main/packages/multipart-parser/demos/node) - using multipart-parser in Node.js\n\n## Benchmark\n\n`multipart-parser` is designed to be as efficient as possible, operating on streams of data and rarely buffering in common usage. This design yields exceptional performance when handling multipart payloads of any size. In benchmarks, `multipart-parser` is as fast or faster than `busboy`.\n\nThe results of running the benchmarks on my laptop:\n\n```\n> @remix-run/multipart-parser@0.10.1 bench:node /Users/michael/Projects/remix-the-web/packages/multipart-parser\n> node ./bench/runner.ts\n\nPlatform: Darwin (24.5.0)\nCPU: Apple M1 Pro\nDate: 6/13/2025, 12:27:09 PM\nNode.js v24.0.2\n┌──────────────────┬──────────────────┬──────────────────┬──────────────────┬───────────────────┐\n│ (index)          │ 1 small file     │ 1 large file     │ 100 small files  │ 5 large files     │\n├──────────────────┼──────────────────┼──────────────────┼──────────────────┼───────────────────┤\n│ multipart-parser │ '0.01 ms ± 0.03' │ '1.08 ms ± 0.08' │ '0.04 ms ± 0.01' │ '10.50 ms ± 0.38' │\n│ multipasta       │ '0.02 ms ± 0.06' │ '1.07 ms ± 0.02' │ '0.15 ms ± 0.02' │ '10.46 ms ± 0.11' │\n│ busboy           │ '0.06 ms ± 0.17' │ '3.07 ms ± 0.24' │ '0.24 ms ± 0.05' │ '29.85 ms ± 0.18' │\n│ @fastify/busboy  │ '0.05 ms ± 0.13' │ '1.23 ms ± 0.09' │ '0.45 ms ± 0.22' │ '11.81 ms ± 0.11' │\n└──────────────────┴──────────────────┴──────────────────┴──────────────────┴───────────────────┘\n\n> @remix-run/multipart-parser@0.10.1 bench:bun /Users/michael/Projects/remix-the-web/packages/multipart-parser\n> bun run ./bench/runner.ts\n\nPlatform: Darwin (24.5.0)\nCPU: Apple M1 Pro\nDate: 6/13/2025, 12:27:31 PM\nBun 1.2.13\n┌──────────────────┬────────────────┬────────────────┬─────────────────┬─────────────────┐\n│                  │ 1 small file   │ 1 large file   │ 100 small files │ 5 large files   │\n├──────────────────┼────────────────┼────────────────┼─────────────────┼─────────────────┤\n│ multipart-parser │ 0.01 ms ± 0.04 │ 0.86 ms ± 0.09 │ 0.04 ms ± 0.01  │ 8.32 ms ± 0.26  │\n│       multipasta │ 0.02 ms ± 0.07 │ 0.87 ms ± 0.03 │ 0.25 ms ± 0.21  │ 8.27 ms ± 0.09  │\n│           busboy │ 0.05 ms ± 0.17 │ 3.54 ms ± 0.10 │ 0.30 ms ± 0.03  │ 34.79 ms ± 0.38 │\n│  @fastify/busboy │ 0.06 ms ± 0.18 │ 4.04 ms ± 0.08 │ 0.48 ms ± 0.06  │ 39.91 ms ± 0.37 │\n└──────────────────┴────────────────┴────────────────┴─────────────────┴─────────────────┘\n\n> @remix-run/multipart-parser@0.10.1 bench:deno /Users/michael/Projects/remix-the-web/packages/multipart-parser\n> deno run --allow-sys ./bench/runner.ts\n\nPlatform: Darwin (24.5.0)\nCPU: Apple M1 Pro\nDate: 6/13/2025, 12:28:12 PM\nDeno 2.3.6\n┌──────────────────┬──────────────────┬────────────────────┬──────────────────┬─────────────────────┐\n│ (idx)            │ 1 small file     │ 1 large file       │ 100 small files  │ 5 large files       │\n├──────────────────┼──────────────────┼────────────────────┼──────────────────┼─────────────────────┤\n│ multipart-parser │ \"0.01 ms ± 0.03\" │ \"1.03 ms ± 0.04\"   │ \"0.05 ms ± 0.01\" │ \"10.05 ms ± 0.20\"   │\n│ multipasta       │ \"0.02 ms ± 0.07\" │ \"1.04 ms ± 0.03\"   │ \"0.16 ms ± 0.02\" │ \"10.10 ms ± 0.08\"   │\n│ busboy           │ \"0.05 ms ± 0.19\" │ \"3.06 ms ± 0.15\"   │ \"0.32 ms ± 0.05\" │ \"29.92 ms ± 0.24\"   │\n│ @fastify/busboy  │ \"0.06 ms ± 0.14\" │ \"14.72 ms ± 11.42\" │ \"0.81 ms ± 0.20\" │ \"127.63 ms ± 35.77\" │\n└──────────────────┴──────────────────┴────────────────────┴──────────────────┴─────────────────────┘\n```\n\n## Related Packages\n\n- [`form-data-parser`](https://github.com/remix-run/remix/tree/main/packages/form-data-parser) - Uses `multipart-parser` internally to parse multipart requests and generate `FileUpload`s for storage\n- [`headers`](https://github.com/remix-run/remix/tree/main/packages/headers) - Used internally to parse `Content-Disposition` and `Content-Type` metadata for each `MultipartPart`\n\n## Credits\n\nThanks to Jacob Ebey who gave me several code reviews on this project prior to publishing.\n\n## License\n\nSee [LICENSE](https://github.com/remix-run/remix/blob/main/LICENSE)\n","readmeFilename":"README.md"}