{"_id":"@andreiltd/componentize-qjs-binding-darwin-x64","_rev":"11-d2abc7946864c1b5fa877320de36c81b","name":"@andreiltd/componentize-qjs-binding-darwin-x64","dist-tags":{"latest":"0.5.0"},"versions":{"0.2.0":{"name":"@andreiltd/componentize-qjs-binding-darwin-x64","version":"0.2.0","license":"Apache-2.0","_id":"@andreiltd/componentize-qjs-binding-darwin-x64@0.2.0","maintainers":[{"name":"andreiltd","email":"andreiltd@gmail.com"}],"homepage":"https://github.com/andreiltd/componentize-qjs","bugs":{"url":"https://github.com/andreiltd/componentize-qjs/issues"},"os":["darwin"],"cpu":["x64"],"dist":{"shasum":"c0a0b7dd6a57f5fcc33aa605a0fa45781a274cb9","tarball":"https://registry.npmjs.org/@andreiltd/componentize-qjs-binding-darwin-x64/-/componentize-qjs-binding-darwin-x64-0.2.0.tgz","fileCount":3,"integrity":"sha512-gEABwT0DSjyQ1Mk9vY3zhYb/9LquOC5R06ZGxNQcOF8JNvR+SU8Nb22ypBs0b13OH731UNegHl9mbh7GUOz5nw==","signatures":[{"sig":"MEUCIHnZ5v9fc3uHQN4xqyPRRzf7zSMenx0z8ob0AuQYK2lgAiEAna7TTYtz4IwfaswusrLOX+4Pyf4AwCmSIarSiP9MYQg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@andreiltd%2fcomponentize-qjs-binding-darwin-x64@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30689007},"main":"componentize-qjs.darwin-x64.node","engines":{"node":">=18.0.0"},"gitHead":"b5603e744fef03e8739dcf8a3a48b574611bda0b","_npmUser":{"name":"andreiltd","email":"andreiltd@gmail.com"},"repository":{"url":"git+https://github.com/andreiltd/componentize-qjs.git","type":"git","directory":"npm"},"_npmVersion":"11.11.0","description":"Convert JavaScript to WebAssembly components using QuickJS","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/componentize-qjs-binding-darwin-x64_0.2.0_1778014965032_0.24745981456140909","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@andreiltd/componentize-qjs-binding-darwin-x64","version":"0.2.1","license":"Apache-2.0","_id":"@andreiltd/componentize-qjs-binding-darwin-x64@0.2.1","maintainers":[{"name":"andreiltd","email":"andreiltd@gmail.com"}],"homepage":"https://github.com/andreiltd/componentize-qjs","bugs":{"url":"https://github.com/andreiltd/componentize-qjs/issues"},"os":["darwin"],"cpu":["x64"],"dist":{"shasum":"91498953068f978ac6f7608304b0ed68e7589376","tarball":"https://registry.npmjs.org/@andreiltd/componentize-qjs-binding-darwin-x64/-/componentize-qjs-binding-darwin-x64-0.2.1.tgz","fileCount":4,"integrity":"sha512-FETml+RjEcNE7rJmu5BvoB9+oPJD9vn77qr28SMXpB6bWJo2HS9kpoyWJf4VfHQcQ2mDPPr3ZL/6U5PUJMrVvg==","signatures":[{"sig":"MEUCIES2bMmfldnlN9DacEG6jo9c2mhjjCBDIUN1tTZGKPUjAiEAqMjnJisNA1ADSqoFT90h66wZi5JkOHATnGkeT3qK6Rk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@andreiltd%2fcomponentize-qjs-binding-darwin-x64@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30707031},"main":"componentize-qjs.darwin-x64.node","engines":{"node":">=18.0.0"},"gitHead":"4658e8eb77548ca6553f0a6034910c8dfa5f178e","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8cb1cd1-47c0-4f29-98b6-4ea56a8991b9"}},"repository":{"url":"git+https://github.com/andreiltd/componentize-qjs.git","type":"git","directory":"npm"},"_npmVersion":"11.14.1","description":"Convert JavaScript to WebAssembly components using QuickJS","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/componentize-qjs-binding-darwin-x64_0.2.1_1778663459054_0.9697980689000425","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@andreiltd/componentize-qjs-binding-darwin-x64","version":"0.2.2","license":"Apache-2.0","_id":"@andreiltd/componentize-qjs-binding-darwin-x64@0.2.2","maintainers":[{"name":"andreiltd","email":"andreiltd@gmail.com"}],"homepage":"https://github.com/andreiltd/componentize-qjs","bugs":{"url":"https://github.com/andreiltd/componentize-qjs/issues"},"os":["darwin"],"cpu":["x64"],"dist":{"shasum":"dd5cc41f9c5a3a1d19202ef982a48c9a7cf9ec7e","tarball":"https://registry.npmjs.org/@andreiltd/componentize-qjs-binding-darwin-x64/-/componentize-qjs-binding-darwin-x64-0.2.2.tgz","fileCount":4,"integrity":"sha512-31EtgaGRf4yT0c9xd0M9/+KYUCa5bnQMDVyrxlZAJQq1OBuf7VMC4s1HPszIweY4mzuGR4oo7u4zDrhuLHoaQQ==","signatures":[{"sig":"MEUCIDXU1X9PrMLJruPDUtHXKRQLhPwlTktG/kEB9AaZpeFUAiEAsTxLi7v0sjS26tqxyklUVF0NAqS4KpF3KCQBuj+hAAA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@andreiltd%2fcomponentize-qjs-binding-darwin-x64@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30951935},"main":"componentize-qjs.darwin-x64.node","engines":{"node":">=18.0.0"},"gitHead":"f8938aa5731655d3150253f525dc70f9ec4ada20","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8cb1cd1-47c0-4f29-98b6-4ea56a8991b9"}},"repository":{"url":"git+https://github.com/andreiltd/componentize-qjs.git","type":"git","directory":"npm"},"_npmVersion":"11.15.0","description":"Convert JavaScript to WebAssembly components using QuickJS","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/componentize-qjs-binding-darwin-x64_0.2.2_1779884315550_0.5550182515810098","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@andreiltd/componentize-qjs-binding-darwin-x64","version":"0.3.0","license":"Apache-2.0","_id":"@andreiltd/componentize-qjs-binding-darwin-x64@0.3.0","maintainers":[{"name":"andreiltd","email":"andreiltd@gmail.com"}],"homepage":"https://github.com/andreiltd/componentize-qjs","bugs":{"url":"https://github.com/andreiltd/componentize-qjs/issues"},"os":["darwin"],"cpu":["x64"],"dist":{"shasum":"d4b98eb75e314e607234dd8121d6ab11d20aed9a","tarball":"https://registry.npmjs.org/@andreiltd/componentize-qjs-binding-darwin-x64/-/componentize-qjs-binding-darwin-x64-0.3.0.tgz","fileCount":4,"integrity":"sha512-b/Y8nC1TxSb0hPkPLESc6h5MNmTZq2DmNP719H2drTGQI+ip7TddAwYNAo2srBIXO7Jb71c/jMiu8xKyyoa4eA==","signatures":[{"sig":"MEQCIBzAcxqMcQBmZDGhe/Fl/3vcIk2aKN6UUQBHEZwakrZhAiBymu3iW3JI19lYOdYjnKQZDDELF9fvzvW8UN8k0mPOsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@andreiltd%2fcomponentize-qjs-binding-darwin-x64@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":33839261},"main":"componentize-qjs.darwin-x64.node","engines":{"node":">=18.0.0"},"gitHead":"50ce7a30ffdddc63570a22d58f74ba7872edc74f","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8cb1cd1-47c0-4f29-98b6-4ea56a8991b9"}},"repository":{"url":"git+https://github.com/andreiltd/componentize-qjs.git","type":"git","directory":"npm"},"_npmVersion":"11.16.0","description":"Convert JavaScript to WebAssembly components using QuickJS","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/componentize-qjs-binding-darwin-x64_0.3.0_1781034533287_0.9160308460150426","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@andreiltd/componentize-qjs-binding-darwin-x64","version":"0.4.0","license":"Apache-2.0","_id":"@andreiltd/componentize-qjs-binding-darwin-x64@0.4.0","maintainers":[{"name":"andreiltd","email":"andreiltd@gmail.com"}],"homepage":"https://github.com/andreiltd/componentize-qjs","bugs":{"url":"https://github.com/andreiltd/componentize-qjs/issues"},"os":["darwin"],"cpu":["x64"],"dist":{"shasum":"55749aae6f17be60a9732750979e73a68bda42d1","tarball":"https://registry.npmjs.org/@andreiltd/componentize-qjs-binding-darwin-x64/-/componentize-qjs-binding-darwin-x64-0.4.0.tgz","fileCount":4,"integrity":"sha512-3VFeKx99kp13SlGUwHLhktE+ZCqLNA1pYu46G2UUcid3IvqOIkuDRt5xwqGQxkDyY1l1XHh6GN05JVf9lguxog==","signatures":[{"sig":"MEQCIHRd6qgDUaXOSxxdkpUqBejTZj4/97koz3UrSDcsvJKDAiB8Hkq2/G6ALssyrJOBE1g+w6YF1CBfJgRBPd1ZbDyiyQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@andreiltd%2fcomponentize-qjs-binding-darwin-x64@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":35391569},"main":"componentize-qjs.darwin-x64.node","engines":{"node":">=18.0.0"},"gitHead":"705fc442f73b86457f90e2077173cd89e71b2254","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8cb1cd1-47c0-4f29-98b6-4ea56a8991b9"}},"repository":{"url":"git+https://github.com/andreiltd/componentize-qjs.git","type":"git","directory":"npm"},"_npmVersion":"11.17.0","description":"Convert JavaScript to WebAssembly components using QuickJS","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/componentize-qjs-binding-darwin-x64_0.4.0_1781623535714_0.7147460342946896","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@andreiltd/componentize-qjs-binding-darwin-x64","version":"0.4.1","license":"Apache-2.0","_id":"@andreiltd/componentize-qjs-binding-darwin-x64@0.4.1","maintainers":[{"name":"andreiltd","email":"andreiltd@gmail.com"}],"homepage":"https://github.com/andreiltd/componentize-qjs","bugs":{"url":"https://github.com/andreiltd/componentize-qjs/issues"},"os":["darwin"],"cpu":["x64"],"dist":{"shasum":"7a9c0ba628e2b0a6c73bdb43f74f8d12ba9d2df3","tarball":"https://registry.npmjs.org/@andreiltd/componentize-qjs-binding-darwin-x64/-/componentize-qjs-binding-darwin-x64-0.4.1.tgz","fileCount":4,"integrity":"sha512-uBHUbw23t3U6PY4d5fQsuk7W2cLey812TCPIC81SNeNiBF/ZwHgZcpX5wWxuCzxkPQeOGDjKuwGDHOZQbp6alQ==","signatures":[{"sig":"MEQCIEG4zC97fRlnbSnPSbjRcCWcq/bi0VyByYv4YZLy34qPAiBk2UOyPbhKcvQUJPRg3nGEClfTmAYVs0Kc0nTgQAWRQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@andreiltd%2fcomponentize-qjs-binding-darwin-x64@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":34762641},"main":"componentize-qjs.darwin-x64.node","engines":{"node":">=18.0.0"},"gitHead":"6a444cd852272fa180f21675b359282cebaaba5c","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8cb1cd1-47c0-4f29-98b6-4ea56a8991b9"}},"repository":{"url":"git+https://github.com/andreiltd/componentize-qjs.git","type":"git","directory":"npm"},"_npmVersion":"11.17.0","description":"Convert JavaScript to WebAssembly components using QuickJS","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/componentize-qjs-binding-darwin-x64_0.4.1_1781795260971_0.7881851657102756","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@andreiltd/componentize-qjs-binding-darwin-x64","version":"0.4.2","license":"Apache-2.0","_id":"@andreiltd/componentize-qjs-binding-darwin-x64@0.4.2","maintainers":[{"name":"andreiltd","email":"andreiltd@gmail.com"}],"homepage":"https://github.com/andreiltd/componentize-qjs","bugs":{"url":"https://github.com/andreiltd/componentize-qjs/issues"},"os":["darwin"],"cpu":["x64"],"dist":{"shasum":"2c105cabb0ca849cc243d7823fb57579959316f0","tarball":"https://registry.npmjs.org/@andreiltd/componentize-qjs-binding-darwin-x64/-/componentize-qjs-binding-darwin-x64-0.4.2.tgz","fileCount":4,"integrity":"sha512-DNf9T3pQTTkYdr9r5vEsP8MyofzEIkGQnqCYjEWO0BbtaOQT9IprihlBQnF0zpwOmpcNVYO5ZMSAUJRxNlYhGA==","signatures":[{"sig":"MEUCIQDROwWr60iW5GC4nulglVQBG+9QYZAaJIEMvM86MdIZzwIgdG+Gq2EjGtsgKCmLAKs+Q8LQB4GsBVTqEvPPkVrtp5Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@andreiltd%2fcomponentize-qjs-binding-darwin-x64@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":36765737},"main":"componentize-qjs.darwin-x64.node","engines":{"node":">=18.0.0"},"gitHead":"cea7b3e173356d89779e576f545bd1d1c0f03ad1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8cb1cd1-47c0-4f29-98b6-4ea56a8991b9"}},"repository":{"url":"git+https://github.com/andreiltd/componentize-qjs.git","type":"git","directory":"npm"},"_npmVersion":"11.18.0","description":"Convert JavaScript to WebAssembly components using QuickJS","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/componentize-qjs-binding-darwin-x64_0.4.2_1783697218376_0.7674381030628303","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@andreiltd/componentize-qjs-binding-darwin-x64","version":"0.4.3","license":"Apache-2.0","_id":"@andreiltd/componentize-qjs-binding-darwin-x64@0.4.3","maintainers":[{"name":"andreiltd","email":"andreiltd@gmail.com"}],"homepage":"https://github.com/andreiltd/componentize-qjs","bugs":{"url":"https://github.com/andreiltd/componentize-qjs/issues"},"os":["darwin"],"cpu":["x64"],"dist":{"shasum":"9f781516538cfecd48f3587ca87698ae3962f4df","tarball":"https://registry.npmjs.org/@andreiltd/componentize-qjs-binding-darwin-x64/-/componentize-qjs-binding-darwin-x64-0.4.3.tgz","fileCount":4,"integrity":"sha512-fP4Ekzn7pR8KqRIoH41zbOTl1i3nEYCog8r/gy2nDzg86EYl51kdrCP+jN4B9tPmYOH8erae7i88Mb50EshyLA==","signatures":[{"sig":"MEUCIQCpG8o5Rj8B1C7X2Tbc1HJzyn6o196bXBNmQ9H5+cKKoAIgXsLBBDrq+hZxaN6Bv/uK6eHfsxnrzblaSsWs7w1iq08=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@andreiltd%2fcomponentize-qjs-binding-darwin-x64@0.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":37105045},"main":"componentize-qjs.darwin-x64.node","engines":{"node":">=18.0.0"},"gitHead":"2b398ffcd6f91cb3f46df7f036090159a4583d71","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8cb1cd1-47c0-4f29-98b6-4ea56a8991b9"}},"repository":{"url":"git+https://github.com/andreiltd/componentize-qjs.git","type":"git","directory":"npm"},"_npmVersion":"11.18.0","description":"Convert JavaScript to WebAssembly components using QuickJS","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/componentize-qjs-binding-darwin-x64_0.4.3_1784997416351_0.7688627589990495","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@andreiltd/componentize-qjs-binding-darwin-x64","version":"0.4.4","license":"Apache-2.0","_id":"@andreiltd/componentize-qjs-binding-darwin-x64@0.4.4","maintainers":[{"name":"andreiltd","email":"andreiltd@gmail.com"}],"homepage":"https://github.com/andreiltd/componentize-qjs","bugs":{"url":"https://github.com/andreiltd/componentize-qjs/issues"},"os":["darwin"],"cpu":["x64"],"dist":{"shasum":"3bc876d64bbaf391a8e01ca76d3b0865e3fdeca3","tarball":"https://registry.npmjs.org/@andreiltd/componentize-qjs-binding-darwin-x64/-/componentize-qjs-binding-darwin-x64-0.4.4.tgz","fileCount":4,"integrity":"sha512-UdR1KuthnncPq2A9b9i1HgIOxaR5irE+zfeAGAzDEbo5tZ5Lo0U2lOEBuVvBQgxTOCFeeG2nztfnhn81Q15avg==","signatures":[{"sig":"MEYCIQC4bZzXaXXh9ytu6bxsPSly51rPxtP3occkbXgcaXExcwIhAPexpZ3Ax+MLlcHIRD1vhDR+6uFo6ZgSsH/LnzO4Clgb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@andreiltd%2fcomponentize-qjs-binding-darwin-x64@0.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":36336725},"main":"componentize-qjs.darwin-x64.node","engines":{"node":">=18.0.0"},"gitHead":"b94852190f55072655df735147b66c9a5e0f30f9","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8cb1cd1-47c0-4f29-98b6-4ea56a8991b9"}},"repository":{"url":"git+https://github.com/andreiltd/componentize-qjs.git","type":"git","directory":"npm"},"_npmVersion":"11.19.1","description":"Convert JavaScript to WebAssembly components using QuickJS","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/componentize-qjs-binding-darwin-x64_0.4.4_1788362882192_0.07520509112723994","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@andreiltd/componentize-qjs-binding-darwin-x64","version":"0.4.5","license":"Apache-2.0","_id":"@andreiltd/componentize-qjs-binding-darwin-x64@0.4.5","maintainers":[{"name":"andreiltd","email":"andreiltd@gmail.com"}],"homepage":"https://github.com/andreiltd/componentize-qjs","bugs":{"url":"https://github.com/andreiltd/componentize-qjs/issues"},"os":["darwin"],"cpu":["x64"],"dist":{"shasum":"49b8901b5fbb4f79fca6f6d8a306af4bc82d88bc","tarball":"https://registry.npmjs.org/@andreiltd/componentize-qjs-binding-darwin-x64/-/componentize-qjs-binding-darwin-x64-0.4.5.tgz","fileCount":4,"integrity":"sha512-37uz97pCEuXNfoVuZMBbI6xUirSndxJyMzPa4UCQb9nJdZhzRujmrU79yiFl+5nDYQxcCjthhBVEKU3OxJNAdg==","signatures":[{"sig":"MEUCICT+ANu/nDXHPcnDmI+gnGB8g8GiebgNuXykQbhF0j/TAiEA1VW4xBcU3GKDmL5dILuzXMkO5ykMy5nSDVRb4kn7gT0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD0a9ZpC1frTvLkyW+Hjo100yt2p8K3IaupwX+QD8gyQgIgMJbGZLH79sTuigQ3xTFt69ihlw0In2EdnDGrjHCf9rY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@andreiltd%2fcomponentize-qjs-binding-darwin-x64@0.4.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":36565021},"main":"componentize-qjs.darwin-x64.node","engines":{"node":">=18.0.0"},"gitHead":"e563c6d6ae50b087980414015663ca9c948c09bb","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8cb1cd1-47c0-4f29-98b6-4ea56a8991b9"}},"repository":{"url":"git+https://github.com/andreiltd/componentize-qjs.git","type":"git","directory":"npm"},"_npmVersion":"11.19.1","description":"Convert JavaScript to WebAssembly components using QuickJS","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/componentize-qjs-binding-darwin-x64_0.4.5_1789557201445_0.3951537191743384","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"os":["darwin"],"_id":"@andreiltd/componentize-qjs-binding-darwin-x64@0.5.0","cpu":["x64"],"bugs":{"url":"https://github.com/andreiltd/componentize-qjs/issues"},"dist":{"shasum":"11b1e4c46f2b41adf83028a54f5a5e1331bcb827","tarball":"https://registry.npmjs.org/@andreiltd/componentize-qjs-binding-darwin-x64/-/componentize-qjs-binding-darwin-x64-0.5.0.tgz","fileCount":4,"integrity":"sha512-kvF5qv8WXsH0z3N7FkI8BiaPA52+/e6Mz6mDSMgOm0JDO7mNtvcuRZkENrTol38R+4R7fr2TOq06GOq1gLhIQA==","signatures":[{"sig":"MEQCIDGIR42rkPjK/BL10UQuCoRoA5ysnIVG5p9AARW0j6+wAiBpeuuAU3XNEacrhxKzjACjF7tjx82dVUuLr5od4n3+Zw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDvSjNn//Vp/ab7eM4/HC5eVYpDjbN8FOZN9nkBAMId6wIgD7JnywumMhdOS7k/6+AHLTNe+g45bjQnmtBMLk5/s/s="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@andreiltd%2fcomponentize-qjs-binding-darwin-x64@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":37122296},"main":"componentize-qjs.darwin-x64.node","name":"@andreiltd/componentize-qjs-binding-darwin-x64","engines":{"node":">=18.0.0"},"gitHead":"66b3fafcfd7588e155edc0bec4839e5de7298072","license":"Apache-2.0","version":"0.5.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f8cb1cd1-47c0-4f29-98b6-4ea56a8991b9"}},"homepage":"https://github.com/andreiltd/componentize-qjs","repository":{"url":"git+https://github.com/andreiltd/componentize-qjs.git","type":"git","directory":"npm"},"_npmVersion":"11.21.1","description":"Convert JavaScript to WebAssembly components using QuickJS","directories":{},"maintainers":[{"name":"andreiltd","email":"andreiltd@gmail.com"}],"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/componentize-qjs-binding-darwin-x64_0.5.0_1792685719447_0.9724220463217532"}}},"time":{"created":"2026-05-05T21:02:44.917Z","modified":"2026-10-22T16:15:20.359Z","0.2.0":"2026-05-05T21:02:45.514Z","0.2.1":"2026-05-13T09:10:59.691Z","0.2.2":"2026-05-27T12:18:35.926Z","0.3.0":"2026-06-09T19:48:53.664Z","0.4.0":"2026-06-16T15:25:36.062Z","0.4.1":"2026-06-18T15:07:41.283Z","0.4.2":"2026-07-10T15:26:58.754Z","0.4.3":"2026-07-25T16:36:56.667Z","0.4.4":"2026-09-02T15:28:02.531Z","0.4.5":"2026-09-16T11:13:21.739Z","0.5.0":"2026-10-22T16:15:19.982Z"},"bugs":{"url":"https://github.com/andreiltd/componentize-qjs/issues"},"license":"Apache-2.0","homepage":"https://github.com/andreiltd/componentize-qjs","repository":{"url":"git+https://github.com/andreiltd/componentize-qjs.git","type":"git","directory":"npm"},"description":"Convert JavaScript to WebAssembly components using QuickJS","maintainers":[{"name":"andreiltd","email":"andreiltd@gmail.com"}],"readme":"# componentize-qjs\n\n[![CI](https://github.com/andreiltd/componentize-qjs/actions/workflows/ci.yml/badge.svg)](https://github.com/andreiltd/componentize-qjs/actions/workflows/ci.yml)\n[![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\nConvert JavaScript source code into\n[WebAssembly components](https://component-model.bytecodealliance.org/) using\n[QuickJS](https://github.com/quickjs-ng/quickjs).\n\n## Overview\n\n`componentize-qjs` takes a JavaScript source file and a\n[WIT](https://component-model.bytecodealliance.org/design/wit.html) definition,\nand produces a standalone WebAssembly component that can run on any\ncomponent-model runtime (e.g. [Wasmtime](https://wasmtime.dev/)).\n\nUnder the hood it:\n\n1. Embeds the [QuickJS](https://github.com/quickjs-ng/quickjs) engine (via\n   [rquickjs](https://github.com/DelSkayn/rquickjs)) as the JavaScript\n   runtime.\n2. Uses [wit-dylib](https://crates.io/crates/wit-dylib) to generate WIT\n   bindings that bridge the component model and the JS engine.\n3. Snapshots the initialized JS state with\n   [Wizer](https://github.com/bytecodealliance/wizer) so startup cost is paid at\n   build time, not at runtime.\n4. Prunes explicitly marked one-time setup code with Walrus and strips\n   debug/build metadata from the snapshotted component.\n\n## Prerequisites\n\nRust **1.97** or later is required by Wasmtime (the `wasm32-wasip2` target also\nneeds a recent toolchain for PIC support in wasi-libc).\n\n## Installation\n\n### Rust CLI (crates.io)\n\n```bash\ncargo install componentize-qjs-cli --locked\n```\n\nThis installs the `componentize-qjs` command.\n\n### Rust CLI (from source)\n\n```bash\ncargo install --path . --locked\n```\n\n### Prebuilt CLI binaries\n\nPrebuilt CLI archives are attached to each\n[GitHub release](https://github.com/andreiltd/componentize-qjs/releases) for\nLinux, macOS, and Windows.\n\n### npm package\n\n```bash\nnpm install componentize-qjs\n```\n\nThis pulls in the right prebuilt native binding for your platform via the\n`@andreiltd/componentize-qjs-binding-*` optional dependencies.\n\nIf you want to build from source run:\n\n```bash\ncd npm && npm install && npm run build\n```\n\n## Quick Start\n\n**1. Define a WIT interface** (`hello.wit`):\n\n```wit\npackage test:hello;\n\nworld hello {\n    export greet: func(name: string) -> string;\n}\n```\n\n**2. Implement it in JavaScript** (`hello.js`):\n\nJavaScript sources are ES modules. Export WIT functions and interfaces directly\nfrom the module.\n\n```js\nexport function greet(name) {\n    return `Hello, ${name}!`;\n}\n```\n\n**3. Build the component:**\n\n```bash\ncomponentize-qjs --wit hello.wit --js hello.js -o hello.wasm\n```\n\n**4. Run it:**\n\n```bash\nwasmtime run --wasm component-model-async=y --invoke 'greet(\"World\")' hello.wasm\n# \"Hello, World!\"\n```\n\nThe built-in runtime published with componentize-qjs includes component-model\nasync support. Pass `--sync` to embed the built-in non-async runtime instead,\nproducing components that run on hosts without component-model async support. A\ncustom runtime can also be supplied with `--runtime`.\n\n## CLI Reference\n\n```\ncomponentize-qjs [OPTIONS] --wit <WIT> --js <JS>\n```\n\n| Flag | Short | Description |\n|---|---|---|\n| `--wit <PATH>` | `-w` | Path to the WIT file or directory |\n| `--js <PATH>` | `-j` | Path to the JavaScript source file |\n| `--output <PATH>` | `-o` | Output path (default: `output.wasm`) |\n| `--module-root <PATH>` | | Root directory exposed read-only during Wizer for resolving JavaScript imports |\n| `--world <NAME>` | `-n` | World name when the WIT defines multiple worlds |\n| `--stub-wasi` | | Replace all WASI imports with trap stubs |\n| `--minify` | `-m` | Minify JS source before embedding |\n| `--opt-size` | | Use the built-in QuickJS runtime optimized for size |\n| `--sync` | | Use the built-in non-async runtime (combine with `--opt-size` for the non-async opt-size runtime) |\n| `--runtime <PATH>` | | Custom QuickJS runtime Wasm module to embed |\n\n### Cargo features\n\n| Feature | Effect |\n|---|---|\n| `component-model-async` | (default) Embed the component-model async runtime as the default built-in. The non-async runtime is always embedded and selectable via `--sync`. Disable to build a smaller binary with only the non-async runtime |\n| `opt-size` | Selects the bundled opt-size runtime when no runtime option is provided by the CLI or npm API |\n\nBuild with features:\n\n```bash\ncargo build --release --features opt-size\n```\n\n## Using Imports\n\nWIT imports are available as ES module imports using their fully-qualified WIT\ninterface name:\n\n```wit\n// imports.wit\npackage local:test;\n\ninterface math {\n    add: func(a: s32, b: s32) -> s32;\n    multiply: func(a: s32, b: s32) -> s32;\n}\n\nworld imports {\n    import math;\n    export double-add: func(a: s32, b: s32) -> s32;\n}\n```\n\n```js\n// imports.js\nimport math from \"local:test/math\";\n\nexport function doubleAdd(a, b) {\n    const sum = math.add(a, b);\n    return math.multiply(sum, 2);\n}\n```\n\nJavaScript modules imported by the entry file are resolved during Wizer\ninitialization. Relative imports are resolved from the entry file path passed to\n`--js`; bare package imports are resolved under the read-only module root. By\ndefault the CLI uses the current directory when the entry file is under it, or\nthe entry file's parent directory otherwise. Use `--module-root <PATH>` to expose\na project root that contains shared files or `node_modules`.\n\n## WIT Type Mappings\n\n### Primitive Types\n\n| WIT Type | JS Type | Notes |\n|----------|---------|-------|\n| `bool` | `boolean` | |\n| `u8`, `u16`, `u32` | `number` | |\n| `s8`, `s16`, `s32` | `number` | |\n| `u64`, `s64` | `BigInt` | |\n| `f32`, `f64` | `number` | |\n| `char` | `string` | Must be exactly one Unicode scalar value |\n| `string` | `string` | |\n\n### Compound Types\n\n| WIT Type | JS Type | Example |\n|----------|---------|---------|\n| `list<T>` | `Array` | `[1, 2, 3]` |\n| `list<u8>` | `Uint8Array` or `Array` | `new Uint8Array([1, 2, 3])` |\n| `map<K, V>` | `Map` | `new Map([[\"key\", value]])` |\n| `tuple<T, U, ...>` | `Array` | `[42, \"hello\"]` |\n| `option<T>` | `T \\| null` (nested: `{ tag: \"some\"\\|\"none\", val }`) | `null` for none; `option<option<T>>` is wrapped |\n| `result<T, E>` | top-level function result: return `T` or throw `E`; nested result: `{ tag: \"ok\"\\|\"err\", val?: T\\|E }` | `return 42` / `throw \"error\"` |\n| `record { ... }` | `object` (camelCase keys) | `{ myField: 1 }` |\n| `variant` | `{ tag: string, val?: T }` | `{ tag: \"circle\", val: 2.5 }` |\n| `enum` | `string` (case name) | `\"red\"` |\n| `flags` | `object` (camelCase booleans) | `{ read: true, write: false }` |\n| `own<R>`, `borrow<R>` | resource object (methods on its prototype) | `input.blockingRead(n)` |\n\n### Imported Resources\n\nImported resources are exposed as JavaScript classes. Resource methods are\ncalled on the handle:\n\n```js\nimport stdin from \"wasi:cli/stdin@0.2.12\";\nimport stdout from \"wasi:cli/stdout@0.2.12\";\n\nconst input = stdin.getStdin();     // an InputStream\nconst output = stdout.getStdout();  // an OutputStream\n\n// Methods whose WIT return type is result<...> return the ok payload or throw.\nconst chunk = input.blockingRead(4096);   // method on the resource (len is a number)\noutput.blockingWriteAndFlush(chunk);\n```\n\n`[static]` methods are exposed on the resource class and `[constructor]` makes\nthe class callable with `new`.\n\nOwned imported resources support `[Symbol.dispose]()` for deterministic\ncleanup. Passing one to a WIT `own<T>` parameter transfers ownership and\ninvalidates the original wrapper. Borrowed wrappers expire when their component\ncall completes and cannot be transferred or disposed as owners. Resources lent\nto an in-flight import remain alive and cannot be disposed or transferred until\nthat import completes. Ownership is restored for unconsumed stream/future writes\nand for imported calls cancelled before they start. Await imports using an\nincoming borrowed resource before returning from its export.\n\n### Cancelling Async Imports\n\nA pending async import exposes a `cancel()` method on its Promise. Calling it\nrequests cancellation of that import. If cancellation succeeds, the original\nPromise rejects with `async import cancelled`; a call that finishes first may\nstill resolve normally. The enclosing export remains active, so its catch/finally\nblocks can await further host operations.\nAwait the original Promise before releasing resources it borrowed.\nCall `cancel()` from the same async export invocation that started the import;\nit has no effect from another export invocation.\n\nCalls that complete immediately may have no `cancel` method; use optional\nchaining when completion timing is unknown. Repeated cancellation is harmless,\nand a saved cancellation function cannot affect a later call that reuses the\nsame runtime handle.\n\n```js\nconst pending = service.compute(input);\nconst abort = () => pending.cancel?.();\nsignal.addEventListener(\"abort\", abort);\ntry {\n    return await pending;\n} finally {\n    signal.removeEventListener(\"abort\", abort);\n    await service.release();\n}\n```\n\n### Async Exports\n\nAsync exports are declared with the `async` keyword in WIT and implemented\nas JavaScript `async` functions:\n\n```wit\npackage example:greeting;\n\nworld greeter {\n    export greet: async func(name: string) -> string;\n}\n```\n\n```js\nexport async function greet(name) {\n    // You can use await here\n    await Promise.resolve();\n    return `Hello, ${name}!`;\n}\n```\n\nExported resource methods and static methods may also be async. Implement them\nas `async` members on the exported JavaScript class; resource constructors\nremain synchronous:\n\n```wit\npackage example:counter;\n\ninterface counter-api {\n    resource counter {\n        constructor(initial: u32);\n        add: async func(value: u32) -> u32;\n        create: static async func(initial: u32) -> counter;\n    }\n}\n\nworld counter {\n    export counter-api;\n}\n```\n\n```js\nclass Counter {\n    constructor(initial) { this.value = initial; }\n    async add(value) { this.value += value; return this.value; }\n    static async create(initial) { return new this(initial); }\n}\n\nexport const counterApi = { Counter };\n```\n\n### Streams\n\nStreams transfer a sequence of values between components. Lifted WIT streams\nimplement the JavaScript async-iterable protocol, and async or synchronous\niterables are lowered to WIT streams automatically. The stream type is inferred\nfrom the function parameter or result:\n\n```wit\npackage example:streaming;\n\nworld streaming {\n    export uppercase: async func(input: stream<string>) -> stream<string>;\n}\n```\n\n```js\nexport async function uppercase(input) {\n    return (async function* () {\n        for await (const value of input) {\n            yield value.toUpperCase();\n        }\n    })();\n}\n```\n\nAsync iteration yields one element at a time, except for `stream<u8>`, which\nyields bounded `Uint8Array` chunks to avoid one promise per byte.\n\nUse the `wit.Stream` factory when direct access to both endpoints is needed. If\nonly one stream type exists in the WIT world, the type may be omitted:\n\n```js\nconst { readable, writable } = wit.Stream(wit.Stream.U8);\nawait writable.writeAll(new Uint8Array([1, 2, 3]));\nwritable.drop();\n```\n\n`wit.Stream.from` adapts an iterable explicitly and exposes a completion\npromise:\n\n```js\nconst source = (async function* () {\n    yield \"one\";\n    yield \"two\";\n})();\nconst { readable, completion } = wit.Stream.from(source, wit.Stream.STRING);\n```\n\nAvailable type constants (populated from WIT metadata):\n\n| WIT type | Constant |\n|----------|----------|\n| `stream<u8>` / `future<u8>` | `wit.Stream.U8` / `wit.Future.U8` |\n| `stream<u32>` / `future<u32>` | `wit.Stream.U32` / `wit.Future.U32` |\n| `stream<string>` / `future<string>` | `wit.Stream.STRING` / `wit.Future.STRING` |\n| `stream<f64>` / `future<f64>` | `wit.Stream.F64` / `wit.Future.F64` |\n\nAll constructors return `{ readable, writable }`.\n\n**Complex element types** are also supported. The type constant is generated\nrecursively from the WIT type structure:\n\n```js\n// stream<result<string, u32>>\nwit.Stream(wit.Stream.RESULT_STRING_U32);\n\n// stream<option<u32>>\nwit.Stream(wit.Stream.OPTION_U32);\n\n// stream<tuple<u32, string>>\nwit.Stream(wit.Stream.TUPLE_U32_STRING);\n\n// Named record types use their WIT name:\n// record point { x: f64, y: f64 }\n// stream<point>\nwit.Stream(wit.Stream.POINT);\n```\n\nExplicit WIT stream aliases are also exposed as constants:\n\n```wit\ntype prompt-stream = stream<message-chunk>;\n```\n\n```js\nwit.Stream(wit.Stream.PROMPT_STREAM);\n```\n\nUse `wit.Stream.types` or `wit.Future.types` to discover all available type\nconstants at runtime.\n\n**StreamReadable methods:**\n\n| Method | Returns | Description |\n|--------|---------|-------------|\n| `read(count?)` | `Promise<T[]>` (or `Uint8Array` for `u8`) | Read up to `count` values |\n| `next()` | `Promise<IteratorResult<T>>` | Read the next value (`Uint8Array` chunk for `u8`) |\n| `return()` | `Promise<IteratorResult<T>>` | End iteration and release the readable handle |\n| `cancelRead()` | result or `undefined` | Cancel an in-progress read |\n| `drop()` | `void` | Release the stream handle |\n| `[Symbol.asyncIterator]()` | `StreamReadable` | Consume the stream with `for await...of` |\n\n**StreamWritable methods:**\n\n| Method | Returns | Description |\n|--------|---------|-------------|\n| `write(data)` | `Promise<number>` | Write values, returns count written |\n| `writeOne(value)` | `Promise<number>` | Write exactly one value, including array-shaped WIT values |\n| `writeAll(data)` | `Promise<number>` | Write all values, retrying as needed |\n| `writeIterableItem(value)` | `Promise<boolean>` | Write one iterable yield, batching matching numeric typed arrays |\n| `cancelWrite()` | result or `undefined` | Cancel an in-progress write |\n| `drop()` | `void` | Release the stream handle |\n\n### Futures\n\nFutures transfer a single value. They work like streams but carry exactly one\nvalue:\n\n```wit\npackage example:async-value;\n\nworld async-value {\n    export compute: async func() -> future<string>;\n}\n```\n\n```js\nexport async function compute() {\n    const { readable, writable } = wit.Future();\n\n    // Write the value (fire-and-forget; completes when reader reads)\n    writable.write(\"computed result\");\n\n    return readable;\n}\n```\n\n**Future type constants** follow the same pattern: `wit.Future.U32`,\n`wit.Future.STRING`, etc.\n\nFuture handles are deliberately not thenable: use `await readable.read()` to\nobtain the payload. This keeps `return readable` in an async export from\nimplicitly consuming the future, and preserves nested future handles.\nRepeated `read()` calls share the same Promise; a cancelled read rejects that\nPromise and allows a subsequent read to retry.\n\n`wit.Future.from(value, type)` adapts a value or Promise and returns\n`{ readable, completion }`. Return its `readable` from an async export rather\nthan returning the payload Promise directly, which JavaScript would await.\n\n**FutureReadable methods:**\n\n| Method | Returns | Description |\n|--------|---------|-------------|\n| `read()` | `Promise<T>` | Read the single value |\n| `cancelRead()` | result or `undefined` | Cancel an in-progress read |\n| `drop()` | `void` | Release the future handle |\n\n**FutureWritable methods:**\n\n| Method | Returns | Description |\n|--------|---------|-------------|\n| `write(value)` | `Promise<boolean>` | Write the value, returns success |\n| `cancelWrite()` | result or `undefined` | Cancel an in-progress write |\n| `drop()` | `void` | Release the future handle |\n\n### Resource Cleanup\n\nOwned imported resources, stream endpoints, and future endpoints support\n[Explicit Resource Management](https://github.com/tc39/proposal-explicit-resource-management)\nvia `Symbol.dispose`. In environments that support `using`:\n\n```js\n{\n    const stream = wit.Stream();\n    using writable = stream.writable;\n    using readable = stream.readable;\n    // Each endpoint is disposed when leaving scope.\n}\n```\n\nThe factory's `{ readable, writable }` pair is not itself disposable.\nComplete an endpoint's pending operation (or cancel it and await its\nsettlement) before leaving its `using` scope or calling `.drop()`.\nHost-requested task cancellation retains pending ABI buffers until the host\nacknowledges each operation's completion or cancellation.\n\nOtherwise, call `.drop()` explicitly to release handles.\n\n## Snapshot Initialization\n\nSnapshot creation uses a 1 GiB host-call copy budget to accommodate large module\ngraphs. This allowance belongs to the build-time initializer; execution hosts\ncontinue to choose their own budgets for instantiated components.\n\n## Node.js API\n\nThe npm package exposes both a CLI and a programmatic API.\n\n### CLI\n\n```bash\nnpx componentize-qjs --wit hello.wit --js hello.js -o hello.wasm\n```\n\n(Or, if you installed the package globally, just `componentize-qjs ...`.)\n\n### Usage\n\n```js\nimport { componentize } from \"componentize-qjs\";\n\nconst { component } = await componentize({\n    witPath: \"hello.wit\",\n    jsSource: \"export function greet(name) { return `Hello, ${name}!`; }\",\n    optSize: true,\n});\n// component is a Buffer containing the WebAssembly component bytes\n```\n\nRuntime selection is available through `optSize`, `sync`, `runtime`, or\n`runtimeBytes`. `optSize` and `sync` may be combined to select the non-async\nopt-size runtime, but neither can be combined with a custom `runtime`/`runtimeBytes`.\nThe `runtime` option is a path to a custom QuickJS runtime Wasm module.\n\n## Acknowledgments\n\nThis project builds on ideas and code from:\n\n- [ComponentizeJS](https://github.com/dicej/componentize-js) by Joel Dice\n- [lua-component-demo](https://github.com/alexcrichton/lua-component-demo) by Alex Crichton\n\n## License\n\nLicensed under [Apache-2.0](LICENSE).\n","readmeFilename":"README.md"}