{"_id":"@0xdoublesharp/bin-packing-wasm","_rev":"5-6d06780dea2dfd34d0b106b382486731","name":"@0xdoublesharp/bin-packing-wasm","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"@0xdoublesharp/bin-packing-wasm","version":"0.1.0","keywords":["bin-packing","cutting-stock","optimization","packing","wasm","webassembly","maxrects","guillotine","skyline"],"license":"MIT","_id":"@0xdoublesharp/bin-packing-wasm@0.1.0","maintainers":[{"name":"doublesharp","email":"jsilver@doublesharp.com"}],"homepage":"https://github.com/doublesharp/bin-packing#readme","bugs":{"url":"https://github.com/doublesharp/bin-packing/issues"},"dist":{"shasum":"661e6f168e9709175d589b2d31f926c7bb93591a","tarball":"https://registry.npmjs.org/@0xdoublesharp/bin-packing-wasm/-/bin-packing-wasm-0.1.0.tgz","fileCount":55,"integrity":"sha512-ZdC6ZtcMTS2QY9hKJtYAbS8VWUqMOLtUtU4QQpnO5LQChof1pA3ay40GjnWNht0TWQeA3ctIITCsvgsoIKPnCg==","signatures":[{"sig":"MEYCIQCK+jKRtHKMWmwvh5AwqE4ZksVdRCNgZwNZuQ5VssY7/gIhAM1OS4aZQLV57LlYq168GzQhgZV6ef65yehTuxZBqnvV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xdoublesharp%2fbin-packing-wasm@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5301524},"main":"dist/bundler/bin_packing_wasm.js","type":"module","types":"dist/bundler/bin_packing_wasm.d.ts","module":"dist/bundler/bin_packing_wasm.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/bundler/bin_packing_wasm.d.ts","import":"./dist/bundler/bin_packing_wasm.js","default":"./dist/bundler/bin_packing_wasm.js"},"./web":{"types":"./dist/web/bin_packing_wasm.d.ts","import":"./dist/web/bin_packing_wasm.js","default":"./dist/web/bin_packing_wasm.js"},"./one-d":{"types":"./dist/one-d/bundler/bin_packing_wasm.d.ts","import":"./dist/one-d/bundler/bin_packing_wasm.js","default":"./dist/one-d/bundler/bin_packing_wasm.js"},"./two-d":{"types":"./dist/two-d/bundler/bin_packing_wasm.d.ts","import":"./dist/two-d/bundler/bin_packing_wasm.js","default":"./dist/two-d/bundler/bin_packing_wasm.js"},"./nodejs":{"types":"./dist/nodejs/bin_packing_wasm.d.cts","import":"./dist/nodejs/bin_packing_wasm.cjs","default":"./dist/nodejs/bin_packing_wasm.cjs","require":"./dist/nodejs/bin_packing_wasm.cjs"},"./three-d":{"types":"./dist/three-d/bundler/bin_packing_wasm.d.ts","import":"./dist/three-d/bundler/bin_packing_wasm.js","default":"./dist/three-d/bundler/bin_packing_wasm.js"},"./one-d/web":{"types":"./dist/one-d/web/bin_packing_wasm.d.ts","import":"./dist/one-d/web/bin_packing_wasm.js","default":"./dist/one-d/web/bin_packing_wasm.js"},"./two-d/web":{"types":"./dist/two-d/web/bin_packing_wasm.d.ts","import":"./dist/two-d/web/bin_packing_wasm.js","default":"./dist/two-d/web/bin_packing_wasm.js"},"./three-d/web":{"types":"./dist/three-d/web/bin_packing_wasm.d.ts","import":"./dist/three-d/web/bin_packing_wasm.js","default":"./dist/three-d/web/bin_packing_wasm.js"},"./one-d/nodejs":{"types":"./dist/one-d/nodejs/bin_packing_wasm.d.cts","import":"./dist/one-d/nodejs/bin_packing_wasm.cjs","default":"./dist/one-d/nodejs/bin_packing_wasm.cjs","require":"./dist/one-d/nodejs/bin_packing_wasm.cjs"},"./package.json":"./package.json","./two-d/nodejs":{"types":"./dist/two-d/nodejs/bin_packing_wasm.d.cts","import":"./dist/two-d/nodejs/bin_packing_wasm.cjs","default":"./dist/two-d/nodejs/bin_packing_wasm.cjs","require":"./dist/two-d/nodejs/bin_packing_wasm.cjs"},"./three-d/nodejs":{"types":"./dist/three-d/nodejs/bin_packing_wasm.d.cts","import":"./dist/three-d/nodejs/bin_packing_wasm.cjs","default":"./dist/three-d/nodejs/bin_packing_wasm.cjs","require":"./dist/three-d/nodejs/bin_packing_wasm.cjs"}},"gitHead":"104b8eb0de1745e62d13f0c528daadc3cc156b02","scripts":{"test":"node --test test/smoke.test.mjs","build":"node scripts/build.mjs","clean":"node -e \"import('node:fs').then(fs => fs.promises.rm('dist', { recursive: true, force: true }))\"","prepack":"npm run build","build:web":"wasm-pack build --release --target web --out-dir dist/web --out-name bin_packing_wasm","build:nodejs":"wasm-pack build --release --target nodejs --out-dir dist/nodejs --out-name bin_packing_wasm","build:bundler":"wasm-pack build --release --target bundler --out-dir dist/bundler --out-name bin_packing_wasm"},"_npmUser":{"name":"doublesharp","email":"jsilver@doublesharp.com"},"repository":{"url":"git+https://github.com/doublesharp/bin-packing.git","type":"git","directory":"bindings/wasm"},"_npmVersion":"10.9.7","description":"WebAssembly bindings for the bin-packing cut list optimizer (browser, Node.js, Deno, Cloudflare Workers)","directories":{},"sideEffects":["*.wasm"],"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/bin-packing-wasm_0.1.0_1775981810980_0.8545787298838785","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@0xdoublesharp/bin-packing-wasm","version":"0.1.1","keywords":["bin-packing","cutting-stock","optimization","packing","wasm","webassembly","maxrects","guillotine","skyline"],"license":"MIT","_id":"@0xdoublesharp/bin-packing-wasm@0.1.1","maintainers":[{"name":"doublesharp","email":"jsilver@doublesharp.com"}],"homepage":"https://github.com/doublesharp/bin-packing#readme","bugs":{"url":"https://github.com/doublesharp/bin-packing/issues"},"dist":{"shasum":"a7a0a4867c0d3b1b74834ae2a245b387a9bc0970","tarball":"https://registry.npmjs.org/@0xdoublesharp/bin-packing-wasm/-/bin-packing-wasm-0.1.1.tgz","fileCount":55,"integrity":"sha512-2mb2aIUoYQ2zR+nukAIm84rB75c88h9F/f/rrXycym3ScZ4y46E/B1cReWMKzLJPeMpW74mKdkRv5cU7JPCkMw==","signatures":[{"sig":"MEQCIC2+nIBQhJJrsLUBz9kBzBg6nop52R86vpxUAu2ior3hAiALN2Fpeh68RDnJ9Lw7lsv+J6uobwJuf8epdOd9bCD+Cw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xdoublesharp%2fbin-packing-wasm@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5301516},"main":"dist/bundler/bin_packing_wasm.js","type":"module","types":"dist/bundler/bin_packing_wasm.d.ts","module":"dist/bundler/bin_packing_wasm.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/bundler/bin_packing_wasm.d.ts","import":"./dist/bundler/bin_packing_wasm.js","default":"./dist/bundler/bin_packing_wasm.js"},"./web":{"types":"./dist/web/bin_packing_wasm.d.ts","import":"./dist/web/bin_packing_wasm.js","default":"./dist/web/bin_packing_wasm.js"},"./one-d":{"types":"./dist/one-d/bundler/bin_packing_wasm.d.ts","import":"./dist/one-d/bundler/bin_packing_wasm.js","default":"./dist/one-d/bundler/bin_packing_wasm.js"},"./two-d":{"types":"./dist/two-d/bundler/bin_packing_wasm.d.ts","import":"./dist/two-d/bundler/bin_packing_wasm.js","default":"./dist/two-d/bundler/bin_packing_wasm.js"},"./nodejs":{"types":"./dist/nodejs/bin_packing_wasm.d.cts","import":"./dist/nodejs/bin_packing_wasm.cjs","default":"./dist/nodejs/bin_packing_wasm.cjs","require":"./dist/nodejs/bin_packing_wasm.cjs"},"./three-d":{"types":"./dist/three-d/bundler/bin_packing_wasm.d.ts","import":"./dist/three-d/bundler/bin_packing_wasm.js","default":"./dist/three-d/bundler/bin_packing_wasm.js"},"./one-d/web":{"types":"./dist/one-d/web/bin_packing_wasm.d.ts","import":"./dist/one-d/web/bin_packing_wasm.js","default":"./dist/one-d/web/bin_packing_wasm.js"},"./two-d/web":{"types":"./dist/two-d/web/bin_packing_wasm.d.ts","import":"./dist/two-d/web/bin_packing_wasm.js","default":"./dist/two-d/web/bin_packing_wasm.js"},"./three-d/web":{"types":"./dist/three-d/web/bin_packing_wasm.d.ts","import":"./dist/three-d/web/bin_packing_wasm.js","default":"./dist/three-d/web/bin_packing_wasm.js"},"./one-d/nodejs":{"types":"./dist/one-d/nodejs/bin_packing_wasm.d.cts","import":"./dist/one-d/nodejs/bin_packing_wasm.cjs","default":"./dist/one-d/nodejs/bin_packing_wasm.cjs","require":"./dist/one-d/nodejs/bin_packing_wasm.cjs"},"./package.json":"./package.json","./two-d/nodejs":{"types":"./dist/two-d/nodejs/bin_packing_wasm.d.cts","import":"./dist/two-d/nodejs/bin_packing_wasm.cjs","default":"./dist/two-d/nodejs/bin_packing_wasm.cjs","require":"./dist/two-d/nodejs/bin_packing_wasm.cjs"},"./three-d/nodejs":{"types":"./dist/three-d/nodejs/bin_packing_wasm.d.cts","import":"./dist/three-d/nodejs/bin_packing_wasm.cjs","default":"./dist/three-d/nodejs/bin_packing_wasm.cjs","require":"./dist/three-d/nodejs/bin_packing_wasm.cjs"}},"gitHead":"867f20dd8480f7fc6782ebdd676f449f8705ce03","scripts":{"test":"node --test test/smoke.test.mjs","build":"node scripts/build.mjs","clean":"node -e \"import('node:fs').then(fs => fs.promises.rm('dist', { recursive: true, force: true }))\"","prepack":"npm run build","build:web":"wasm-pack build --release --target web --out-dir dist/web --out-name bin_packing_wasm","build:nodejs":"wasm-pack build --release --target nodejs --out-dir dist/nodejs --out-name bin_packing_wasm","build:bundler":"wasm-pack build --release --target bundler --out-dir dist/bundler --out-name bin_packing_wasm"},"_npmUser":{"name":"doublesharp","email":"jsilver@doublesharp.com"},"repository":{"url":"git+https://github.com/doublesharp/bin-packing.git","type":"git","directory":"bindings/wasm"},"_npmVersion":"10.9.7","description":"WebAssembly bindings for the bin-packing cut list optimizer (browser, Node.js, Deno, Cloudflare Workers)","directories":{},"sideEffects":["*.wasm"],"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/bin-packing-wasm_0.1.1_1775982549862_0.19795381996076578","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@0xdoublesharp/bin-packing-wasm","version":"0.2.0","keywords":["bin-packing","cutting-stock","optimization","packing","wasm","webassembly","maxrects","guillotine","skyline"],"license":"MIT","_id":"@0xdoublesharp/bin-packing-wasm@0.2.0","maintainers":[{"name":"doublesharp","email":"jsilver@doublesharp.com"}],"homepage":"https://github.com/doublesharp/bin-packing#readme","bugs":{"url":"https://github.com/doublesharp/bin-packing/issues"},"dist":{"shasum":"1022ff18095b2fa12e8224f9e1bd2aa59bf4d584","tarball":"https://registry.npmjs.org/@0xdoublesharp/bin-packing-wasm/-/bin-packing-wasm-0.2.0.tgz","fileCount":55,"integrity":"sha512-YSTeodUInsmk1HTAB4DG8XYvKRI+Gjankn4P5PNRRKDDhcfISg+Vz2gPi0xgx85MZyiy1gJ5x9DvZMtZBLoKFQ==","signatures":[{"sig":"MEQCIE71GBQN9wtuZ8dzG7S95BcNQrOatY+O+8K+8H4R1SehAiB2SbAzd1QrijL3ju8OrCEn1WHgYvOHsdDiZHeRIm+u9Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xdoublesharp%2fbin-packing-wasm@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5232752},"main":"dist/bundler/bin_packing_wasm.js","type":"module","types":"dist/bundler/bin_packing_wasm.d.ts","module":"dist/bundler/bin_packing_wasm.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/bundler/bin_packing_wasm.d.ts","import":"./dist/bundler/bin_packing_wasm.js","default":"./dist/bundler/bin_packing_wasm.js"},"./web":{"types":"./dist/web/bin_packing_wasm.d.ts","import":"./dist/web/bin_packing_wasm.js","default":"./dist/web/bin_packing_wasm.js"},"./one-d":{"types":"./dist/one-d/bundler/bin_packing_wasm.d.ts","import":"./dist/one-d/bundler/bin_packing_wasm.js","default":"./dist/one-d/bundler/bin_packing_wasm.js"},"./two-d":{"types":"./dist/two-d/bundler/bin_packing_wasm.d.ts","import":"./dist/two-d/bundler/bin_packing_wasm.js","default":"./dist/two-d/bundler/bin_packing_wasm.js"},"./nodejs":{"types":"./dist/nodejs/bin_packing_wasm.d.cts","import":"./dist/nodejs/bin_packing_wasm.cjs","default":"./dist/nodejs/bin_packing_wasm.cjs","require":"./dist/nodejs/bin_packing_wasm.cjs"},"./three-d":{"types":"./dist/three-d/bundler/bin_packing_wasm.d.ts","import":"./dist/three-d/bundler/bin_packing_wasm.js","default":"./dist/three-d/bundler/bin_packing_wasm.js"},"./one-d/web":{"types":"./dist/one-d/web/bin_packing_wasm.d.ts","import":"./dist/one-d/web/bin_packing_wasm.js","default":"./dist/one-d/web/bin_packing_wasm.js"},"./two-d/web":{"types":"./dist/two-d/web/bin_packing_wasm.d.ts","import":"./dist/two-d/web/bin_packing_wasm.js","default":"./dist/two-d/web/bin_packing_wasm.js"},"./three-d/web":{"types":"./dist/three-d/web/bin_packing_wasm.d.ts","import":"./dist/three-d/web/bin_packing_wasm.js","default":"./dist/three-d/web/bin_packing_wasm.js"},"./one-d/nodejs":{"types":"./dist/one-d/nodejs/bin_packing_wasm.d.cts","import":"./dist/one-d/nodejs/bin_packing_wasm.cjs","default":"./dist/one-d/nodejs/bin_packing_wasm.cjs","require":"./dist/one-d/nodejs/bin_packing_wasm.cjs"},"./package.json":"./package.json","./two-d/nodejs":{"types":"./dist/two-d/nodejs/bin_packing_wasm.d.cts","import":"./dist/two-d/nodejs/bin_packing_wasm.cjs","default":"./dist/two-d/nodejs/bin_packing_wasm.cjs","require":"./dist/two-d/nodejs/bin_packing_wasm.cjs"},"./three-d/nodejs":{"types":"./dist/three-d/nodejs/bin_packing_wasm.d.cts","import":"./dist/three-d/nodejs/bin_packing_wasm.cjs","default":"./dist/three-d/nodejs/bin_packing_wasm.cjs","require":"./dist/three-d/nodejs/bin_packing_wasm.cjs"}},"gitHead":"d51f8d979d04754b32d943b37fbcd7be8c611b09","scripts":{"test":"node --test test/smoke.test.mjs","build":"node scripts/build.mjs","clean":"node -e \"import('node:fs').then(fs => fs.promises.rm('dist', { recursive: true, force: true }))\"","prepack":"node scripts/build.mjs","build:web":"wasm-pack build --release --target web --out-dir dist/web --out-name bin_packing_wasm","build:nodejs":"wasm-pack build --release --target nodejs --out-dir dist/nodejs --out-name bin_packing_wasm","build:bundler":"wasm-pack build --release --target bundler --out-dir dist/bundler --out-name bin_packing_wasm"},"_npmUser":{"name":"doublesharp","email":"jsilver@doublesharp.com"},"repository":{"url":"git+https://github.com/doublesharp/bin-packing.git","type":"git","directory":"bindings/wasm"},"_npmVersion":"10.9.7","description":"WebAssembly bindings for the bin-packing cut list optimizer (browser, Node.js, Deno, Cloudflare Workers)","directories":{},"sideEffects":["*.wasm"],"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/bin-packing-wasm_0.2.0_1776212214518_0.1647635388016888","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@0xdoublesharp/bin-packing-wasm","version":"0.3.0","keywords":["bin-packing","cutting-stock","optimization","packing","wasm","webassembly","maxrects","guillotine","skyline"],"license":"MIT","_id":"@0xdoublesharp/bin-packing-wasm@0.3.0","maintainers":[{"name":"doublesharp","email":"jsilver@doublesharp.com"}],"homepage":"https://github.com/doublesharp/bin-packing#readme","bugs":{"url":"https://github.com/doublesharp/bin-packing/issues"},"dist":{"shasum":"9f156abcc3217d7d9e02eacfb7378013e876787d","tarball":"https://registry.npmjs.org/@0xdoublesharp/bin-packing-wasm/-/bin-packing-wasm-0.3.0.tgz","fileCount":55,"integrity":"sha512-zSzy6Bm8+d9piICAn7FOLr+jpya2Mowhvtwv6lfQ6yPskPmWaye9sdVqB+zBtsPyHWheD9rl274KFchB9xaY5g==","signatures":[{"sig":"MEQCIFwJFgU/3K2VCZU67k+d1gKbIbB03tl0mW3sIVYnNNMzAiB4dFEQz6YFnOTi3j7PvL48bPZVgTGIttg2at1orSn18g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xdoublesharp%2fbin-packing-wasm@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5904922},"main":"dist/bundler/bin_packing_wasm.js","type":"module","types":"dist/bundler/bin_packing_wasm.d.ts","module":"dist/bundler/bin_packing_wasm.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/bundler/bin_packing_wasm.d.ts","import":"./dist/bundler/bin_packing_wasm.js","default":"./dist/bundler/bin_packing_wasm.js"},"./web":{"types":"./dist/web/bin_packing_wasm.d.ts","import":"./dist/web/bin_packing_wasm.js","default":"./dist/web/bin_packing_wasm.js"},"./one-d":{"types":"./dist/one-d/bundler/bin_packing_wasm.d.ts","import":"./dist/one-d/bundler/bin_packing_wasm.js","default":"./dist/one-d/bundler/bin_packing_wasm.js"},"./two-d":{"types":"./dist/two-d/bundler/bin_packing_wasm.d.ts","import":"./dist/two-d/bundler/bin_packing_wasm.js","default":"./dist/two-d/bundler/bin_packing_wasm.js"},"./nodejs":{"types":"./dist/nodejs/bin_packing_wasm.d.cts","import":"./dist/nodejs/bin_packing_wasm.cjs","default":"./dist/nodejs/bin_packing_wasm.cjs","require":"./dist/nodejs/bin_packing_wasm.cjs"},"./three-d":{"types":"./dist/three-d/bundler/bin_packing_wasm.d.ts","import":"./dist/three-d/bundler/bin_packing_wasm.js","default":"./dist/three-d/bundler/bin_packing_wasm.js"},"./one-d/web":{"types":"./dist/one-d/web/bin_packing_wasm.d.ts","import":"./dist/one-d/web/bin_packing_wasm.js","default":"./dist/one-d/web/bin_packing_wasm.js"},"./two-d/web":{"types":"./dist/two-d/web/bin_packing_wasm.d.ts","import":"./dist/two-d/web/bin_packing_wasm.js","default":"./dist/two-d/web/bin_packing_wasm.js"},"./three-d/web":{"types":"./dist/three-d/web/bin_packing_wasm.d.ts","import":"./dist/three-d/web/bin_packing_wasm.js","default":"./dist/three-d/web/bin_packing_wasm.js"},"./one-d/nodejs":{"types":"./dist/one-d/nodejs/bin_packing_wasm.d.cts","import":"./dist/one-d/nodejs/bin_packing_wasm.cjs","default":"./dist/one-d/nodejs/bin_packing_wasm.cjs","require":"./dist/one-d/nodejs/bin_packing_wasm.cjs"},"./package.json":"./package.json","./two-d/nodejs":{"types":"./dist/two-d/nodejs/bin_packing_wasm.d.cts","import":"./dist/two-d/nodejs/bin_packing_wasm.cjs","default":"./dist/two-d/nodejs/bin_packing_wasm.cjs","require":"./dist/two-d/nodejs/bin_packing_wasm.cjs"},"./three-d/nodejs":{"types":"./dist/three-d/nodejs/bin_packing_wasm.d.cts","import":"./dist/three-d/nodejs/bin_packing_wasm.cjs","default":"./dist/three-d/nodejs/bin_packing_wasm.cjs","require":"./dist/three-d/nodejs/bin_packing_wasm.cjs"}},"gitHead":"733c59b44b3763c1eed7e0a58bdb5ca6c73f7f0c","scripts":{"test":"node --test test/smoke.test.mjs","build":"node scripts/build.mjs","clean":"node -e \"import('node:fs').then(fs => fs.promises.rm('dist', { recursive: true, force: true }))\"","prepack":"node scripts/build.mjs","build:web":"wasm-pack build --release --target web --out-dir dist/web --out-name bin_packing_wasm","build:nodejs":"wasm-pack build --release --target nodejs --out-dir dist/nodejs --out-name bin_packing_wasm","build:bundler":"wasm-pack build --release --target bundler --out-dir dist/bundler --out-name bin_packing_wasm"},"_npmUser":{"name":"doublesharp","email":"jsilver@doublesharp.com"},"repository":{"url":"git+https://github.com/doublesharp/bin-packing.git","type":"git","directory":"bindings/wasm"},"_npmVersion":"10.9.7","description":"WebAssembly bindings for the bin-packing cut list optimizer (browser, Node.js, Deno, Cloudflare Workers)","directories":{},"sideEffects":["*.wasm"],"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/bin-packing-wasm_0.3.0_1776311944726_0.20132081994276407","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@0xdoublesharp/bin-packing-wasm","version":"0.4.0","description":"WebAssembly bindings for the bin-packing cut list optimizer (browser, Node.js, Deno, Cloudflare Workers)","license":"MIT","repository":{"type":"git","url":"git+https://github.com/doublesharp/bin-packing.git","directory":"bindings/wasm"},"keywords":["bin-packing","cutting-stock","optimization","packing","wasm","webassembly","maxrects","guillotine","skyline"],"type":"module","main":"dist/bundler/bin_packing_wasm.js","module":"dist/bundler/bin_packing_wasm.js","types":"dist/bundler/bin_packing_wasm.d.ts","exports":{".":{"types":"./dist/bundler/bin_packing_wasm.d.ts","import":"./dist/bundler/bin_packing_wasm.js","default":"./dist/bundler/bin_packing_wasm.js"},"./web":{"types":"./dist/web/bin_packing_wasm.d.ts","import":"./dist/web/bin_packing_wasm.js","default":"./dist/web/bin_packing_wasm.js"},"./nodejs":{"types":"./dist/nodejs/bin_packing_wasm.d.cts","require":"./dist/nodejs/bin_packing_wasm.cjs","import":"./dist/nodejs/bin_packing_wasm.cjs","default":"./dist/nodejs/bin_packing_wasm.cjs"},"./one-d":{"types":"./dist/one-d/bundler/bin_packing_wasm.d.ts","import":"./dist/one-d/bundler/bin_packing_wasm.js","default":"./dist/one-d/bundler/bin_packing_wasm.js"},"./one-d/web":{"types":"./dist/one-d/web/bin_packing_wasm.d.ts","import":"./dist/one-d/web/bin_packing_wasm.js","default":"./dist/one-d/web/bin_packing_wasm.js"},"./one-d/nodejs":{"types":"./dist/one-d/nodejs/bin_packing_wasm.d.cts","require":"./dist/one-d/nodejs/bin_packing_wasm.cjs","import":"./dist/one-d/nodejs/bin_packing_wasm.cjs","default":"./dist/one-d/nodejs/bin_packing_wasm.cjs"},"./two-d":{"types":"./dist/two-d/bundler/bin_packing_wasm.d.ts","import":"./dist/two-d/bundler/bin_packing_wasm.js","default":"./dist/two-d/bundler/bin_packing_wasm.js"},"./two-d/web":{"types":"./dist/two-d/web/bin_packing_wasm.d.ts","import":"./dist/two-d/web/bin_packing_wasm.js","default":"./dist/two-d/web/bin_packing_wasm.js"},"./two-d/nodejs":{"types":"./dist/two-d/nodejs/bin_packing_wasm.d.cts","require":"./dist/two-d/nodejs/bin_packing_wasm.cjs","import":"./dist/two-d/nodejs/bin_packing_wasm.cjs","default":"./dist/two-d/nodejs/bin_packing_wasm.cjs"},"./three-d":{"types":"./dist/three-d/bundler/bin_packing_wasm.d.ts","import":"./dist/three-d/bundler/bin_packing_wasm.js","default":"./dist/three-d/bundler/bin_packing_wasm.js"},"./three-d/web":{"types":"./dist/three-d/web/bin_packing_wasm.d.ts","import":"./dist/three-d/web/bin_packing_wasm.js","default":"./dist/three-d/web/bin_packing_wasm.js"},"./three-d/nodejs":{"types":"./dist/three-d/nodejs/bin_packing_wasm.d.cts","require":"./dist/three-d/nodejs/bin_packing_wasm.cjs","import":"./dist/three-d/nodejs/bin_packing_wasm.cjs","default":"./dist/three-d/nodejs/bin_packing_wasm.cjs"},"./package.json":"./package.json"},"publishConfig":{"access":"public"},"sideEffects":["*.wasm"],"engines":{"node":">=18"},"scripts":{"build":"node scripts/build.mjs","build:bundler":"node scripts/build.mjs --target bundler","build:web":"node scripts/build.mjs --target web","build:nodejs":"node scripts/build.mjs --target nodejs","clean":"node -e \"import('node:fs').then(fs => fs.promises.rm('dist', { recursive: true, force: true }))\"","test":"node --experimental-wasm-modules --test test/*.test.mjs","prepack":"node scripts/build.mjs"},"gitHead":"3088b655e0d741b01d50061fb2300e6a99ccf8ee","_id":"@0xdoublesharp/bin-packing-wasm@0.4.0","bugs":{"url":"https://github.com/doublesharp/bin-packing/issues"},"homepage":"https://github.com/doublesharp/bin-packing#readme","_nodeVersion":"24.20.0","_npmVersion":"11.19.1","dist":{"integrity":"sha512-OzAh+onadxurEjFbu5uOzYF6VsFblYz5TyH9sfUq7rgo6I87zlVPaqTcMUpzIrlVa2tSFoV4nBL5uW9qdsQyyg==","shasum":"14840b877a3c4c19b1cdf827fad2aa123427d9d9","tarball":"https://registry.npmjs.org/@0xdoublesharp/bin-packing-wasm/-/bin-packing-wasm-0.4.0.tgz","fileCount":55,"unpackedSize":6911418,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xdoublesharp%2fbin-packing-wasm@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDg3xmUHmijIvg2j2UHV5GMUDA6ojgguEaQ8X+EFQlruAiEAvEp72+Yf72+OCjmUARKNcEbslZ4gtuYL96cEggmUOLg="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:052fc2be-6206-4c8a-8ded-b81315d18c99"}},"directories":{},"maintainers":[{"name":"doublesharp","email":"jsilver@doublesharp.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bin-packing-wasm_0.4.0_1789008735293_0.6387994588582884"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-12T08:16:50.775Z","modified":"2026-09-10T02:52:16.101Z","0.1.0":"2026-04-12T08:16:51.288Z","0.1.1":"2026-04-12T08:29:10.046Z","0.2.0":"2026-04-15T00:16:54.785Z","0.3.0":"2026-04-16T03:59:04.986Z","0.4.0":"2026-09-10T02:52:15.657Z"},"bugs":{"url":"https://github.com/doublesharp/bin-packing/issues"},"license":"MIT","homepage":"https://github.com/doublesharp/bin-packing#readme","keywords":["bin-packing","cutting-stock","optimization","packing","wasm","webassembly","maxrects","guillotine","skyline"],"repository":{"type":"git","url":"git+https://github.com/doublesharp/bin-packing.git","directory":"bindings/wasm"},"description":"WebAssembly bindings for the bin-packing cut list optimizer (browser, Node.js, Deno, Cloudflare Workers)","maintainers":[{"name":"doublesharp","email":"jsilver@doublesharp.com"}],"readme":"<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/doublesharp/bin-packing/main/docs/bin-packing.png\" alt=\"bin-packing\" width=\"200\">\n</p>\n\n# @0xdoublesharp/bin-packing-wasm\n\nWebAssembly build of the [`bin-packing`](https://crates.io/crates/bin-packing)\nRust crate — a cut list and bin packing optimizer for 1D cutting stock (linear\nbar / pipe), 2D rectangular sheet packing, and 3D box packing.\n\nRuns in **browsers, Node.js 18+, Deno, Bun, and Cloudflare Workers**. No\nnative binaries, no build step, no `node-gyp`.\n\n## Features\n\n- **1D cutting stock.** First-fit-decreasing, best-fit-decreasing, multistart\n  local search, and an exact column-generation backend.\n- **2D rectangular packing.** MaxRects (best-area, BSSF, BLSF, bottom-left,\n  contact-point), Skyline (+ min-waste), Guillotine beam search (7 variants),\n  shelf heuristics (NFDH, FFDH, BFDH), multistart, and rotation search\n  meta-strategies.\n- **3D box packing.** Extreme Points (6 variants), Guillotine 3D beam search\n  (7 variants), layer/wall/column builders, Deepest-Bottom-Left, volume-sorted\n  FFD/BFD, MultiStart, GRASP, LocalSearch, and a restricted branch-and-bound\n  exact backend (29-algorithm catalog). Per-item rotation masks over all six\n  axis permutations.\n- **Multi-stock / multi-sheet / multi-bin** with independent costs and optional\n  inventory caps.\n- **Kerf and trim** modeling for 1D cuts; **kerf-aware gap enforcement** for 2D sheet packing.\n- **Per-item rotation** control for 2D demands and 3D rotation masks.\n- **`Auto` mode** runs multiple strategies and returns the best candidate.\n- **Reproducible** — all randomized strategies accept a `seed`.\n- **Fully typed** TypeScript definitions.\n\n## Installation\n\n```sh\npnpm add @0xdoublesharp/bin-packing-wasm\n# or\nnpm install @0xdoublesharp/bin-packing-wasm\n# or\nyarn add @0xdoublesharp/bin-packing-wasm\n```\n\n## Usage\n\nThe package ships combined targets plus smaller dimension-specific targets via\nthe `exports` map, so a single install works everywhere:\n\n| Import specifier | Target | Requires `init()`? |\n| ---- | ---- | ---- |\n| `@0xdoublesharp/bin-packing-wasm` | Combined 1D+2D+3D, bundlers (Vite, webpack, esbuild, Next.js, Rollup, Parcel) | No |\n| `@0xdoublesharp/bin-packing-wasm/web` | Combined 1D+2D+3D, browsers, Deno, native ES modules | Yes (`await init()`) |\n| `@0xdoublesharp/bin-packing-wasm/nodejs` | Combined 1D+2D+3D, Node.js, Bun | No |\n| `@0xdoublesharp/bin-packing-wasm/one-d` | 1D-only, bundlers | No |\n| `@0xdoublesharp/bin-packing-wasm/one-d/web` | 1D-only, browsers, Deno, native ES modules | Yes (`await init()`) |\n| `@0xdoublesharp/bin-packing-wasm/one-d/nodejs` | 1D-only, Node.js, Bun | No |\n| `@0xdoublesharp/bin-packing-wasm/two-d` | 2D-only, bundlers | No |\n| `@0xdoublesharp/bin-packing-wasm/two-d/web` | 2D-only, browsers, Deno, native ES modules | Yes (`await init()`) |\n| `@0xdoublesharp/bin-packing-wasm/two-d/nodejs` | 2D-only, Node.js, Bun | No |\n| `@0xdoublesharp/bin-packing-wasm/three-d` | 3D-only, bundlers | No |\n| `@0xdoublesharp/bin-packing-wasm/three-d/web` | 3D-only, browsers, Deno, native ES modules | Yes (`await init()`) |\n| `@0xdoublesharp/bin-packing-wasm/three-d/nodejs` | 3D-only, Node.js, Bun | No |\n\n### Bundler (Vite / webpack / esbuild / Next.js)\n\n```js\nimport { solve1d, solve2d, plan2dCuts } from '@0xdoublesharp/bin-packing-wasm';\n\nconst cutList = solve1d(\n  {\n    stock: [{ name: 'bar', length: 100, kerf: 1 }],\n    demands: [\n      { name: 'A', length: 45, quantity: 2 },\n      { name: 'B', length: 30, quantity: 2 },\n    ],\n  },\n  { algorithm: 'auto' },\n);\n\nconsole.log(cutList.stock_count, cutList.total_waste);\n\n// Generate a cut plan from a finished 2D layout\nconst layout = solve2d(\n  {\n    sheets: [{ name: 'plywood', width: 96, height: 48, kerf: 2 }],\n    demands: [\n      { name: 'panel', width: 24, height: 18, quantity: 4, can_rotate: true },\n    ],\n  },\n  { algorithm: 'auto' },\n);\n\nconst cutPlan = plan2dCuts(layout, { preset: 'table_saw' });\n\n// cutPlan.total_cost — aggregate cost across all sheets\n// cutPlan.sheet_plans — per-sheet plans; each carries:\n//   .steps        — ordered cut steps (cut, line_cut, rotate, fence_reset, …)\n//   .total_cost   — cost for this sheet\n//   .num_cuts, .num_rotations, .num_fence_resets, .num_tool_ups, .travel_distance\n```\n\nModern bundlers load the accompanying `.wasm` file automatically. Vite and\nwebpack 5+ need no configuration; older toolchains may need a wasm loader.\n\nFor browser payloads that only need one dimension, import the smaller\ndimension-specific entry point:\n\n```js\nimport { solve2d } from '@0xdoublesharp/bin-packing-wasm/two-d';\n```\n\nThe 1D-only WASM is currently ~200 KB, the 2D-only WASM is currently ~230 KB,\nthe 3D-only WASM is currently ~300 KB, and the combined 1D+2D+3D WASM is\ncurrently ~550 KB after `wasm-opt -Oz`. These are approximate; run the build\nlocally for current figures.\n\n### Browser (raw ES modules / Deno)\n\nThe `web` target needs an explicit `init()` call that loads the `.wasm` file\nfrom a URL:\n\n```html\n<script type=\"module\">\n  import init, { solve2d } from 'https://unpkg.com/@0xdoublesharp/bin-packing-wasm/dist/web/bin_packing_wasm.js';\n\n  await init();\n\n  const layout = solve2d(\n    {\n      sheets: [{ name: 'plywood', width: 96, height: 48, kerf: 2 }],\n      demands: [\n        { name: 'panel', width: 24, height: 18, quantity: 4, can_rotate: true },\n      ],\n    },\n    { algorithm: 'auto', seed: 42, min_usable_side: 12 },\n  );\n\n  console.log(layout.sheet_count, layout.total_waste_area);\n</script>\n```\n\nIn Deno:\n\n```ts\nimport init, { solve1d } from 'npm:@0xdoublesharp/bin-packing-wasm/web';\n\nawait init();\nconst solution = solve1d(/* ... */);\n```\n\n### Node.js / Bun\n\n```js\nimport { solve1d } from '@0xdoublesharp/bin-packing-wasm/nodejs';\n\nconst solution = solve1d(\n  {\n    stock: [{ name: 'bar', length: 100 }],\n    demands: [{ name: 'A', length: 45, quantity: 2 }],\n  },\n  { algorithm: 'auto' },\n);\n```\n\nThe Node target loads the `.wasm` file synchronously from disk — no async\nsetup required.\n\n### CommonJS\n\n```js\nconst { solve1d } = require('@0xdoublesharp/bin-packing-wasm/nodejs');\n```\n\n### Edge kerf relief\n\nSet `edge_kerf_relief: true` on a sheet when the final cut on each\naxis can run off the stock, consuming less than a full kerf of\nmaterial:\n\n```js\nsheets: [\n  {\n    name: 'plywood',\n    width: 48000,\n    height: 96000,\n    kerf: 125,\n    edge_kerf_relief: true,\n  },\n];\n```\n\nEach part must still fit within the sheet's own dimensions, but the\nlast placement on a row or column may extend by up to one kerf past\nthe sheet boundary — the model treats this as the blade exiting the\nmaterial.\n\n## API\n\n### `plan2dCuts(solution, options?)`\n\n```ts\nfunction plan2dCuts(solution: TwoDSolution, options?: CutPlanOptions2D): CutPlanSolution2D;\n```\n\nGenerates an ordered cut plan for every sheet in a finished `TwoDSolution`.\nPresets (`options.preset`): `table_saw`, `panel_saw`, `cnc_router`.\n\nThe returned plan carries per-sheet steps and a `total_cost`. Each entry in\n`sheet_plans` includes an ordered `steps` array and counters for cuts,\nrotations, fence resets, tool ups, and total travel distance.\n\nThrows when `table_saw` or `panel_saw` is used on a non-guillotine layout\n(`NonGuillotineNotCuttable`) or when a cost override is invalid\n(`InvalidOptions`). Use `cnc_router` as the universal fallback for any layout.\n\n### `plan1dCuts(solution, options?)`\n\n```ts\nfunction plan1dCuts(solution: OneDSolution, options?: CutPlanOptions1D): CutPlanSolution1D;\n```\n\nGenerates an ordered cut plan for every bar in a finished `OneDSolution`. The\nonly preset is `chop_saw`. Each `bar_plans` entry carries ordered `steps`\n(`cut` and `fence_reset`) and a `total_cost`.\n\n### `solve1d(problem, options?)`\n\n```ts\nfunction solve1d(problem: OneDProblem, options?: OneDOptions): OneDSolution;\n```\n\nSolve a 1D cutting-stock problem. Throws a JavaScript `Error` on validation\nfailures, infeasible demands, or unsupported solver configurations.\n\nAlgorithms (`options.algorithm`):\n- `auto` *(default)* — runs FFD, BFD, local search, and optionally escalates\n  to column generation\n- `first_fit_decreasing`\n- `best_fit_decreasing`\n- `local_search` — multistart; honors `seed`, `multistart_runs`, `improvement_rounds`\n- `column_generation` — exact backend; reports `exact: true` and a\n  `lower_bound` when optimal\n\n### `solve2d(problem, options?)`\n\n```ts\nfunction solve2d(problem: TwoDProblem, options?: TwoDOptions): TwoDSolution;\n```\n\nSolve a 2D rectangular bin-packing problem. Throws on validation failures or\ninfeasible demands.\n\nAlgorithms (`options.algorithm`):\n- `auto` *(default)* — runs the full ensemble\n- MaxRects: `max_rects`, `max_rects_best_short_side_fit`, `max_rects_best_long_side_fit`,\n  `max_rects_bottom_left`, `max_rects_contact_point`\n- Skyline: `skyline`, `skyline_min_waste`\n- Guillotine beam search: `guillotine`, `guillotine_best_short_side_fit`,\n  `guillotine_best_long_side_fit`, `guillotine_shorter_leftover_axis`,\n  `guillotine_longer_leftover_axis`, `guillotine_min_area_split`,\n  `guillotine_max_area_split`\n- Shelf heuristics: `next_fit_decreasing_height`, `first_fit_decreasing_height`,\n  `best_fit_decreasing_height`\n- Meta-strategies: `multi_start`, `rotation_search`\n\nSet `options.guillotine_required = true` to restrict `auto` to\nguillotine-compatible constructions.\n\n### `solve3d(problem, options?)`\n\n```ts\nfunction solve3d(problem: ThreeDProblem, options?: ThreeDOptions): ThreeDSolution;\n```\n\nSolve a 3D rectangular bin-packing problem. Throws a JavaScript `Error` on\nvalidation failures, infeasible demands, or unsupported solver configurations.\n\nAlgorithms (`options.algorithm`):\n- `auto` *(default)* — runs a tiered ensemble of algorithms and returns the\n  best result\n- Extreme Points: `extreme_points`, `extreme_points_residual_space`,\n  `extreme_points_free_volume`, `extreme_points_bottom_left_back`,\n  `extreme_points_contact_point`, `extreme_points_euclidean`\n- Guillotine 3D: `guillotine_3d`, `guillotine_3d_best_short_side_fit`,\n  `guillotine_3d_best_long_side_fit`, `guillotine_3d_shorter_leftover_axis`,\n  `guillotine_3d_longer_leftover_axis`, `guillotine_3d_min_volume_split`,\n  `guillotine_3d_max_volume_split`\n- Layer building: `layer_building`, `layer_building_max_rects`,\n  `layer_building_skyline`, `layer_building_guillotine`, `layer_building_shelf`\n- Geometry: `wall_building`, `column_building`, `deepest_bottom_left`,\n  `deepest_bottom_left_fill`, `first_fit_decreasing_volume`,\n  `best_fit_decreasing_volume`\n- Meta-strategies: `multi_start`, `grasp`, `local_search`, `branch_and_bound`\n\n### JSON-string fallbacks\n\n`solve1dJson(problemJson, optionsJson?)`, `solve2dJson(problemJson, optionsJson?)`,\nand `solve3dJson(problemJson, optionsJson?)` accept and return JSON strings\ndirectly. Useful when the caller already has a JSON payload in hand (HTTP\nrequest body, file read, worker message). These are exported by the combined\nentry points; the dimension-specific entry points keep only the plain-object\nAPI to reduce browser payload size.\n\n### `version()`\n\nReturns the package version string.\n\n## TypeScript types\n\nAll input and output types are fully typed. Import them from the package:\n\n```ts\nimport type {\n  OneDProblem,\n  OneDSolution,\n  OneDOptions,\n  TwoDProblem,\n  TwoDSolution,\n  TwoDOptions,\n  Placement2D,\n  ThreeDProblem,\n  ThreeDSolution,\n  ThreeDOptions,\n  Placement3D,\n} from '@0xdoublesharp/bin-packing-wasm';\n```\n\n## Performance notes\n\n- Browser WASM is ~1.5–3× slower than native for CPU-bound integer code.\n- The default `Auto` mode runs many strategies — for interactive UIs, pick a\n  specific fast algorithm like `first_fit_decreasing_height` or\n  `max_rects_best_short_side_fit`.\n- Consider running solves inside a Web Worker for large problems.\n- Reproducibility: pass `options.seed` to get deterministic output across\n  runs.\n\n## Building from source\n\n```sh\ngit clone https://github.com/doublesharp/bin-packing\ncd bin-packing/bindings/wasm\n\n# One-time prerequisites\nrustup target add wasm32-unknown-unknown\ncargo install wasm-pack\n\n# Build combined and dimension-specific bundler, web, and nodejs targets into dist/\npnpm run build\n\n# Run the Node smoke test\npnpm test\n```\n\n## License\n\nMIT.\n\n### Workpiece-aware saw jobs\n\n`plan2dSawCuts(job, options?)` is available in combined and `two-d` builds for every\ntarget. It accepts explicit stock/demand provenance and returns one authoritative\nphysical schedule. See [the API and migration guide](../../docs/two-d/saw-planner.md).\nAfter building, run `node ../../examples/saw-planner.mjs wasm` or use `two-d`.\n","readmeFilename":"README.md"}