{"_id":"@lazily-hub/lazily-js","_rev":"34-714f3a36918729abe1a35c4e965bf5b6","name":"@lazily-hub/lazily-js","dist-tags":{"prev":"0.4.0","latest":"0.34.0"},"versions":{"0.4.0":{"name":"@lazily-hub/lazily-js","version":"0.4.0","_id":"@lazily-hub/lazily-js@0.4.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"dist":{"shasum":"0c380de2da2905aec09f05899e19463da05322b6","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.4.0.tgz","fileCount":23,"integrity":"sha512-1jgi0XRrjl+Sh0cgFHmZpqlEtp8AdTT7SYU+Yr/o7Ypu+JWqSMFMB6vqz0+YTEecfVZxsvb8XhYVKitwKJGV3Q==","signatures":[{"sig":"MEUCIHPRAxUeTja7b5mv+7PxJrnDavRQf/jAog+NB+zULlXfAiEA5s0I2ZlIZ+tDnlkG7G4J1YBNeEZJTDJnDT23/bCfBTU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172954},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"}},"scripts":{"test":"npm run test:formal && node --test test/*.test.js","build":"node --check src/index.js && node --check src/reactive.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/state-projection.js","test:formal":"node scripts/formal-check.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"_npmVersion":"11.16.0","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), the lazily-spec IPC wire types, keyed cell collections + LIS reconciliation, the memoized semantic tree, the move-aware sequence CRDT, the Fugue/RGA text ","directories":{},"_nodeVersion":"26.1.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.4.0_1783109511965_0.48237926066379133","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@lazily-hub/lazily-js","version":"0.5.0","_id":"@lazily-hub/lazily-js@0.5.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"dist":{"shasum":"3e5283c92336afc800e56b1d3cd100ee1bb81aa7","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.5.0.tgz","fileCount":29,"integrity":"sha512-EEDAymutz0HIugVp8jm4aqCAKGbUKZS4+fkfQJPGxc0t1pnlPYUyJ+D0CrPR5x7XZKIco7iA9EFofcA/vDsVkA==","signatures":[{"sig":"MEYCIQCeLAEiM+p/PgX1UcwkOBP+Ta4kyZhNnKdK0PMrWPZCJgIhAP49RpytdZ7h8InSmTegdR7Pwr8DHXx/2G4yXdguQVqj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":253721},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"}},"scripts":{"test":"npm run test:formal && node --test test/*.test.js","build":"node --check src/index.js && node --check src/reactive.js && node --check src/reactive-async.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/state-projection.js && node --check src/signaling.js && node --check src/distributed.js","test:formal":"node scripts/formal-check.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"_npmVersion":"11.16.0","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), the lazily-spec IPC wire types, keyed cell collections + LIS reconciliation, the memoized semantic tree, the move-aware sequence CRDT, the Fugue/RGA text ","directories":{},"_nodeVersion":"26.1.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.5.0_1783112735520_0.40371597078346855","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@lazily-hub/lazily-js","version":"0.6.1","_id":"@lazily-hub/lazily-js@0.6.1","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"dist":{"shasum":"c1ed482a895f2780c0cfa7f4b8217d8bdf95b194","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.6.1.tgz","fileCount":35,"integrity":"sha512-fPRpT4DdMKkuLUyE/EtcE9RqpVXYXpV3VFqRoun/QOhkE8inH2W24vzTNKPcsFf8MPeBrwkAU8u/F1LETHon/g==","signatures":[{"sig":"MEQCIEmmUcwjPMWP6wRPXrianismHdiRQop2UAnOxv5qw3KvAiByp5QnHw6BzdZyup7eUfSeRpvxvKDHrlN1Z029V0jjHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":333357},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"}},"scripts":{"test":"npm run test:formal && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/reactive.js && node --check src/reactive-async.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/signaling.js && node --check src/distributed.js","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"_npmVersion":"11.18.0","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), the lazily-spec IPC wire types, keyed cell collections + LIS reconciliation, the memoized semantic tree, the move-aware sequence CRDT, the Fugue/RGA text ","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.6.1_1783556874654_0.5100159133997919","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@lazily-hub/lazily-js","version":"0.7.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.7.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"fbd477ddf0cd9a5f55a5f6810b59fc97e1d953cc","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.7.0.tgz","fileCount":37,"integrity":"sha512-OOhobY8KMRhmDRLjVip8JnMXl1eCT5kVRUUDiDtMeHwAr2K3HWtKkrW3RPRRJgPot0G8TOyQh6nS527ERhU4xA==","signatures":[{"sig":"MEUCIGOoFvsdnHQs63OBGnVm5a7M3Mg+vQsou81o5awsk/UzAiEArrZ0rT9khuaiHAFYosb63L/1e1uqLk65rYPjmzy3tMA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":349455},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"}},"scripts":{"test":"npm run test:formal && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/reactive.js && node --check src/reactive-async.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/signaling.js && node --check src/distributed.js","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"11.18.0","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), the lazily-spec IPC wire types, keyed cell collections + LIS reconciliation, the memoized semantic tree, the move-aware sequence CRDT, the Fugue/RGA text ","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.7.0_1783564224733_0.7925705599019264","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@lazily-hub/lazily-js","version":"0.9.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.9.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"df0b30cd3c6dd15f7f336bf56d4bf827d92bf889","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.9.0.tgz","fileCount":42,"integrity":"sha512-KFsl4TPbYGIK+iG8vbV8CEGZ1V1xbjjoHrqhAcDonG8b7nIFWzkvye9t9MZQk0vYM5vTxqUa2VLmPpxqgAKrGA==","signatures":[{"sig":"MEUCIQDOSSDVZTGOFwJchaFvGVAKlt33MOpQ2ltYA6TkQlU0cgIgAh8Boev+wUa59VcB//jx+uMsMIt2GF9vxCqzzTa8gpU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":406904},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"}},"scripts":{"test":"npm run test:formal && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/signaling.js && node --check src/distributed.js","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"11.18.0","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), the lazily-spec IPC wire types, keyed cell collections + LIS reconciliation, the memoized semantic tree, the move-aware sequence CRDT, the Fugue/RGA text ","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.9.0_1783749164926_0.8869702204392387","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@lazily-hub/lazily-js","version":"0.10.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.10.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"7aa53c726cc9cb9858a63e0478bcb03765b72e0f","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.10.0.tgz","fileCount":43,"integrity":"sha512-1lYMhCmyAMXB1yd74xbXD8NmoBrN6Myte+Ia+jUWnGyAY08ltBDaVjVk4k9XSVmXCMP55/Rr3C+puPOERWFLOA==","signatures":[{"sig":"MEQCICu0TKhRBpNTqj4UxxFY9pHJMkJyhNHVW5+dE9xZJq1IAiBiIEICcvXAlaE+zLFLJKBOYAjJV7DXWWlGu1M1UPEN9Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":425539},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"}},"scripts":{"test":"npm run test:formal && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/signaling.js && node --check src/distributed.js","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"11.18.0","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), the lazily-spec IPC wire types, keyed cell collections + LIS reconciliation, the memoized semantic tree, the move-aware sequence CRDT, the Fugue/RGA text ","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.10.0_1783796917916_0.18640764449720093","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@lazily-hub/lazily-js","version":"0.11.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.11.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"0b9afddfb39bb93b7ab699312764d2c6a0582eee","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.11.0.tgz","fileCount":43,"integrity":"sha512-IeR7vFEIbRrnDxu8WGYYIv8UbCDEKZY7bpJ8K9fC2inZGen5nQNCU9vOKUC7mACq032dr92UbBYor2Bz+mlzNw==","signatures":[{"sig":"MEUCIQC0+uM0bvLEb/3Oc0Kqhex2Ex7TBxk2p5ZYWvxAHI8RvAIgUhRR9wUPuImfylVyM+j4lqvNFcTpx+QOOMjDJCPnaxg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":425539},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"}},"scripts":{"test":"npm run test:formal && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/signaling.js && node --check src/distributed.js","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"11.18.0","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), the lazily-spec IPC wire types, keyed cell collections + LIS reconciliation, the memoized semantic tree, the move-aware sequence CRDT, the Fugue/RGA text ","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.11.0_1783797103965_0.9947140374023498","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@lazily-hub/lazily-js","version":"0.12.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.12.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"1057b82cab6e444c15f87ffbcbd2ed855cd48948","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.12.0.tgz","fileCount":55,"integrity":"sha512-EauHHLK5z7NdmombbmVQi5L0DrMdXTPHzYFDZCL/gqxE8QajAz/taho07nTn/AXifa8851iEZpjn9ItqZrB5zA==","signatures":[{"sig":"MEUCIBc0rdWfQhSLaAWDY0pMC9tC0lyBT/pPMV8FP0QDrGOzAiEAxvv+xrm+QHUML1Ku7yD9JcE41Xl3u+llQW1tHnkb/IY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":485964},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"}},"scripts":{"test":"npm run test:formal && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/signaling.js && node --check src/distributed.js","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"11.18.0","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive families with materialization mode, the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + Node n","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.12.0_1783800720659_0.5457052828799036","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@lazily-hub/lazily-js","version":"0.13.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.13.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"69fdd45de2bca78e72e42990bf4291365a3d0c27","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.13.0.tgz","fileCount":57,"integrity":"sha512-/Fq4kDsTFC6hysYizXFZKumhQU7jhDK3wrFAyeVbneRh4vTJlD3b1rKfLwsqoiUyaEtZ1EdvgrZDmUHTZDO1QQ==","signatures":[{"sig":"MEUCIA3fTXLm014LgqML30r2NL4I51LfbydEJz0DjfRlgInpAiEAkrIY5piBFBpY+7wL9EfMnHr3VvvOA2NxDX+JpsqiJPw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":512900},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./state-graph-mirror":{"types":"./src/state-graph-mirror.d.ts","default":"./src/state-graph-mirror.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"}},"scripts":{"test":"npm run test:formal && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/state-graph-mirror.js && node --check src/signaling.js && node --check src/distributed.js","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"11.18.0","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive families with materialization mode, the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + Node n","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.13.0_1783827721267_0.22034155531779476","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@lazily-hub/lazily-js","version":"0.14.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.14.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"c034e62c83e5065b66351842db57362f07ad918c","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.14.0.tgz","fileCount":57,"integrity":"sha512-mj8If8+CLsHXN6ce7natFdEdRKnahIKJrGDB8RtYzNbxk7utT/oYZldBHH8SXoyCQfh4Gfsd/0aBHxiMXoNsJw==","signatures":[{"sig":"MEUCID54vzNTf9mkNfX/hvrI93xJGMjLEhDyKQz2UePhr9gEAiEA4eQPWkws94RUkR+JPh90nMMkTe+MYAlik6nroeVp4hI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":524020},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./state-graph-mirror":{"types":"./src/state-graph-mirror.d.ts","default":"./src/state-graph-mirror.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"}},"scripts":{"test":"npm run test:formal && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/state-graph-mirror.js && node --check src/signaling.js && node --check src/distributed.js","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"11.18.0","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive families with materialization mode, the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + Node n","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.14.0_1783834345717_0.61142381045225","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@lazily-hub/lazily-js","version":"0.15.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.15.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"5617f3ba3a41bbad0b7c3b21e1fcfd2f202dfda3","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.15.0.tgz","fileCount":57,"integrity":"sha512-Mb73vBaRw3YSdIFEGki6+ITnlJ/bcHC5ti9oZb8hPpFW5hKpk2F3kpng0+2XzXjac9xJHnd7DC5isIhXx9QqWA==","signatures":[{"sig":"MEUCIQCPLKbwAcHfRNOwnDMFHnHJRIo/EmxWFV+7ZByXhzHJuAIgEf0HduH/vAxiUmVeUEGs3sTaRgHTcKA7c7ssgdRMNMU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":518615},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"}},"scripts":{"test":"npm run test:formal && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/graph-view.js && node --check src/signaling.js && node --check src/distributed.js","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"11.18.0","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive maps (ReactiveMap/CellMap/SlotMap), the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + Node n","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.15.0_1783915675881_0.9111468699944809","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@lazily-hub/lazily-js","version":"0.16.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.16.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"83873fd61767e09ac2c24fb9ea2f588d9a44fbbc","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.16.0.tgz","fileCount":61,"integrity":"sha512-H6sRo6nojWGZDHcg5m/Vw4repj2a/QGBzDoSpPFzFXQuKfpQIg8+lbUywwX/eholKn3v5N5WnsEZ829V7Jt/zw==","signatures":[{"sig":"MEQCIDANPGf1YO+CceEuh/n6iu4C7PJO0Qe/m53ylA/7Luy5AiACjPyQvt7uh+/DzIzfs198CAn7ttSzPWorRhTsuEAuiw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":552352},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./merge":{"types":"./src/merge.d.ts","default":"./src/merge.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./relay":{"types":"./src/relay.d.ts","default":"./src/relay.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"}},"scripts":{"test":"npm run test:formal && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/merge.js && node --check src/relay.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/graph-view.js && node --check src/signaling.js && node --check src/distributed.js","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"11.18.0","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive maps (ReactiveMap/CellMap/SlotMap), the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + Node n","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.16.0_1783924735754_0.08069899865445485","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@lazily-hub/lazily-js","version":"0.18.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.18.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"f4fff111a12b0a4f67a1a09c597f6bd88f6b9b0e","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.18.0.tgz","fileCount":63,"integrity":"sha512-bKMTh0HxGbfRo1eCz5Ws1UtlC7fxqdbnsWD8S1fzVB2zTACJS35V4VGHezXe/KFPNtN0wOj42WVZI7ZF399hcw==","signatures":[{"sig":"MEQCIHm0xYtrcYfVvIXRixerOEnpWRgt9JEvT/ZOjuJ+SD08AiBZ9vMBA57pU5HvxiSzklFX9rDxrgGS5c1P4CQUUD8BrA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":576868},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./merge":{"types":"./src/merge.d.ts","default":"./src/merge.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./relay":{"types":"./src/relay.d.ts","default":"./src/relay.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./indexeddb-outbox":{"types":"./src/indexeddb-outbox.d.ts","browser":"./src/indexeddb-outbox.js","default":"./src/indexeddb-outbox.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"}},"scripts":{"test":"npm run test:formal && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/merge.js && node --check src/relay.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/indexeddb-outbox.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/graph-view.js && node --check src/signaling.js && node --check src/distributed.js","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"11.18.0","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive maps (ReactiveMap/CellMap/SlotMap), the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + Node n","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0","fake-indexeddb":"^6.2.5"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.18.0_1783975849702_0.2252632390052829","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@lazily-hub/lazily-js","version":"0.19.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.19.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"19215fdddea796fc1bcd7c9808b782efa5eff0e1","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.19.0.tgz","fileCount":79,"integrity":"sha512-yGUk3yffwu+Cs0W38c0SCB1HoGXt4AtLpuqtX99DMVblLe8SRNbYKx3CIks5xLBaZhFRFeCrg17g8LHQO5kF6A==","signatures":[{"sig":"MEYCIQCo/8BVrTDKYHulOZ5TFX/VVwEjibbqqcHlCZPMIBLn5gIhAIjVJ08DfFpXv/+QXKDmW/gRgMPjF2X8yTV4r2FC87Hw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":644296},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./merge":{"types":"./src/merge.d.ts","default":"./src/merge.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./relay":{"types":"./src/relay.d.ts","default":"./src/relay.js"},"./service":{"types":"./src/service.d.ts","default":"./src/service.js"},"./presence":{"types":"./src/presence.d.ts","default":"./src/presence.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./temporal":{"types":"./src/temporal.d.ts","default":"./src/temporal.js"},"./rateshape":{"types":"./src/rateshape.d.ts","default":"./src/rateshape.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./windowing":{"types":"./src/windowing.d.ts","default":"./src/windowing.js"},"./membership":{"types":"./src/membership.d.ts","default":"./src/membership.js"},"./resilience":{"types":"./src/resilience.d.ts","default":"./src/resilience.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./coordination":{"types":"./src/coordination.d.ts","default":"./src/coordination.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./indexeddb-outbox":{"types":"./src/indexeddb-outbox.d.ts","browser":"./src/indexeddb-outbox.js","default":"./src/indexeddb-outbox.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"}},"scripts":{"test":"npm run test:formal && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/merge.js && node --check src/relay.js && node --check src/rateshape.js && node --check src/membership.js && node --check src/coordination.js && node --check src/presence.js && node --check src/windowing.js && node --check src/resilience.js && node --check src/service.js && node --check src/temporal.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/indexeddb-outbox.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/graph-view.js && node --check src/signaling.js && node --check src/distributed.js","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"11.18.0","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive maps (ReactiveMap/CellMap/SlotMap), the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + Node n","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0","fake-indexeddb":"^6.2.5"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.19.0_1784008307894_0.06568438845706392","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"@lazily-hub/lazily-js","version":"0.20.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.20.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"69e6bd938409c051e0aa1d8356b92535ea9b3622","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.20.0.tgz","fileCount":79,"integrity":"sha512-JEuxl8bgbpc6UG0M3FpE6XwpIAF2TxECeyLhot9IGIZwvR0lB+qs21MtVNIFlQZBL9OZSM7oJ8cSXHPxslQL7Q==","signatures":[{"sig":"MEUCIFZbIeFiIpn1R7zDe8MwgiiN0QVVU30THQIngoMTv/ewAiEA4VABtX4IaILIGkkk9gYxPoUGUerrem7fnJtfNtHPwoo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":645058},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./merge":{"types":"./src/merge.d.ts","default":"./src/merge.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./relay":{"types":"./src/relay.d.ts","default":"./src/relay.js"},"./service":{"types":"./src/service.d.ts","default":"./src/service.js"},"./presence":{"types":"./src/presence.d.ts","default":"./src/presence.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./temporal":{"types":"./src/temporal.d.ts","default":"./src/temporal.js"},"./rateshape":{"types":"./src/rateshape.d.ts","default":"./src/rateshape.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./windowing":{"types":"./src/windowing.d.ts","default":"./src/windowing.js"},"./membership":{"types":"./src/membership.d.ts","default":"./src/membership.js"},"./resilience":{"types":"./src/resilience.d.ts","default":"./src/resilience.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./coordination":{"types":"./src/coordination.d.ts","default":"./src/coordination.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./indexeddb-outbox":{"types":"./src/indexeddb-outbox.d.ts","browser":"./src/indexeddb-outbox.js","default":"./src/indexeddb-outbox.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"}},"scripts":{"test":"npm run test:formal && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/merge.js && node --check src/relay.js && node --check src/rateshape.js && node --check src/membership.js && node --check src/coordination.js && node --check src/presence.js && node --check src/windowing.js && node --check src/resilience.js && node --check src/service.js && node --check src/temporal.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/indexeddb-outbox.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/graph-view.js && node --check src/signaling.js && node --check src/distributed.js","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"12.0.1","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive maps (ReactiveMap/CellMap/SlotMap), the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + Node n","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0","fake-indexeddb":"^6.2.5"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.20.0_1784229529362_0.8788230959737535","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"@lazily-hub/lazily-js","version":"0.21.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.21.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"850521b4eef6c4d80cdcf10cfa0a24f658e3729e","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.21.0.tgz","fileCount":80,"integrity":"sha512-zIIos2+VyCWZUVjFwFksm3d5njILWK33PJbVEGybrMtVidZ4o2D4iugllZgCPVEyGVi5IUBDRkI+ZUsErlIDPQ==","signatures":[{"sig":"MEUCIQDx4Yyn8CV1rB8/l9cTi28PxvdwbjXokK71GTpK4dmiRQIgEMWRnKTu7434OCt4LwZhh9T58KPykAgNRXqOYDAFomo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":653877},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./merge":{"types":"./src/merge.d.ts","default":"./src/merge.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./relay":{"types":"./src/relay.d.ts","default":"./src/relay.js"},"./service":{"types":"./src/service.d.ts","default":"./src/service.js"},"./presence":{"types":"./src/presence.d.ts","default":"./src/presence.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./temporal":{"types":"./src/temporal.d.ts","default":"./src/temporal.js"},"./rateshape":{"types":"./src/rateshape.d.ts","default":"./src/rateshape.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./windowing":{"types":"./src/windowing.d.ts","default":"./src/windowing.js"},"./membership":{"types":"./src/membership.d.ts","default":"./src/membership.js"},"./resilience":{"types":"./src/resilience.d.ts","default":"./src/resilience.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./coordination":{"types":"./src/coordination.d.ts","default":"./src/coordination.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./indexeddb-outbox":{"types":"./src/indexeddb-outbox.d.ts","browser":"./src/indexeddb-outbox.js","default":"./src/indexeddb-outbox.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"}},"scripts":{"test":"npm run test:formal && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/merge.js && node --check src/relay.js && node --check src/rateshape.js && node --check src/membership.js && node --check src/coordination.js && node --check src/presence.js && node --check src/windowing.js && node --check src/resilience.js && node --check src/service.js && node --check src/temporal.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/indexeddb-outbox.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/graph-view.js && node --check src/signaling.js && node --check src/distributed.js","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"12.0.1","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive maps (ReactiveMap/CellMap/SlotMap), the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + Node n","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0","fake-indexeddb":"^6.2.5"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.21.0_1784322817108_0.5580566056238399","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"@lazily-hub/lazily-js","version":"0.23.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.23.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"3ec8a24bafbae99b4974d6c5899916395035ccbf","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.23.0.tgz","fileCount":81,"integrity":"sha512-WEyCVXD4ufoxPDkMF7x1Ea8+1tUsN4YNJ+AvKkwv1QQRpGxurQYHyXTFXjHVZnYdMkdO1V+UWsErFf5JpKslzw==","signatures":[{"sig":"MEUCIQDymKv9z7gyNoqLS/n1thN9EXFdJxgkDL74AkqGXXjKywIgDz+qDWM++acDdxvJ0AGRn8PuLMQEJIlOLs7wOwHrNtU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":665187},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./merge":{"types":"./src/merge.d.ts","default":"./src/merge.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./relay":{"types":"./src/relay.d.ts","default":"./src/relay.js"},"./service":{"types":"./src/service.d.ts","default":"./src/service.js"},"./presence":{"types":"./src/presence.d.ts","default":"./src/presence.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./temporal":{"types":"./src/temporal.d.ts","default":"./src/temporal.js"},"./rateshape":{"types":"./src/rateshape.d.ts","default":"./src/rateshape.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./windowing":{"types":"./src/windowing.d.ts","default":"./src/windowing.js"},"./membership":{"types":"./src/membership.d.ts","default":"./src/membership.js"},"./resilience":{"types":"./src/resilience.d.ts","default":"./src/resilience.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./coordination":{"types":"./src/coordination.d.ts","default":"./src/coordination.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./indexeddb-outbox":{"types":"./src/indexeddb-outbox.d.ts","browser":"./src/indexeddb-outbox.js","default":"./src/indexeddb-outbox.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"}},"scripts":{"test":"npm run test:formal && npm run test:size && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/merge.js && node --check src/relay.js && node --check src/rateshape.js && node --check src/membership.js && node --check src/coordination.js && node --check src/presence.js && node --check src/windowing.js && node --check src/resilience.js && node --check src/service.js && node --check src/temporal.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/indexeddb-outbox.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/graph-view.js && node --check src/signaling.js && node --check src/distributed.js && node scripts/update-size-limits.mjs","test:size":"size-limit","size:check":"node scripts/update-size-limits.mjs --check","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","size:update":"node scripts/update-size-limits.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"12.0.1","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive maps (ReactiveMap/CellMap/SlotMap), the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + Node n","directories":{},"sideEffects":false,"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","size-limit":"^12.1.0","typescript":"^5.6.0","@types/node":"^22.0.0","fake-indexeddb":"^6.2.5","@size-limit/preset-small-lib":"^12.1.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.23.0_1784328861912_0.13801951589014383","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"@lazily-hub/lazily-js","version":"0.24.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.24.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"b9d88b6ecfd2e26d89c1c88a5a6b92a2409b75c8","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.24.0.tgz","fileCount":81,"integrity":"sha512-hbtqigspFB2ohKbvKseNzKjhFl2i/yQkV6immJ3jy31tn9iFahCH9AOI9DvmHYWJqmQqDK7YKkdKZoK0fxretA==","signatures":[{"sig":"MEUCIQCQbZq9wzY02EcfJboC5cvrPeuhY+kpwUerqd9pZPa9owIgGUUoFqyAhzP0K6o30gw8Yg9+QfgMX/wBNyg7YcyMnXw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673775},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./merge":{"types":"./src/merge.d.ts","default":"./src/merge.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./relay":{"types":"./src/relay.d.ts","default":"./src/relay.js"},"./service":{"types":"./src/service.d.ts","default":"./src/service.js"},"./presence":{"types":"./src/presence.d.ts","default":"./src/presence.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./temporal":{"types":"./src/temporal.d.ts","default":"./src/temporal.js"},"./rateshape":{"types":"./src/rateshape.d.ts","default":"./src/rateshape.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./windowing":{"types":"./src/windowing.d.ts","default":"./src/windowing.js"},"./membership":{"types":"./src/membership.d.ts","default":"./src/membership.js"},"./resilience":{"types":"./src/resilience.d.ts","default":"./src/resilience.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./coordination":{"types":"./src/coordination.d.ts","default":"./src/coordination.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./indexeddb-outbox":{"types":"./src/indexeddb-outbox.d.ts","browser":"./src/indexeddb-outbox.js","default":"./src/indexeddb-outbox.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"}},"scripts":{"test":"npm run test:formal && npm run test:size && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/merge.js && node --check src/relay.js && node --check src/rateshape.js && node --check src/membership.js && node --check src/coordination.js && node --check src/presence.js && node --check src/windowing.js && node --check src/resilience.js && node --check src/service.js && node --check src/temporal.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/indexeddb-outbox.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/graph-view.js && node --check src/signaling.js && node --check src/distributed.js && node scripts/update-size-limits.mjs","test:size":"size-limit","size:check":"node scripts/update-size-limits.mjs --check","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","size:update":"node scripts/update-size-limits.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"12.0.1","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive maps (ReactiveMap/CellMap/SlotMap), the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + Node n","directories":{},"sideEffects":false,"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","size-limit":"^12.1.0","typescript":"^5.6.0","@types/node":"^22.0.0","fake-indexeddb":"^6.2.5","@size-limit/preset-small-lib":"^12.1.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.24.0_1784350435135_0.33268944921415056","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"@lazily-hub/lazily-js","version":"0.25.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.25.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"8755bb0c3b80b7b6b0e0d0e22c4b5ec8cda017bd","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.25.0.tgz","fileCount":85,"integrity":"sha512-GcBPLZUa0La08sa1Nbd+AW2a2VmnU70ftUD25uaDhVqlJvZTtoldPNmgmwTn04Z9A7f1FuDOUPUr/HIuEDID6Q==","signatures":[{"sig":"MEQCIATgzVWjNiH8BGqS/G4iF1h3rhXiy6WXh3gCUl5ElQ+KAiAmGxvxz/dKaAxhmV9LYu0y8L98sXktZg3dRuArJIxHKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":754633},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./merge":{"types":"./src/merge.d.ts","default":"./src/merge.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./relay":{"types":"./src/relay.d.ts","default":"./src/relay.js"},"./service":{"types":"./src/service.d.ts","default":"./src/service.js"},"./presence":{"types":"./src/presence.d.ts","default":"./src/presence.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./temporal":{"types":"./src/temporal.d.ts","default":"./src/temporal.js"},"./rateshape":{"types":"./src/rateshape.d.ts","default":"./src/rateshape.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./windowing":{"types":"./src/windowing.d.ts","default":"./src/windowing.js"},"./membership":{"types":"./src/membership.d.ts","default":"./src/membership.js"},"./resilience":{"types":"./src/resilience.d.ts","default":"./src/resilience.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./coordination":{"types":"./src/coordination.d.ts","default":"./src/coordination.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./indexeddb-outbox":{"types":"./src/indexeddb-outbox.d.ts","browser":"./src/indexeddb-outbox.js","default":"./src/indexeddb-outbox.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"}},"scripts":{"test":"npm run test:formal && npm run test:size && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/teardown-scope.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/merge.js && node --check src/relay.js && node --check src/rateshape.js && node --check src/membership.js && node --check src/coordination.js && node --check src/presence.js && node --check src/windowing.js && node --check src/resilience.js && node --check src/service.js && node --check src/temporal.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/indexeddb-outbox.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/graph-view.js && node --check src/signaling.js && node --check src/distributed.js && node scripts/update-size-limits.mjs","test:size":"size-limit","size:check":"node scripts/update-size-limits.mjs --check","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","size:update":"node scripts/update-size-limits.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"12.0.1","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive maps (ReactiveMap/CellMap/SlotMap), the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + Node n","directories":{},"sideEffects":false,"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","size-limit":"^12.1.0","typescript":"^5.6.0","@types/node":"^22.0.0","fake-indexeddb":"^6.2.5","@size-limit/preset-small-lib":"^12.1.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.25.0_1784511797263_0.31351361435683067","host":"s3://npm-registry-packages-npm-production"}},"0.26.0":{"name":"@lazily-hub/lazily-js","version":"0.26.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.26.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"3cd3c188707601dab46fe3b17990b28b050aa4c7","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.26.0.tgz","fileCount":85,"integrity":"sha512-8wNrq2nepxeO3IrZMhrlsLXntbnPYX7tKROWJXdxRoD7yy5pjvrI24i5iNHb1bFKj0VtAY/2CPJ0Evg9NSNp2A==","signatures":[{"sig":"MEQCIDXs7g+naqoi9Dme9wnI+R4IgHx5O5ZAEqFjjALnSTYQAiBDFOois+zYGoG/fn5T65owP0SG+G72ax5stcAtKMFCZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":791466},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./merge":{"types":"./src/merge.d.ts","default":"./src/merge.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./relay":{"types":"./src/relay.d.ts","default":"./src/relay.js"},"./service":{"types":"./src/service.d.ts","default":"./src/service.js"},"./presence":{"types":"./src/presence.d.ts","default":"./src/presence.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./temporal":{"types":"./src/temporal.d.ts","default":"./src/temporal.js"},"./rateshape":{"types":"./src/rateshape.d.ts","default":"./src/rateshape.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./windowing":{"types":"./src/windowing.d.ts","default":"./src/windowing.js"},"./graph-view":{"types":"./src/graph-view.d.ts","default":"./src/graph-view.js"},"./membership":{"types":"./src/membership.d.ts","default":"./src/membership.js"},"./resilience":{"types":"./src/resilience.d.ts","default":"./src/resilience.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./coordination":{"types":"./src/coordination.d.ts","default":"./src/coordination.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./indexeddb-outbox":{"types":"./src/indexeddb-outbox.d.ts","browser":"./src/indexeddb-outbox.js","default":"./src/indexeddb-outbox.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"}},"scripts":{"test":"npm run test:formal && npm run test:size && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/teardown-scope.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/merge.js && node --check src/relay.js && node --check src/rateshape.js && node --check src/membership.js && node --check src/coordination.js && node --check src/presence.js && node --check src/windowing.js && node --check src/resilience.js && node --check src/service.js && node --check src/temporal.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/indexeddb-outbox.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/graph-view.js && node --check src/signaling.js && node --check src/distributed.js && node scripts/update-size-limits.mjs","test:size":"size-limit","size:check":"node scripts/update-size-limits.mjs --check","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","size:update":"node scripts/update-size-limits.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"12.0.1","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive maps (ReactiveMap/CellMap/SlotMap), the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + Node n","directories":{},"sideEffects":false,"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","size-limit":"^12.1.0","typescript":"^5.6.0","@types/node":"^22.0.0","fake-indexeddb":"^6.2.5","@size-limit/preset-small-lib":"^12.1.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.26.0_1784702352831_0.8288543672954152","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"@lazily-hub/lazily-js","version":"0.27.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.27.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"a179d01b99861e3efead93134b5c0677f264055f","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.27.0.tgz","fileCount":85,"integrity":"sha512-+e21E3aoF8jXoUX8SIWn/M4bNPtFVM/oPkF0uXNF1A+KoeB2DqcBHwYRcIwZ9ftY2nizmznBVWtsorWpYe50LQ==","signatures":[{"sig":"MEQCICCFIEid6tmRqmXISa/eIPT+nnkRL1r+Az2fBei77wOkAiBAK/Qw+ZT8tUgyAh+SoFnOWqTV0SjTDwTF2NIPn2FIYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":791357},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./merge":{"types":"./src/merge.d.ts","default":"./src/merge.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./relay":{"types":"./src/relay.d.ts","default":"./src/relay.js"},"./service":{"types":"./src/service.d.ts","default":"./src/service.js"},"./presence":{"types":"./src/presence.d.ts","default":"./src/presence.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./temporal":{"types":"./src/temporal.d.ts","default":"./src/temporal.js"},"./rateshape":{"types":"./src/rateshape.d.ts","default":"./src/rateshape.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./windowing":{"types":"./src/windowing.d.ts","default":"./src/windowing.js"},"./graph-view":{"types":"./src/graph-view.d.ts","default":"./src/graph-view.js"},"./membership":{"types":"./src/membership.d.ts","default":"./src/membership.js"},"./resilience":{"types":"./src/resilience.d.ts","default":"./src/resilience.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./coordination":{"types":"./src/coordination.d.ts","default":"./src/coordination.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./indexeddb-outbox":{"types":"./src/indexeddb-outbox.d.ts","browser":"./src/indexeddb-outbox.js","default":"./src/indexeddb-outbox.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"}},"scripts":{"test":"npm run test:formal && npm run test:size && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/teardown-scope.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/merge.js && node --check src/relay.js && node --check src/rateshape.js && node --check src/membership.js && node --check src/coordination.js && node --check src/presence.js && node --check src/windowing.js && node --check src/resilience.js && node --check src/service.js && node --check src/temporal.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/indexeddb-outbox.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/graph-view.js && node --check src/signaling.js && node --check src/distributed.js && node scripts/update-size-limits.mjs","test:size":"size-limit","size:check":"node scripts/update-size-limits.mjs --check","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","size:update":"node scripts/update-size-limits.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"12.0.1","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive maps (ReactiveMap/CellMap/SlotMap), the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + Node n","directories":{},"sideEffects":false,"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","size-limit":"^12.1.0","typescript":"^5.6.0","@types/node":"^22.0.0","fake-indexeddb":"^6.2.5","@size-limit/preset-small-lib":"^12.1.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.27.0_1784706603157_0.733671434212404","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"@lazily-hub/lazily-js","version":"0.28.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.28.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"fe61053ccf8d08aa0dfd8a5db2606aacb9476d4a","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.28.0.tgz","fileCount":85,"integrity":"sha512-5bE0PBAiKEgiApfOKhgHNYOJUR4Ll9yvxdhiQyeriWNs2rD3fml3VBig98q4MmbmkFSINmzO/6ftmFsJQdMsEw==","signatures":[{"sig":"MEQCIA+PZLtrHm1yhHUZ/BH5Lg6oroyvyNRKWplb6ctSfjBsAiBn6q98W2udd0vx/fOTxJ2bOIrB47yU/u/lEomSkGL75A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":796037},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./merge":{"types":"./src/merge.d.ts","default":"./src/merge.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./relay":{"types":"./src/relay.d.ts","default":"./src/relay.js"},"./service":{"types":"./src/service.d.ts","default":"./src/service.js"},"./presence":{"types":"./src/presence.d.ts","default":"./src/presence.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./temporal":{"types":"./src/temporal.d.ts","default":"./src/temporal.js"},"./rateshape":{"types":"./src/rateshape.d.ts","default":"./src/rateshape.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./windowing":{"types":"./src/windowing.d.ts","default":"./src/windowing.js"},"./graph-view":{"types":"./src/graph-view.d.ts","default":"./src/graph-view.js"},"./membership":{"types":"./src/membership.d.ts","default":"./src/membership.js"},"./resilience":{"types":"./src/resilience.d.ts","default":"./src/resilience.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./coordination":{"types":"./src/coordination.d.ts","default":"./src/coordination.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./indexeddb-outbox":{"types":"./src/indexeddb-outbox.d.ts","browser":"./src/indexeddb-outbox.js","default":"./src/indexeddb-outbox.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"}},"scripts":{"test":"npm run test:formal && npm run test:size && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/teardown-scope.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/merge.js && node --check src/relay.js && node --check src/rateshape.js && node --check src/membership.js && node --check src/coordination.js && node --check src/presence.js && node --check src/windowing.js && node --check src/resilience.js && node --check src/service.js && node --check src/temporal.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/indexeddb-outbox.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/graph-view.js && node --check src/signaling.js && node --check src/distributed.js && node scripts/update-size-limits.mjs","test:size":"size-limit","size:check":"node scripts/update-size-limits.mjs --check","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","size:update":"node scripts/update-size-limits.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"12.0.1","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive maps (ReactiveMap/SourceMap/ComputedMap), the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + ","directories":{},"sideEffects":false,"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","size-limit":"^12.1.0","typescript":"^5.6.0","@types/node":"^22.0.0","fake-indexeddb":"^6.2.5","@size-limit/preset-small-lib":"^12.1.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.28.0_1785031979155_0.7141179907082211","host":"s3://npm-registry-packages-npm-production"}},"0.29.0":{"name":"@lazily-hub/lazily-js","version":"0.29.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.29.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"f6acdc05474c228479e94eec8dac98706e0410a4","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.29.0.tgz","fileCount":86,"integrity":"sha512-+xwaVhpp/5AELgzZifQHWC37FjDg/23Umdiv5K8iaJiRRWvNnLFF/cWkIoBx3ITTICRlDFT/+1npWt3ROXIaBQ==","signatures":[{"sig":"MEUCIQCNLvYfBfq6unBAt3ul+8wveX/oSRKVbZAwUD6MfdV+xAIgVlazYOMaPoIIVHaGHoFXQAqtpv4Ch1wjE1dQ77IMxFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":817437},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./merge":{"types":"./src/merge.d.ts","default":"./src/merge.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./relay":{"types":"./src/relay.d.ts","default":"./src/relay.js"},"./service":{"types":"./src/service.d.ts","default":"./src/service.js"},"./presence":{"types":"./src/presence.d.ts","default":"./src/presence.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./temporal":{"types":"./src/temporal.d.ts","default":"./src/temporal.js"},"./rateshape":{"types":"./src/rateshape.d.ts","default":"./src/rateshape.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./windowing":{"types":"./src/windowing.d.ts","default":"./src/windowing.js"},"./graph-view":{"types":"./src/graph-view.d.ts","default":"./src/graph-view.js"},"./membership":{"types":"./src/membership.d.ts","default":"./src/membership.js"},"./resilience":{"types":"./src/resilience.d.ts","default":"./src/resilience.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./coordination":{"types":"./src/coordination.d.ts","default":"./src/coordination.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./indexeddb-outbox":{"types":"./src/indexeddb-outbox.d.ts","browser":"./src/indexeddb-outbox.js","default":"./src/indexeddb-outbox.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"}},"scripts":{"test":"npm run test:formal && npm run test:size && node --test test/*.test.js","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/teardown-scope.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/merge.js && node --check src/relay.js && node --check src/rateshape.js && node --check src/membership.js && node --check src/coordination.js && node --check src/presence.js && node --check src/windowing.js && node --check src/resilience.js && node --check src/service.js && node --check src/temporal.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/indexeddb-outbox.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/graph-view.js && node --check src/signaling.js && node --check src/distributed.js && node scripts/update-size-limits.mjs","test:size":"size-limit","size:check":"node scripts/update-size-limits.mjs --check","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","size:update":"node scripts/update-size-limits.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"12.0.1","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive maps (ReactiveMap/SourceMap/ComputedMap), the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + ","directories":{},"sideEffects":false,"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","size-limit":"^12.1.0","typescript":"^5.6.0","@types/node":"^22.0.0","fake-indexeddb":"^6.2.5","@size-limit/preset-small-lib":"^12.1.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.29.0_1785053629076_0.029724399109802846","host":"s3://npm-registry-packages-npm-production"}},"0.29.1":{"name":"@lazily-hub/lazily-js","version":"0.29.1","license":"MIT","_id":"@lazily-hub/lazily-js@0.29.1","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"f45ed62867615af5c0794e4dc442ddf7c9070f6a","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.29.1.tgz","fileCount":87,"integrity":"sha512-dw8tbdZCFmV0GCfwxqQMp9klJFu9SCsGhE30otPvZ57X7DOK92N6VrQcRB7ztMv6kgx3Cd3C0yVfWhK/BuGzIQ==","signatures":[{"sig":"MEUCIQC2iiXpotLT9D07n5uLgCxMIH5wHWXwb9TJL5p2M7JHYwIgFEYqsspHGGipl6+OYRKu7TB/ZDyhERZsNJra9lQ8/TY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":824254},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./merge":{"types":"./src/merge.d.ts","default":"./src/merge.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./relay":{"types":"./src/relay.d.ts","default":"./src/relay.js"},"./service":{"types":"./src/service.d.ts","default":"./src/service.js"},"./presence":{"types":"./src/presence.d.ts","default":"./src/presence.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./temporal":{"types":"./src/temporal.d.ts","default":"./src/temporal.js"},"./rateshape":{"types":"./src/rateshape.d.ts","default":"./src/rateshape.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./windowing":{"types":"./src/windowing.d.ts","default":"./src/windowing.js"},"./graph-view":{"types":"./src/graph-view.d.ts","default":"./src/graph-view.js"},"./membership":{"types":"./src/membership.d.ts","default":"./src/membership.js"},"./resilience":{"types":"./src/resilience.d.ts","default":"./src/resilience.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./coordination":{"types":"./src/coordination.d.ts","default":"./src/coordination.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./indexeddb-outbox":{"types":"./src/indexeddb-outbox.d.ts","browser":"./src/indexeddb-outbox.js","default":"./src/indexeddb-outbox.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"}},"scripts":{"test":"npm run test:formal && npm run test:size && LAZILY_CONFORMANCE_MANIFEST=build/conformance-fixtures-loaded.txt sh -c 'mkdir -p build && : > \"$LAZILY_CONFORMANCE_MANIFEST\" && node --require ./test/support/conformance-manifest.cjs --test test/*.test.js'","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/teardown-scope.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/merge.js && node --check src/relay.js && node --check src/rateshape.js && node --check src/membership.js && node --check src/coordination.js && node --check src/presence.js && node --check src/windowing.js && node --check src/resilience.js && node --check src/service.js && node --check src/temporal.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/indexeddb-outbox.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/graph-view.js && node --check src/signaling.js && node --check src/distributed.js && node scripts/update-size-limits.mjs","test:size":"size-limit","size:check":"node scripts/update-size-limits.mjs --check","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","size:update":"node scripts/update-size-limits.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"12.0.1","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive maps (ReactiveMap/SourceMap/ComputedMap), the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + ","directories":{},"sideEffects":false,"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","size-limit":"^12.1.0","typescript":"^5.6.0","@types/node":"^22.0.0","fake-indexeddb":"^6.2.5","@size-limit/preset-small-lib":"^12.1.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.29.1_1785092379875_0.08311036956446372","host":"s3://npm-registry-packages-npm-production"}},"0.31.0":{"name":"@lazily-hub/lazily-js","version":"0.31.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.31.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"bin":{"lazily-interop-peer":"bin/interop-peer.mjs"},"dist":{"shasum":"5d5aa7e47858ae456d1261ecc7035367c7752bea","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.31.0.tgz","fileCount":89,"integrity":"sha512-10yDKGY8hJnD/bX9jBJ6K5m2Dl/vcaLjc1YP90lDIunSjNSEq9s24LZAB4ZaZJXjbw+Pak77xTsgGTiBJ2glwQ==","signatures":[{"sig":"MEYCIQCGldWukqFoGk2u9MnP3SvskMHzwadKsUpjOkY8Dm1aQgIhAJ00AIMxmr2chDYmKTmkrNtPlX4BK+05UraVYypBf8Is","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":849145},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./merge":{"types":"./src/merge.d.ts","default":"./src/merge.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./relay":{"types":"./src/relay.d.ts","default":"./src/relay.js"},"./stdlib":{"types":"./src/stdlib.d.ts","default":"./src/stdlib.js"},"./service":{"types":"./src/service.d.ts","default":"./src/service.js"},"./presence":{"types":"./src/presence.d.ts","default":"./src/presence.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./temporal":{"types":"./src/temporal.d.ts","default":"./src/temporal.js"},"./rateshape":{"types":"./src/rateshape.d.ts","default":"./src/rateshape.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./windowing":{"types":"./src/windowing.d.ts","default":"./src/windowing.js"},"./graph-view":{"types":"./src/graph-view.d.ts","default":"./src/graph-view.js"},"./membership":{"types":"./src/membership.d.ts","default":"./src/membership.js"},"./resilience":{"types":"./src/resilience.d.ts","default":"./src/resilience.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./coordination":{"types":"./src/coordination.d.ts","default":"./src/coordination.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./indexeddb-outbox":{"types":"./src/indexeddb-outbox.d.ts","browser":"./src/indexeddb-outbox.js","default":"./src/indexeddb-outbox.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"}},"scripts":{"test":"npm run test:formal && npm run test:size && LAZILY_CONFORMANCE_MANIFEST=build/conformance-fixtures-loaded.txt sh -c 'mkdir -p build && : > \"$LAZILY_CONFORMANCE_MANIFEST\" && node --require ./test/support/conformance-manifest.cjs --test test/*.test.js'","bench":"node bench/context.bench.mjs","build":"node --check src/index.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/teardown-scope.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue.js && node --check src/merge.js && node --check src/relay.js && node --check src/rateshape.js && node --check src/membership.js && node --check src/coordination.js && node --check src/presence.js && node --check src/windowing.js && node --check src/resilience.js && node --check src/service.js && node --check src/temporal.js && node --check src/stdlib.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/indexeddb-outbox.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/graph-view.js && node --check src/signaling.js && node --check src/distributed.js && node scripts/update-size-limits.mjs","test:size":"size-limit","size:check":"node scripts/update-size-limits.mjs --check","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","size:update":"node scripts/update-size-limits.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs","test:interop-peer":"node bin/interop-peer.mjs --self-check"},"_npmUser":{"name":"btakita","email":"brian.takita@gmail.com"},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"12.0.1","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive maps (ReactiveMap/SourceMap/ComputedMap), the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + ","directories":{},"sideEffects":false,"_nodeVersion":"26.4.0","dependencies":{"koffi":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","size-limit":"^12.1.0","typescript":"^5.6.0","@types/node":"^22.0.0","fake-indexeddb":"^6.2.5","@size-limit/preset-small-lib":"^12.1.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.31.0_1785289457006_0.499344233454891","host":"s3://npm-registry-packages-npm-production"}},"0.32.0":{"name":"@lazily-hub/lazily-js","version":"0.32.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.32.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"bin":{"lazily-interop-peer":"bin/interop-peer.mjs"},"dist":{"shasum":"25d1dd045966f607ef79d65a736c30f24ac0d8d3","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.32.0.tgz","fileCount":115,"integrity":"sha512-a1yootb44t83gXA3JZc7GqgqSNlrV2XnigrJ1w30lWp8o5Q9rlQYwCcwYApAD0WSUwiMp13vBzy90hm9lflvWw==","signatures":[{"sig":"MEUCIQCOAku8senjeq1lSkag0yz+BPgrEG65LC5FFCMHZWeO7AIgYgSpsqxhmuPYdPDhIuk6OKppYbhinanWHjmQ1WLKiJw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC61at5Aqv4r7cqtAOzGKC3vRpaNH03BPFWeuA88a6vpwIgcUv/IMH9tav9XkoXkasGa/76Ud5Y9YEeN4veYNZ+9BU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@lazily-hub%2flazily-js@0.32.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1461425},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./merge":{"types":"./src/merge.d.ts","default":"./src/merge.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./relay":{"types":"./src/relay.d.ts","default":"./src/relay.js"},"./stdlib":{"types":"./src/stdlib.d.ts","default":"./src/stdlib.js"},"./ingress":{"types":"./src/ingress.d.ts","default":"./src/ingress.js"},"./service":{"types":"./src/service.d.ts","default":"./src/service.js"},"./presence":{"types":"./src/presence.d.ts","default":"./src/presence.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./temporal":{"types":"./src/temporal.d.ts","default":"./src/temporal.js"},"./rateshape":{"types":"./src/rateshape.d.ts","default":"./src/rateshape.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./windowing":{"types":"./src/windowing.d.ts","default":"./src/windowing.js"},"./graph-view":{"types":"./src/graph-view.d.ts","default":"./src/graph-view.js"},"./membership":{"types":"./src/membership.d.ts","default":"./src/membership.js"},"./queue-core":{"types":"./src/queue-core.d.ts","default":"./src/queue-core.js"},"./resilience":{"types":"./src/resilience.d.ts","default":"./src/resilience.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./async-queue":{"types":"./src/async-queue.d.ts","default":"./src/async-queue.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./coordination":{"types":"./src/coordination.d.ts","default":"./src/coordination.js"},"./ingress-core":{"types":"./src/ingress-core.d.ts","default":"./src/ingress-core.js"},"./async-ingress":{"types":"./src/async-ingress.d.ts","default":"./src/async-ingress.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./indexeddb-outbox":{"types":"./src/indexeddb-outbox.d.ts","browser":"./src/indexeddb-outbox.js","default":"./src/indexeddb-outbox.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./thread-safe-queue":{"types":"./src/thread-safe-queue.d.ts","default":"./src/thread-safe-queue.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./thread-safe-ingress":{"types":"./src/thread-safe-ingress.d.ts","default":"./src/thread-safe-ingress.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./protobuf-graph-boundary":{"types":"./src/protobuf-graph-boundary.d.ts","default":"./src/protobuf-graph-boundary.js"},"./latest-durable-projection":{"types":"./src/latest-durable-projection.d.ts","default":"./src/latest-durable-projection.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"},"./latest-durable-projection-core":{"types":"./src/latest-durable-projection-core.d.ts","default":"./src/latest-durable-projection-core.js"}},"gitHead":"facdd97155309a08e9d0dfd9b189495f257ec2b8","scripts":{"test":"npm run test:formal && npm run test:size && LAZILY_CONFORMANCE_MANIFEST=build/conformance-fixtures-loaded.txt LAZILY_CONFORMANCE_KEY_MANIFEST=build/conformance-assertion-keys.txt LAZILY_CONFORMANCE_BLOCK_MANIFEST=build/conformance-assertion-blocks.txt LAZILY_CONFORMANCE_SCENARIO_MANIFEST=build/conformance-scenarios.txt sh -c 'mkdir -p build && : > \"$LAZILY_CONFORMANCE_MANIFEST\" && : > \"$LAZILY_CONFORMANCE_KEY_MANIFEST\" && : > \"$LAZILY_CONFORMANCE_BLOCK_MANIFEST\" && : > \"$LAZILY_CONFORMANCE_SCENARIO_MANIFEST\" && node --require ./test/support/conformance-manifest.cjs --test test/*.test.js'","bench":"node bench/context.bench.mjs","build":"npm run generate:protobuf && node --check src/index.js && node --check src/msgpack-codec.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/teardown-scope.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue-core.js && node --check src/queue.js && node --check src/thread-safe-queue.js && node --check src/async-queue.js && node --check src/merge.js && node --check src/relay.js && node --check src/ingress-core.js && node --check src/ingress.js && node --check src/thread-safe-ingress.js && node --check src/async-ingress.js && node --check src/rateshape.js && node --check src/membership.js && node --check src/coordination.js && node --check src/presence.js && node --check src/windowing.js && node --check src/resilience.js && node --check src/service.js && node --check src/temporal.js && node --check src/stdlib.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/indexeddb-outbox.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/graph-view.js && node --check src/signaling.js && node --check src/distributed.js && node --check src/protobuf-graph-boundary.js && node --check build/generated/graph-boundary.js && node scripts/update-size-limits.mjs","format":"prettier --check .","prepack":"npm run generate:protobuf","test:size":"size-limit","typecheck":"tsc -p tsconfig.json","format:fix":"prettier --write .","size:check":"node scripts/update-size-limits.mjs --check","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","size:update":"node scripts/update-size-limits.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs","generate:protobuf":"mkdir -p build/generated && pbjs -t static-module -w es6 -o build/generated/graph-boundary.js ../lazily-spec/proto/lazily/graph_boundary/v1/graph_boundary.proto && pbts -o build/generated/graph-boundary.d.ts build/generated/graph-boundary.js","test:interop-peer":"node bin/interop-peer.mjs --self-check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca2025d2-a249-483e-af8b-60e65ea35a00"}},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"11.19.0","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive maps (ReactiveMap/SourceMap/ComputedMap), the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"koffi":"^3.0.2","protobufjs":"8.7.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","prettier":"3.9.6","size-limit":"^12.1.0","typescript":"^5.6.0","@types/node":"^22.0.0","fake-indexeddb":"^6.2.5","protobufjs-cli":"2.6.1","@size-limit/preset-small-lib":"^12.1.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.32.0_1788467829002_0.2767633658711337","host":"s3://npm-registry-packages-npm-production"}},"0.33.0":{"name":"@lazily-hub/lazily-js","version":"0.33.0","license":"MIT","_id":"@lazily-hub/lazily-js@0.33.0","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"homepage":"https://github.com/lazily-hub/lazily-js#readme","bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"bin":{"lazily-interop-peer":"bin/interop-peer.mjs"},"dist":{"shasum":"2d4aaa8e0acf34516186311d2f468a026e83eaab","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.33.0.tgz","fileCount":117,"integrity":"sha512-0hnBBEhbhfyarnjJGPTuAsMY4jw0LYVSOzlxLaQ9fcp+0M98dRvCptsE4mPVs3rQISO5C1zy2E0FKeRvQgRX1Q==","signatures":[{"sig":"MEUCIG+NMEtizLp3qbF043u7FEPytZtHB2nYbhcA8ThvK8VzAiEA8dc/IkhcA2RkdbOrL5agGFgk5xadZgWkUmKi+7CidWs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIE4j12JJ5uW7gbI6W7GNtPWed8X4t8q52dLy4KVZbTgjAiAVO8NLP18l3izFFe180XM/6G5L4MxzNLAJaSbRuz3FrA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@lazily-hub%2flazily-js@0.33.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1505493},"main":"src/index.js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./merge":{"types":"./src/merge.d.ts","default":"./src/merge.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./relay":{"types":"./src/relay.d.ts","default":"./src/relay.js"},"./replay":{"types":"./src/replay.d.ts","default":"./src/replay.js"},"./stdlib":{"types":"./src/stdlib.d.ts","default":"./src/stdlib.js"},"./ingress":{"types":"./src/ingress.d.ts","default":"./src/ingress.js"},"./service":{"types":"./src/service.d.ts","default":"./src/service.js"},"./presence":{"types":"./src/presence.d.ts","default":"./src/presence.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./temporal":{"types":"./src/temporal.d.ts","default":"./src/temporal.js"},"./rateshape":{"types":"./src/rateshape.d.ts","default":"./src/rateshape.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./windowing":{"types":"./src/windowing.d.ts","default":"./src/windowing.js"},"./graph-view":{"types":"./src/graph-view.d.ts","default":"./src/graph-view.js"},"./membership":{"types":"./src/membership.d.ts","default":"./src/membership.js"},"./queue-core":{"types":"./src/queue-core.d.ts","default":"./src/queue-core.js"},"./resilience":{"types":"./src/resilience.d.ts","default":"./src/resilience.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./async-queue":{"types":"./src/async-queue.d.ts","default":"./src/async-queue.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./coordination":{"types":"./src/coordination.d.ts","default":"./src/coordination.js"},"./ingress-core":{"types":"./src/ingress-core.d.ts","default":"./src/ingress-core.js"},"./async-ingress":{"types":"./src/async-ingress.d.ts","default":"./src/async-ingress.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./indexeddb-outbox":{"types":"./src/indexeddb-outbox.d.ts","browser":"./src/indexeddb-outbox.js","default":"./src/indexeddb-outbox.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./thread-safe-queue":{"types":"./src/thread-safe-queue.d.ts","default":"./src/thread-safe-queue.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./thread-safe-ingress":{"types":"./src/thread-safe-ingress.d.ts","default":"./src/thread-safe-ingress.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./protobuf-graph-boundary":{"types":"./src/protobuf-graph-boundary.d.ts","default":"./src/protobuf-graph-boundary.js"},"./latest-durable-projection":{"types":"./src/latest-durable-projection.d.ts","default":"./src/latest-durable-projection.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"},"./latest-durable-projection-core":{"types":"./src/latest-durable-projection-core.d.ts","default":"./src/latest-durable-projection-core.js"}},"gitHead":"d3c4db2b090761f3c2f4c581e002ff4276e1d792","scripts":{"test":"sh -c ': \"${LAZILY_CONFORMANCE_RUN_ID:?is unset, so the evidence files below could not be dated and every conformance rung would refuse them (#lzstalemanifest). Run make test or make check, which generates one id per invocation.}\"' && npm run test:formal && npm run test:size && LAZILY_CONFORMANCE_MANIFEST=build/conformance-fixtures-loaded.txt LAZILY_CONFORMANCE_KEY_MANIFEST=build/conformance-assertion-keys.txt LAZILY_CONFORMANCE_BLOCK_MANIFEST=build/conformance-assertion-blocks.txt LAZILY_CONFORMANCE_SCENARIO_MANIFEST=build/conformance-scenarios.txt sh -c 'mkdir -p build && for f in \"$LAZILY_CONFORMANCE_MANIFEST\" \"$LAZILY_CONFORMANCE_KEY_MANIFEST\" \"$LAZILY_CONFORMANCE_BLOCK_MANIFEST\" \"$LAZILY_CONFORMANCE_SCENARIO_MANIFEST\"; do printf \"# lazily-run-id %s\\n\" \"$LAZILY_CONFORMANCE_RUN_ID\" > \"$f\"; done && node --require ./test/support/conformance-manifest.cjs --test test/*.test.js'","bench":"node bench/context.bench.mjs","build":"npm run generate:protobuf && node --check src/index.js && node --check src/msgpack-codec.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/teardown-scope.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue-core.js && node --check src/queue.js && node --check src/thread-safe-queue.js && node --check src/async-queue.js && node --check src/merge.js && node --check src/relay.js && node --check src/ingress-core.js && node --check src/ingress.js && node --check src/thread-safe-ingress.js && node --check src/async-ingress.js && node --check src/rateshape.js && node --check src/membership.js && node --check src/coordination.js && node --check src/presence.js && node --check src/windowing.js && node --check src/resilience.js && node --check src/service.js && node --check src/temporal.js && node --check src/replay.js && node --check src/stdlib.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/indexeddb-outbox.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/graph-view.js && node --check src/signaling.js && node --check src/distributed.js && node --check src/protobuf-graph-boundary.js && node --check build/generated/graph-boundary.js && node scripts/update-size-limits.mjs","format":"prettier --check .","prepack":"npm run generate:protobuf","test:size":"size-limit","typecheck":"tsc -p tsconfig.json","format:fix":"prettier --write .","size:check":"node scripts/update-size-limits.mjs --check","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","size:update":"node scripts/update-size-limits.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs","generate:protobuf":"mkdir -p build/generated && pbjs -t static-module -w es6 -o build/generated/graph-boundary.js ../lazily-spec/proto/lazily/graph_boundary/v1/graph_boundary.proto && pbts -o build/generated/graph-boundary.d.ts build/generated/graph-boundary.js","test:interop-peer":"node bin/interop-peer.mjs --self-check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca2025d2-a249-483e-af8b-60e65ea35a00"}},"repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"11.19.0","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive maps (ReactiveMap/SourceMap/ComputedMap), the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"koffi":"^3.0.2","protobufjs":"8.7.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","prettier":"3.9.6","size-limit":"^12.1.0","typescript":"^5.6.0","@types/node":"^22.0.0","fake-indexeddb":"^6.2.5","protobufjs-cli":"2.6.1","@size-limit/preset-small-lib":"^12.1.0"},"_npmOperationalInternal":{"tmp":"tmp/lazily-js_0.33.0_1789478518619_0.14103057689144682","host":"s3://npm-registry-packages-npm-production"}},"0.34.0":{"_id":"@lazily-hub/lazily-js@0.34.0","bin":{"lazily-interop-peer":"bin/interop-peer.mjs"},"bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"dist":{"shasum":"4b7c73ad88373f7adae1722d0696bee1c29faa64","tarball":"https://registry.npmjs.org/@lazily-hub/lazily-js/-/lazily-js-0.34.0.tgz","fileCount":121,"integrity":"sha512-tSUWrpQddKQl5f7fS2xtmuSy3X9pGBYxIXKeZWQn0sAjTxABvfs/suKCYOegtnePxwvauMOPo/0CZ2Lpxxe+Yw==","signatures":[{"sig":"MEYCIQD1guR8SZphg0CstWH1rso2B68+B+4ipXDR1OWWmiF3kwIhANSx2Ea8m24manomBe02LXQ9mlD0qxyfsR62/Uc6wA/H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC4nn0IA4osDgIVyxlAc5KGpz9lAYAF3TCSVvMMjseduQIhAIYMjNE4oUQLI7b7WIYnaLOMDrbj3F/7Mda1W6t9RZFN"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@lazily-hub%2flazily-js@0.34.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1538020},"main":"src/index.js","name":"@lazily-hub/lazily-js","type":"module","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./ffi":{"node":"./src/ffi-node.js","types":"./src/ffi.d.ts","browser":"./src/ffi.js","default":"./src/ffi.js"},"./merge":{"types":"./src/merge.d.ts","default":"./src/merge.js"},"./queue":{"types":"./src/queue.d.ts","default":"./src/queue.js"},"./relay":{"types":"./src/relay.d.ts","default":"./src/relay.js"},"./replay":{"types":"./src/replay.d.ts","default":"./src/replay.js"},"./stdlib":{"types":"./src/stdlib.d.ts","default":"./src/stdlib.js"},"./ingress":{"types":"./src/ingress.d.ts","default":"./src/ingress.js"},"./service":{"types":"./src/service.d.ts","default":"./src/service.js"},"./presence":{"types":"./src/presence.d.ts","default":"./src/presence.js"},"./reactive":{"types":"./src/reactive.d.ts","default":"./src/reactive.js"},"./sem-tree":{"types":"./src/sem-tree.d.ts","default":"./src/sem-tree.js"},"./seq-crdt":{"types":"./src/seq-crdt.d.ts","default":"./src/seq-crdt.js"},"./temporal":{"types":"./src/temporal.d.ts","default":"./src/temporal.js"},"./rateshape":{"types":"./src/rateshape.d.ts","default":"./src/rateshape.js"},"./signaling":{"types":"./src/signaling.d.ts","default":"./src/signaling.js"},"./stable-id":{"types":"./src/stable-id.d.ts","default":"./src/stable-id.js"},"./text-crdt":{"types":"./src/text-crdt.d.ts","default":"./src/text-crdt.js"},"./transport":{"types":"./src/transport.d.ts","default":"./src/transport.js"},"./windowing":{"types":"./src/windowing.d.ts","default":"./src/windowing.js"},"./graph-view":{"types":"./src/graph-view.d.ts","default":"./src/graph-view.js"},"./membership":{"types":"./src/membership.d.ts","default":"./src/membership.js"},"./queue-core":{"types":"./src/queue-core.d.ts","default":"./src/queue-core.js"},"./resilience":{"types":"./src/resilience.d.ts","default":"./src/resilience.js"},"./statechart":{"types":"./src/statechart.d.ts","default":"./src/statechart.js"},"./async-queue":{"types":"./src/async-queue.d.ts","default":"./src/async-queue.js"},"./collections":{"types":"./src/collections.d.ts","default":"./src/collections.js"},"./distributed":{"types":"./src/distributed.d.ts","default":"./src/distributed.js"},"./thread-safe":{"types":"./src/thread-safe.d.ts","default":"./src/thread-safe.js"},"./coordination":{"types":"./src/coordination.d.ts","default":"./src/coordination.js"},"./ingress-core":{"types":"./src/ingress-core.d.ts","default":"./src/ingress-core.js"},"./async-ingress":{"types":"./src/async-ingress.d.ts","default":"./src/async-ingress.js"},"./state-machine":{"types":"./src/state-machine.d.ts","default":"./src/state-machine.js"},"./durable-client":{"types":"./src/durable-client.d.ts","default":"./src/durable-client.js"},"./reactive-async":{"types":"./src/reactive-async.d.ts","default":"./src/reactive-async.js"},"./instrumentation":{"types":"./src/instrumentation.d.ts","default":"./src/instrumentation.js"},"./reactive-family":{"types":"./src/reactive-family.d.ts","default":"./src/reactive-family.js"},"./indexeddb-outbox":{"types":"./src/indexeddb-outbox.d.ts","browser":"./src/indexeddb-outbox.js","default":"./src/indexeddb-outbox.js"},"./state-projection":{"types":"./src/state-projection.d.ts","default":"./src/state-projection.js"},"./thread-safe-queue":{"types":"./src/thread-safe-queue.d.ts","default":"./src/thread-safe-queue.js"},"./lossless-tree-crdt":{"types":"./src/lossless-tree-crdt.d.ts","default":"./src/lossless-tree-crdt.js"},"./thread-safe-ingress":{"types":"./src/thread-safe-ingress.d.ts","default":"./src/thread-safe-ingress.js"},"./async-reactive-family":{"types":"./src/async-reactive-family.d.ts","default":"./src/async-reactive-family.js"},"./protobuf-graph-boundary":{"types":"./src/protobuf-graph-boundary.d.ts","default":"./src/protobuf-graph-boundary.js"},"./latest-durable-projection":{"types":"./src/latest-durable-projection.d.ts","default":"./src/latest-durable-projection.js"},"./thread-safe-reactive-family":{"types":"./src/thread-safe-reactive-family.d.ts","default":"./src/thread-safe-reactive-family.js"},"./latest-durable-projection-core":{"types":"./src/latest-durable-projection-core.d.ts","default":"./src/latest-durable-projection-core.js"}},"gitHead":"d0131ea4b771562b62ccdcea2612dd70a47bc471","license":"Apache-2.0","scripts":{"test":"sh -c ': \"${LAZILY_CONFORMANCE_RUN_ID:?is unset, so the evidence files below could not be dated and every conformance rung would refuse them (#lzstalemanifest). Run make test or make check, which generates one id per invocation.}\"' && npm run test:formal && npm run test:size && LAZILY_CONFORMANCE_MANIFEST=build/conformance-fixtures-loaded.txt LAZILY_CONFORMANCE_KEY_MANIFEST=build/conformance-assertion-keys.txt LAZILY_CONFORMANCE_BLOCK_MANIFEST=build/conformance-assertion-blocks.txt LAZILY_CONFORMANCE_SCENARIO_MANIFEST=build/conformance-scenarios.txt sh -c 'mkdir -p build && for f in \"$LAZILY_CONFORMANCE_MANIFEST\" \"$LAZILY_CONFORMANCE_KEY_MANIFEST\" \"$LAZILY_CONFORMANCE_BLOCK_MANIFEST\" \"$LAZILY_CONFORMANCE_SCENARIO_MANIFEST\"; do printf \"# lazily-run-id %s\\n\" \"$LAZILY_CONFORMANCE_RUN_ID\" > \"$f\"; done && node --require ./test/support/conformance-manifest.cjs --test test/*.test.js'","bench":"node bench/context.bench.mjs","build":"npm run generate:protobuf && node --check src/index.js && node --check src/msgpack-codec.js && node --check src/transport.js && node --check src/shm-backend.js && node --check src/reactive.js && node --check src/teardown-scope.js && node --check src/reactive-async.js && node --check src/reactive-family.js && node --check src/async-reactive-family.js && node --check src/thread-safe.js && node --check src/thread-safe-reactive-family.js && node --check src/ffi.js && node --check src/ffi-node.js && node --check src/instrumentation.js && node --check src/state-machine.js && node --check src/statechart.js && node --check src/collections.js && node --check src/queue-core.js && node --check src/queue.js && node --check src/thread-safe-queue.js && node --check src/async-queue.js && node --check src/merge.js && node --check src/relay.js && node --check src/ingress-core.js && node --check src/ingress.js && node --check src/thread-safe-ingress.js && node --check src/async-ingress.js && node --check src/rateshape.js && node --check src/membership.js && node --check src/coordination.js && node --check src/presence.js && node --check src/windowing.js && node --check src/resilience.js && node --check src/service.js && node --check src/temporal.js && node --check src/replay.js && node --check src/stdlib.js && node --check src/sem-tree.js && node --check src/stable-id.js && node --check src/seq-crdt.js && node --check src/text-crdt.js && node --check src/indexeddb-outbox.js && node --check src/utf8-offsets.js && node --check src/lossless-tree-crdt.js && node --check src/state-projection.js && node --check src/graph-view.js && node --check src/signaling.js && node --check src/distributed.js && node --check src/protobuf-graph-boundary.js && node --check build/generated/graph-boundary.js && node scripts/update-size-limits.mjs","format":"prettier --check .","prepack":"npm run generate:protobuf","test:size":"size-limit","typecheck":"tsc -p tsconfig.json","format:fix":"prettier --write .","size:check":"node scripts/update-size-limits.mjs --check","bench:scale":"node --max-old-space-size=8192 bench/scale.bench.mjs","size:update":"node scripts/update-size-limits.mjs","test:formal":"node scripts/formal-check.mjs","benchmark-check":"node scripts/run-benchmarks.mjs --check","benchmark-update":"node scripts/run-benchmarks.mjs","generate:protobuf":"mkdir -p build/generated && pbjs -t static-module -w es6 -o build/generated/graph-boundary.js ../lazily-spec/proto/lazily/graph_boundary/v1/graph_boundary.proto && pbts -o build/generated/graph-boundary.d.ts build/generated/graph-boundary.js","test:interop-peer":"node bin/interop-peer.mjs --self-check"},"version":"0.34.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"ca2025d2-a249-483e-af8b-60e65ea35a00"}},"homepage":"https://github.com/lazily-hub/lazily-js#readme","repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"_npmVersion":"11.19.0","description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive maps (ReactiveMap/SourceMap/ComputedMap), the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + ","directories":{},"maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"sideEffects":false,"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","tsx":"^4.19.0","koffi":"^3.0.2","prettier":"3.9.6","protobufjs":"8.7.1","size-limit":"^12.1.0","typescript":"^5.6.0","@types/node":"^22.0.0","fake-indexeddb":"^6.2.5","protobufjs-cli":"2.6.1","@size-limit/preset-small-lib":"^12.1.0"},"peerDependencies":{"koffi":"^3.0.2","protobufjs":"8.7.1"},"peerDependenciesMeta":{"koffi":{"optional":true},"protobufjs":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lazily-js_0.34.0_1790659727011_0.7905524047132411"}}},"time":{"created":"2026-07-02T04:24:30.256Z","modified":"2026-09-29T05:28:47.448Z","1.0.2":"2026-07-02T04:24:30.536Z","1.0.3":"2026-07-02T05:30:15.024Z","0.4.0":"2026-07-03T20:11:52.112Z","0.5.0":"2026-07-03T21:05:35.671Z","0.6.1":"2026-07-09T00:27:54.789Z","0.7.0":"2026-07-09T02:30:24.880Z","0.9.0":"2026-07-11T05:52:45.108Z","0.10.0":"2026-07-11T19:08:38.069Z","0.11.0":"2026-07-11T19:11:44.097Z","0.12.0":"2026-07-11T20:12:00.830Z","0.13.0":"2026-07-12T03:42:01.426Z","0.14.0":"2026-07-12T05:32:25.918Z","0.15.0":"2026-07-13T04:07:56.018Z","0.16.0":"2026-07-13T06:38:55.908Z","0.18.0":"2026-07-13T20:50:49.887Z","0.19.0":"2026-07-14T05:51:48.072Z","0.20.0":"2026-07-16T19:18:49.517Z","0.21.0":"2026-07-17T21:13:37.267Z","0.23.0":"2026-07-17T22:54:22.121Z","0.24.0":"2026-07-18T04:53:55.257Z","0.25.0":"2026-07-20T01:43:17.421Z","0.26.0":"2026-07-22T06:39:13.000Z","0.27.0":"2026-07-22T07:50:03.313Z","0.28.0":"2026-07-26T02:12:59.304Z","0.29.0":"2026-07-26T08:13:49.325Z","0.29.1":"2026-07-26T18:59:40.029Z","0.31.0":"2026-07-29T01:44:17.205Z","0.32.0":"2026-09-03T20:37:09.113Z","0.33.0":"2026-09-15T13:21:58.764Z","0.34.0":"2026-09-29T05:28:47.102Z"},"bugs":{"url":"https://github.com/lazily-hub/lazily-js/issues"},"license":"Apache-2.0","homepage":"https://github.com/lazily-hub/lazily-js#readme","repository":{"url":"git+https://github.com/lazily-hub/lazily-js.git","type":"git"},"description":"Native JavaScript port of the lazily reactive core: a full reactive graph (Cell/Slot/Signal/Effect), sync/async/thread-safe keyed reactive maps (ReactiveMap/SourceMap/ComputedMap), the lazily-spec IPC wire types + C-ABI FFI boundary (isomorphic channel + ","maintainers":[{"name":"btakita","email":"brian.takita@gmail.com"}],"readme":"# lazily-js\n\nNative JavaScript port of the **lazily** reactive family. `@lazily-hub/lazily-js`\nis the JavaScript/TypeScript binding alongside [`lazily-rs`][rs],\n[`lazily-py`][py], [`lazily-zig`][zig], [`lazily-kt`][kt], and\n[`lazily-dart`][dart]. It ships:\n\n- a full reactive graph — the Cell kernel (`Context`, `Source`,\n  `Computed`, `Effect`; eager = an eager `Computed`, `computed().eager()`);\n- an async reactive graph (`AsyncContext`) for Promise-driven derivations, with\n  revision-guarded stale-completion discard, in-flight deduplication, and\n  cancellation;\n- the [`lazily-spec`][spec] IPC wire types (`Snapshot`, `Delta`, `CrdtSync`,\n  capability negotiation, and default-deny peer permissions);\n- keyed cell collections, move-minimized reconciliation, and a memoized\n  semantic tree;\n- move-aware sequence CRDT, Fugue/RGA text CRDT, and manufactured text identity;\n- a Cell-backed flat state machine plus a full Harel/SCXML state-chart\n  interpreter with the typed `ChartBuilder` API;\n- the distributed plane — the WebSocket signaling protocol + client, a\n  `DataChannel` transport seam with permission-filtering sink/source, a browser\n  `RTCPeerConnection` adapter, and the `CrdtPlaneRuntime` anti-entropy engine;\n- a koffi-backed state-projection consumer for agent-doc host projections.\n\n> **Package note.** Earlier `@lazily-hub/js` releases were only a state-projection\n> consumer. `@lazily-hub/lazily-js` is the current full reactive binding.\n\nPure ES modules. The reactive, IPC, collections, CRDT, state-machine, and\nstate-chart modules have no runtime dependencies; `koffi` is loaded only when\nthe FFI projection transport is used.\n\n## Feature Set\n\nCoverage by feature family across every binding, generated from\n`coverage.json` in lazily-spec. Legend: ✅ shipped ·\n`~` partial · `—` absent · `⊘` not applicable. The canonical matrix with per-cell\nnotes and platform carve-outs lives in\n[`lazily-spec` § Cross-Language Coverage](https://github.com/lazily-hub/lazily-spec/blob/main/docs/coverage.md).\n\n<!-- coverage-table:start -->\n#### Summary — family × language\n\n| Family | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |\n| --------- | :----: | :------: | :------: | :--: | :----: | :---: | :--: | :---: | :--: | :--------: |\n| Reactive graph | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ~ |\n| Materialization | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| Family sync | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| Statecharts | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| Keyed collections | ✅ | ✅ | ✅ | ✅ | ✅ | ~ | ✅ | ✅ | ✅ | — |\n| Reactive queue | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| Broadcast topic | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| Work queue | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| CRDT data types | ✅ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ✅ | — |\n| Lossless tree | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| Egress | ✅ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ |\n| Ingress | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| Wire codec | ✅ | ✅ | ✅ | ✅ | ~ | ✅ | ✅ | ✅ | ✅ | — |\n| Transport & FFI | ✅ | ✅ | ✅ | ~ | ~ | ✅ | ✅ | ~ | ✅ | — |\n| Message passing | ✅ | ✅ | ✅ | ✅ | ✅ | ~ | ✅ | ✅ | ✅ | — |\n| Reliable sync | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | — |\n| Durable owner | ✅ | — | — | — | — | — | — | — | — | — |\n| Durable capability tiers | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ |\n| Distributed plane | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| Causal receipts | ~ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| Security boundary | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| Membership | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| Coordination | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| Presence | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| Temporal | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| Rate shaping | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| Windowing | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| Resilience | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| Portable stdlib | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| Service plane | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n| Instrumentation | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |\n\n**Roll-up rule:** a family cell is `✅` only when *every required* row in that family is `✅`; `~` when the family is mixed (some shipped or partial); `—` when no required row is shipped or partial; `⊘` only when every required row in the family is not applicable. Rows the spec marks **MAY** (`optional`) are excluded from the roll-up — declining an optional feature is not a gap.\n\nA family cell summarises 82 feature rows. For row-level marks, per-cell notes, and platform carve-outs see [the canonical coverage matrix in `lazily-spec`](https://github.com/lazily-hub/lazily-spec/blob/main/docs/coverage.md).\n<!-- coverage-table:end -->\n\nTwo JS ✅ marks are backed by runtime-specific mechanisms while keeping the core isomorphic:\n\n- **Thread-safe** (`ThreadSafeReactiveMap`, `Thread-safe context`) — cross-realm mutual exclusion via a `SharedArrayBuffer` + `Atomics` reentrant mutex shared across Web Workers / `worker_threads`; degrades to a single-realm guard where shared memory is unavailable (e.g. a browser without cross-origin isolation), which is sound because no shared memory means no cross-realm concurrency.\n- **C-ABI FFI** — the normative codec + in-process `FfiChannel` are pure-JS and run unchanged in the browser; the Node build additionally binds the real `lazily` shared library (`lazily_ffi_channel_*`) via koffi. Both speak the identical byte contract, so browser and native are drop-in interchangeable.\n\nCRDT convergence and the wire protocol are pinned by the shared conformance fixtures\nand JSON Schemas in `lazily-spec` and the Lean models in `lazily-formal`.\n## Packages\n\n| Import | What it is |\n|--------|------------|\n| `@lazily-hub/lazily-js` | `lazily-spec` IPC wire types: `Snapshot`, `Delta`, `DeltaOp`, `IpcMessage` (`Snapshot` / `Delta` / `CrdtSync`), `NodeState`, `IpcValue`, `PeerPermissions`, `SessionHandshake`, `BINDING_CAPABILITIES` |\n| `@lazily-hub/lazily-js/transport` | Cross-process zero-copy transport (`#lzzcpy`): `ShmBlobArena`, `InProcessBackend` / `ArrowBackend`, `BlobRouter`, `spillMessage` / `resolveValue`, and the FFI-gated `createShmBackend` (Node/Bun/Deno). Isomorphic — no FFI import; browser-safe |\n| `@lazily-hub/lazily-js/reactive` | Reactive dependency graph — the Cell kernel: `createContext` (alias `Context`), `Source`, `Computed`, `Effect` (eager = an eager `Computed`, `computed().eager()`). Closure-based core (#lzjsclosure) — 2-8x faster reads than the prior class implementation |\n| `@lazily-hub/lazily-js/reactive-async` | Async reactive graph: `AsyncContext` — Promise-driven slots/effects with revision-guarded stale-completion discard, in-flight dedup, and cancellation |\n| `@lazily-hub/lazily-js/reactive-family` | Unified keyed reactive map: `ReactiveMap<K,V,H>` (reactive membership/order, `getOrInsertWith` mint-on-access, `remove`, `move`) + `SourceMap` (adds cell-only `set` + eager `entry`/`entryWith`) and `ComputedMap` (lazy `getOrInsertWith` + eager `materializeAll`; no `set`) specializations. No eager/lazy mode flag (`#reactivemap`) |\n| `@lazily-hub/lazily-js/async-reactive-family` | Async keyed reactive map: `AsyncReactiveMap` + `AsyncSourceMap` / `AsyncComputedMap` over `AsyncContext` — eventual transparency (a pending slot observes `undefined` and resolves to the canonical value; eager ≡ lazy once resolved) (`#reactivemap`) |\n| `@lazily-hub/lazily-js/thread-safe` | Lock-backed reactive context: `ThreadSafeContext` (`Send + Sync` flavor of `Context`) + `AtomicMutex` — a real `SharedArrayBuffer` + `Atomics` reentrant mutex giving cross-worker mutual exclusion; degrades to a single-realm guard where shared memory is unavailable |\n| `@lazily-hub/lazily-js/thread-safe-reactive-family` | Thread-safe keyed reactive map: `ThreadSafeReactiveMap` + `ThreadSafeSourceMap` / `ThreadSafeComputedMap` — mutex-guarded present set with first-writer-wins materialization confluence (`#reactivemap`) |\n| `@lazily-hub/lazily-js/ffi` | C-ABI FFI boundary (`schemas/ffi.json`): message codec (`encodeMessage` / `decodeMessage` / `validateMessage` / `kindOf`, `LazilyFfiStatus` / `LazilyFfiMessageKind`) + `FfiChannel` FIFO. Isomorphic core (browser shim); the Node build additionally exposes `NativeFfiChannel` / `loadNativeChannel` over the real `lazily_ffi_channel_*` C ABI via koffi |\n| `@lazily-hub/lazily-js/instrumentation` | In-library instrumentation/benchmark API: `benchmark`, `runBenchmarkSuite`, `BenchmarkResult`, `withInstrumentation` — plus opt-in reactive-core counters via `new Context({ instrument: true })` / `instrumentationSnapshot()` |\n| `@lazily-hub/lazily-js/state-machine` | Flat finite-state-machine kernel backed by a reactive `Cell` |\n| `@lazily-hub/lazily-js/statechart` | Harel/SCXML chart interpreter plus `ChartBuilder`, `StateBuilder`, `TransitionBuilder` |\n| `@lazily-hub/lazily-js/collections` | `SourceMap`, `SourceTree`, keyed reconciliation, and LIS move minimization |\n| `@lazily-hub/lazily-js/sem-tree` | Memoized semantic tree over `SourceTree`-shaped data |\n| `@lazily-hub/lazily-js/seq-crdt` | Move-aware sequence CRDT using independent LWW value / position / deletion registers |\n| `@lazily-hub/lazily-js/text-crdt` | Fugue/RGA character CRDT |\n| `@lazily-hub/lazily-js/stable-id` | Manufactured text identity: anchors, content hashes, similarity alignment |\n| `@lazily-hub/lazily-js/signaling` | WebSocket signaling protocol: `ClientMessage` / `ServerMessage`, `SignalingClient`, `SignalingRoom` routing (anti-spoof, roster), `SignalingPermissions` |\n| `@lazily-hub/lazily-js/distributed` | Distributed plane: `DataChannel` seam + `InMemoryDataChannel`, `WebRtcSink` / `WebRtcSource`, `CrdtPlaneRuntime` anti-entropy, and the browser `RTCPeerConnection` adapter |\n| `@lazily-hub/lazily-js/state-projection` | koffi FFI consumer for agent-doc `DocumentStateProjection` |\n| `@lazily-hub/lazily-js/ingress-core` | The graph-agnostic ingress admission algebra: `IngressCore`, keyed lifecycle scopes, the normative admission order, the bounded reorder buffer, the coalescing hot window, the three-channel receipt log, and the `InProcIngress` transport seam (`#designimplementtransport`) |\n| `@lazily-hub/lazily-js/ingress` | Single-threaded ingress shell: `IngressCell` over `Context` — four reader kinds per scope (`value` / `readiness` / `authority` / `retry`), three receipt readers, and a derived schedule (`#designimplementtransport`) |\n| `@lazily-hub/lazily-js/thread-safe-ingress` | `Send + Sync` ingress shell: `ThreadSafeIngressCell` — the core guarded by its own mutex, invalidation run with that lock released and fanned out in ONE frontier walk (`#designimplementtransport`) |\n| `@lazily-hub/lazily-js/async-ingress` | Async ingress shell: `AsyncIngressCell` over `AsyncContext` — admission stays synchronous; only reader materialization is async-coloured (`#designimplementtransport`) |\n| `@lazily-hub/lazily-js/latest-durable-projection-core` | Graph-independent `LatestDurableProjectionCore<K,V>` state machine for conflated, retryable, generation-fenced egress |\n| `@lazily-hub/lazily-js/latest-durable-projection` | Sync, thread-safe, and async reactive shells over the latest-durable core |\n\n## Latest durable projection\n\n`LatestDurableProjectionCore<K,V>` keeps the newest desired value per key while\nallowing at most one claimed effect for that key. `upsertDesired` assigns a\nmonotone epoch, `claim` returns the exact generation/epoch/value envelope to\nsend, and `ackApplied` advances `durableThrough` only for that claimed envelope.\n`failRetryable` returns an unsuperseded failure to pending state. `reconnect`\nadvances the generation fence and requeues old in-flight work unless a newer\ndesired epoch has already superseded it, so acknowledgements from an old actor\ncannot erase current intent.\n\nUse `LatestDurableProjection` with `Context`,\n`ThreadSafeLatestDurableProjection` with `ThreadSafeContext`, or\n`AsyncLatestDurableProjection` with `AsyncContext`. The shells expose\n`generationState`, `snapshotState`, and memoized `entryState(key)` readers;\ntransitions remain synchronous in every flavor. Their behavior replays\n`lazily-spec` v0.38.0's canonical\n`conformance/egress/latest_durable_projection.json` fixture and corresponds to\n`LazilyFormal.LatestDurableProjectionCore` in lazily-formal v0.38.1.\n\n## Reactive graph\n\n`Context` (alias `createContext`, from `@lazily-hub/lazily-js/reactive`) mirrors\nthe single-threaded lazily-rs `Context` semantics in native JavaScript. The\nreactive core is implemented with the **closure factory technique** (#lzjsclosure,\nrmemo-style): `createContext()` returns an object whose methods close over\ncaptured graph state, and nodes are plain objects with a numeric discriminator\nreplacing `instanceof`. V8 inlines these small monomorphic closures more\naggressively than `class` + `#private` methods, so the read/invalidate hot paths\nrun 2-8x faster than the prior class implementation (see `bench/context.bench.mjs`\nand `BENCHMARKS.md`). Both `createContext()` and the historical `new Context()`\nare the same function — an alias, not a wrapper.\n\nThe family is the **Cell kernel** (`#lzcellkernel`, naming v2) — `Cell` is the\nvalue-node *concept* over two value kinds, and the bare kind name is the\n**handle** a caller holds; `Effect` sits outside the hierarchy:\n\n- **Source** — a value written from outside (`ctx.source(v)`); exposes\n  `get`/`set`/`merge`. `ctx.source(v, policy)` folds `.merge` under an associative\n  `MergePolicy`, so `Source` subsumes the former `MergeCell` (a keep-latest\n  `Source` is the plain cell). (v1 `SourceCell`.)\n- **Computed** — a value computed from upstream (`ctx.computed(f)`); exposes\n  `get` and **not** `set`/`merge`. `computed` is **always guarded**\n  (an equal recompute suppresses downstream — matches TC39 `Signal.Computed`).\n  (v1 `FormulaCell`.)\n- **Effect** — side-effecting sink with cleanup; a value-less node. (v1\n  `EffectHandle`.)\n\n**The read/write split is by method presence.** JavaScript has no compile-time\nkind gate and (by design) no runtime one, so a `Source` object simply has\n`set`/`merge` and a `Computed` object does not.\n\n**Eager is an eager computed, not a kind.** `ctx.computed(f).eager()` attaches a\npuller `Effect` that keeps the computed materialized as soon as a dependency\ninvalidates; `.eager()` is idempotent and returns the same handle, `.lazy()`\nreverts it, and `.isEager()` queries the state. This retires the former `Signal`.\n\nDependencies are discovered dynamically while a computed/effect computes.\nInvalidation is pull-based and glitch-free; every computed uses an equality\nguard to suppress downstream work when a recompute produces the same value.\n`batch` coalesces invalidations and effect reruns.\n\n```js\nimport { createContext } from \"@lazily-hub/lazily-js/reactive\";\n\nconst ctx = createContext(); // idiomatic; `new Context()` is the same call\nconst a = ctx.source(2);\nconst b = ctx.source(3);\n\nconst sum = ctx.computed(() => a.get() + b.get());\nsum.get(); // 5\n\na.set(10);\nsum.get(); // 13, recomputed lazily on read\n\nconst parity = ctx.computed(() => (a.get() % 2 === 0 ? \"even\" : \"odd\")).eager();\na.set(11);\nparity.get(); // \"odd\", already materialized (eager)\n```\n\n`memo` and the unguarded `computed` are removed (folded into the guarded\n`computed`); `SourceCell`/`FormulaCell`/`CellHandle`/`SlotHandle` handle names\nare retired. The `cell`/`slot`/`signal` constructors and the functional\n`ctx.get(handle)` / `ctx.set(source, value)` are the canonical accessors;\n`getCell` / `setCell` and `cell` / `slot` remain deprecated compatibility aliases.\n\n## Async reactive context\n\n`AsyncContext` (from `@lazily-hub/lazily-js/reactive-async`) is a **separate**\nreactive surface for derivations whose values are produced by `async` functions.\nIt is not an overload of the synchronous `Context`: futures introduce in-flight\nstate, stale completion, cancellation, and dependency tracking across `await`\nthat the synchronous graph does not have. Cells remain the synchronous input\nlayer; computed slots, memos, and effects are async.\n\nEach async slot runs an `Empty → Computing → Resolved/Error` state machine with\n**revision-guarded publish** (a completion is published only if the slot's\nrevision is still current, so a stale result is discarded), **in-flight\ndeduplication** (concurrent `getAsync` callers share one compute), and\ncooperative cancellation. Async effects serialize reruns and always run the\nprevious cleanup before the next body.\n\n```js\nimport { AsyncContext } from \"@lazily-hub/lazily-js/reactive-async\";\n\nconst ctx = new AsyncContext();\nconst userId = ctx.source(1);\n\nconst profile = ctx.computedAsync(async (cctx) => {\n  const id = cctx.get(userId); // dependency registered before the await\n  return await fetchProfile(id);\n});\n\nawait ctx.getAsync(profile); // spawns the compute, awaits the value\nctx.get(profile); // synchronous cached read once resolved (undefined while pending)\n\nctx.set(userId, 2); // supersedes any in-flight compute; slot re-resolves\nawait ctx.getAsync(profile); // the profile for user 2\n```\n\n## Keyed reactive maps (`ReactiveMap` / `SourceMap` / `ComputedMap`)\n\n`ReactiveMap<K, V, H>` (from `@lazily-hub/lazily-js/reactive-family`) is the ONE\nunified **keyed reactive collection** (`#reactivemap`): reactive membership +\norder, `getOrInsertWith` mint-on-access, `remove`, and atomic `move`, generic\nover the entry's handle kind. Its two specializations are the concrete types you\nuse:\n\n- **`SourceMap<K, V>`** — input-cell entries. Adds cell-only `set(key, value)` (an\n  input is settable) and eager value-minting (`entry` / `entryWith`).\n- **`ComputedMap<K, V>`** — derived-slot entries. `getOrInsertWith(key, factory)`\n  mints a slot on **first access** (\"materialize on pull\", **lazy**);\n  `materializeAll(keys, factory)` pre-mints the keyset up front (**eager**). A\n  slot's value is derived, so `ComputedMap` has **no `set`**.\n\nThese were called `CellMap` / `SlotMap` before the v2 kernel renamed the node\nkinds to `Source` and `Computed`. The old names are still exported as\n**deprecated aliases** — `CellMap`, `SlotMap`, `AsyncCellMap`, `AsyncSlotMap`,\n`ThreadSafeCellMap`, `ThreadSafeSlotMap`, and `CellMap` from\n`@lazily-hub/lazily-js/collections` — so existing imports keep working. Prefer\nthe new names.\n\nThere is **no eager/lazy mode flag** — eager is the pre-mint loop, lazy is\nmint-on-access, and they are **observationally transparent**: a read returns the\nsame value either way; only allocation timing and memory change. Lazy pays off\nonly for sparsely-touched large keyed address spaces.\n\n```js\nimport { Context } from \"@lazily-hub/lazily-js/reactive\";\nimport { ComputedMap } from \"@lazily-hub/lazily-js/reactive-family\";\n\nconst ctx = new Context();\n\n// A derived (slot) map of key*3 over a large address space, built lazily:\n// nothing is allocated until a key is read.\nconst map = new ComputedMap(ctx);\nmap.presentCount(); // 0\n\nmap.getOrInsertWith(5, (k) => k * 3); // 15 — first read materializes just this entry\nmap.presentCount(); // 1\nmap.isPresent(5); // true\nmap.isPresent(6); // false\n\n// Eager pre-mints the same values up front — observationally identical.\nconst eager = new ComputedMap(ctx);\neager.materializeAll([0, 1, 2, 3], (k) => k * 3);\neager.get(2) === map.getOrInsertWith(2, (k) => k * 3); // true\n```\n\n## State machine and state charts\n\n`StateMachine` is the flat finite-state-machine kernel: a pure\n`(state, event) -> nextState | null` transition backed by a reactive `Cell`.\nAccepted self-transitions to an equal state are suppressed by the Cell equality\nguard.\n\n```js\nimport { Context } from \"@lazily-hub/lazily-js/reactive\";\nimport { StateMachine } from \"@lazily-hub/lazily-js/state-machine\";\n\nconst ctx = new Context();\nconst light = new StateMachine(ctx, \"Red\", (state, event) =>\n  event === \"advance\" ? { Red: \"Green\", Green: \"Yellow\", Yellow: \"Red\" }[state] : null,\n);\n\nlight.send(\"advance\"); // true\nlight.state; // \"Green\"\n```\n\n`StateChart` implements the full Harel/SCXML subset from\n[`lazily-spec/docs/state-charts.md`][statecharts]: compound states, parallel\nregions, shallow/deep history, entry/exit/transition actions, named guards\n(fail-closed), internal/external transitions, and final leaves. Charts are\n**compute, not protocol**: the chart itself is not serialized as a special wire\nkind; only an application-level active configuration would cross IPC as ordinary\npayload state.\n\nThe normative definition path is the declarative JSON chart consumed by the\nshared conformance fixtures:\n\n```js\nimport { ChartDef, StateChart } from \"@lazily-hub/lazily-js/statechart\";\n\nconst def = ChartDef.fromChart({\n  initial: \"root\",\n  states: {\n    root: { parallel: true },\n    flow: { parent: \"root\", initial: \"idle\" },\n    idle: { parent: \"flow\", on: { go: { target: \"done\", guard: \"ready\" } } },\n    done: { parent: \"flow\", kind: \"final\" },\n    net: { parent: \"root\", initial: \"up\" },\n    up: { parent: \"net\", on: { drop: \"down\" } },\n    down: { parent: \"net\", on: { restore: \"up\" } },\n  },\n});\n\nconst chart = new StateChart(def);\nchart.activeLeaves(); // [\"idle\", \"up\"]\nchart.send(\"drop\"); // true\nchart.send(\"go\", { ready: true }); // true\nchart.matches(\"done\"); // true\n```\n\nFor typed JavaScript/TypeScript authoring, `ChartBuilder` builds the same\n`ChartDef` through the same validation/assembly path. It is an ergonomic API,\nnot a second semantics:\n\n```js\nimport {\n  ChartBuilder,\n  StateBuilder,\n  StateChart,\n} from \"@lazily-hub/lazily-js/statechart\";\n\nconst def = new ChartBuilder()\n  .state(StateBuilder.parallel(\"root\"))\n  .state(StateBuilder.compound(\"flow\", \"idle\").parent(\"root\"))\n  .state(StateBuilder.atomic(\"idle\").parent(\"flow\").onGuarded(\"go\", \"done\", \"ready\"))\n  .state(StateBuilder.final(\"done\").parent(\"flow\"))\n  .state(StateBuilder.compound(\"net\", \"up\").parent(\"root\"))\n  .state(StateBuilder.atomic(\"up\").parent(\"net\").on(\"drop\", \"down\"))\n  .state(StateBuilder.atomic(\"down\").parent(\"net\").on(\"restore\", \"up\"))\n  .build();\n\nconst chart = new StateChart(def);\nchart.send(\"go\", { ready: false }); // false, guards fail closed\n```\n\n## Keyed collections and semantic tree\n\n`SourceMap` and `SourceTree` implement the lazily-spec keyed collections layer:\nvalue, membership, and order readers invalidate independently; stable handles\nsurvive moves; and an atomic move bumps order without touching values.\n`reconcileCollections` emits the LIS-minimized `{ insert, remove, move, update }`\noperation set. `SemTree` adds a memoized ancestor-chain fold: editing one leaf\nrecomputes only that leaf's ancestor path, and equal folded results are\nsuppressed by the computed equality guard.\n\n```js\nimport { SourceMap, reconcileCollections } from \"@lazily-hub/lazily-js/collections\";\nimport { Context } from \"@lazily-hub/lazily-js/reactive\";\nimport { SemTree } from \"@lazily-hub/lazily-js/sem-tree\";\n\nconst map = SourceMap.from({ order: [\"a\", \"b\"], values: { a: 1, b: 2 } });\nmap.moveBefore(\"b\", \"a\"); // order reader invalidates; value readers do not\n\nreconcileCollections(\n  { order: [\"a\", \"b\"], values: { a: 1, b: 2 } },\n  { order: [\"b\", \"a\", \"c\"], values: { a: 1, b: 2, c: 3 } },\n).ops; // move-minimized patch\n\nconst ctx = new Context();\nconst rootSpec = {\n  id: \"root\",\n  value: 0,\n  children: {\n    order: [\"leaf\"],\n    values: { leaf: { id: \"leaf\", value: 1 } },\n  },\n};\nconst tree = new SemTree(ctx, rootSpec, (value, children) =>\n  value + children.reduce((sum, child) => sum + child, 0),\n);\n\ntree.value(); // 1\ntree.setValue(\"leaf\", 99); // only the ancestor chain recomputes\n```\n\n## Competing-consumer work queue\n\nThe `queue` package exports `WorkQueueCell`, a pull-based local authority with\nexclusive FIFO claims, stable item IDs, fresh delivery IDs per attempt,\nworker-owned ack/nack, strict visibility-timeout redelivery, bounded attempts,\nand DLQ routing. Every mutation reports exact `pending_len` / `is_empty` /\n`in_flight_len` / `dead_letter_len` invalidation metadata.\n\n```js\nimport { WorkQueueCell } from \"@lazily-hub/lazily-js/queue\";\n\nconst work = new WorkQueueCell({ visibility_timeout: 30, max_deliveries: 3 });\nwork.push(\"render-report\");\nconst delivery = work.claim(\"worker-a\", 100).returns;\nwork.ack(\"worker-a\", delivery.delivery_id);\n```\n\nThe instance serializes local claims; distributed/HA assignment still requires\na leader or consensus-committed assignment log.\n\n## Transport-agnostic reactive ingress\n\nThe ingress family replaces the four accidental mechanisms a remote-stream client\nusually grows — a `refresh()` loop, a hand-rolled relevance check, a reconnect\npath that forgets what it applied, and transport-shaped consumer code — with\nderives over one keyed admission plane. The transport is a value the primitive\nnever touches: an envelope carries its own provenance (`generation`, `sequence`,\n`stampedAt`), so a WebSocket frame, an RPC response, and a polled page are the\nsame input once decoded. Spec: `lazily-spec/docs/transport-ingress.md`.\n\nThe admission order is normative — lifecycle, generation fence, freshness,\ngeneration handoff, dedupe, ordering, backpressure, merge. Two of those orderings\nare load-bearing: the **fence outranks dedupe** (else a zombie producer reads as\nan ordinary duplicate) and **freshness outranks ordering** (else an expired\nenvelope takes a reorder slot and a slow zombie starves live data).\n\n`IngressCore` is the graph-agnostic algebra; every mutator returns which reader\nkinds the transition dirtied, and each of the three shells clears exactly that set\non its own graph in one frontier walk. Readiness, authority, and retry are\n`Computed`s, so a buffered out-of-order envelope, a `tick` inside the freshness\nhorizon, and an empty drain each invalidate **nothing**.\n\n| Flavor | Type | Context |\n|--------|------|---------|\n| single-threaded | `IngressCell` | `Context` |\n| `Send + Sync` | `ThreadSafeIngressCell` | `ThreadSafeContext` |\n| async | `AsyncIngressCell` | `AsyncContext` |\n\n```js\nimport { Context } from \"@lazily-hub/lazily-js/reactive\";\nimport { IngressCell, ingressEnvelope } from \"@lazily-hub/lazily-js/ingress\";\nimport { Sum } from \"@lazily-hub/lazily-js/merge\";\n\nconst ctx = new Context();\nconst ingress = new IngressCell(ctx, {\n  merge: Sum,\n  policy: { reorderWindow: 4, freshnessHorizon: 100 },\n});\n\ningress.admit(ingressEnvelope(\"room-7\", 1, 0, 0, 5));\ningress.admit(ingressEnvelope(\"room-7\", 1, 2, 0, 4)); // buffered: invalidates nothing\ningress.admit(ingressEnvelope(\"room-7\", 1, 1, 0, 2)); // flushes 5 + 2 + 4 as ONE change\n\ningress.value(\"room-7\"); // 11  (the coalesced hot window)\ningress.readiness(\"room-7\"); // \"ready\"\ningress.drain(\"room-7\"); // 11 — an egress, NOT an ack: the watermark does not move\n```\n\nAdmission is **not** async-coloured: `AsyncIngressCell`'s mutators return plain\nvalues, because an admission decision is a function of the fence, the watermark,\nthe reorder buffer, and the observed clock. Only its reads resolve through\n`getAsync`, because `AsyncContext` has no synchronous compute constructor —\nthe same single async obligation `AsyncReactiveMap` carries.\n\n## CRDTs\n\n`SeqCrdt` is the move-aware sequence CRDT: each element has independent LWW\nregisters for value, position, and deletion, so a move is one position\nassignment rather than delete plus reinsert. `TextCrdt` is a Fugue/RGA\ncharacter CRDT: concurrent same-point inserts are preserved, deletes are sticky\ntombstones, and merge is commutative / associative / idempotent. Both expose\ntombstone GC behind caller-supplied causal-stability watermarks. `TextCrdt`\nalso satisfies the `CrdtTree` document contract: its snapshot is the delta from\nan empty frontier, so full hydration and incremental exchange preserve the same\nidentity-bearing state.\n\n```js\nimport { SeqCrdt } from \"@lazily-hub/lazily-js/seq-crdt\";\nimport { TextCrdt } from \"@lazily-hub/lazily-js/text-crdt\";\n\nconst seq = new SeqCrdt(1);\nseq.insertBack(\"a\", 0, 1);\nseq.moveAfter(\"a\", \"b\", 10);\n\nconst text = TextCrdt.fromStr(1, \"hi\");\nconst peer = text.fork(2);\npeer.insert(2, \"!\");\ntext.merge(peer); // converges\n```\n\n## Durable outbox stores\n\nThe root `Outbox` class owns one append/ack/prune/replay protocol over the\nfive-operation `OutboxStore` boundary. `InMemoryStore` exercises that path in\ntests. Browsers can open an `IndexedDbStore` from\n`@lazily-hub/lazily-js/indexeddb-outbox`; await `append` before transport send\nand `ackThrough` before treating an acknowledgement as committed. Reopening the\nsame database and channel restores the durable cursor and only unacknowledged\nframes.\n\n## IPC wire types and capability negotiation\n\nEvery IPC value round-trips the canonical externally-tagged\n[`lazily-spec`][spec] JSON shape through `toWire()` / `fromWire()`.\n`IpcMessage` adds `encodeJson()` / `decodeJson()`. `Snapshot` and `Delta`\nrepresent the single-writer graph-state plane; `CrdtSync` carries the\nmulti-writer CRDT anti-entropy plane. `PeerPermissions` is default-deny and\nfilters unreadable nodes/ops out of snapshots and deltas. `SessionHandshake`\nperforms the fail-closed protocol/version/codec/feature check before graph\nframes flow.\n\n```js\nimport {\n  Delta,\n  DeltaOp,\n  IpcMessage,\n  NodeSnapshot,\n  PeerPermissions,\n  RemoteOp,\n  Snapshot,\n} from \"@lazily-hub/lazily-js\";\n\nconst snapshot = new Snapshot({\n  epoch: 7,\n  nodes: [NodeSnapshot.payload(1, \"counter\", new Uint8Array([42]))],\n  roots: [1],\n});\n\nconst wire = IpcMessage.snapshot(snapshot).encodeJson();\nIpcMessage.decodeJson(wire).snapshot.epoch; // 7\n\nconst delta = Delta.next(7, [DeltaOp.cellSet(1, [43])]);\nIpcMessage.delta(delta).toWire();\n\nconst permissions = new PeerPermissions();\npermissions.allow(10, RemoteOp.read(1));\nsnapshot.filterReadable(permissions, 10).nodes.length; // 1\nsnapshot.filterReadable(permissions, 11).nodes.length; // 0\n```\n\n`BINDING_CAPABILITIES` advertises the JS binding truthfully: reactive core,\nIPC, CRDT, keyed collections, semantic tree, sequence/text CRDT, stable-id,\nstate machine, state charts, permissions, capability negotiation, async context,\nsignaling, and the WebRTC transport are shipped; C-ABI FFI is `none` because\nbrowser/Worker JS cannot host a native in-process ABI. The same payload types\ncan still be carried by any transport a host application owns.\n\n## Cross-process zero-copy transport\n\n`@lazily-hub/lazily-js/transport` implements the pluggable blob-backend\ntransport (`#lzzcpy`). A large payload is not copied through the wire codec: the\nproducer **spills** it to a backend (which mints a `ShmBlobRef` descriptor) and\nships only the descriptor; the receiver **routes** the descriptor by its\n`backend` discriminator and **resolves** it zero-copy — reading the backend's own\nbytes in place. `ShmBlobRef` gained an optional `backend` field (`shm` | `arrow`\n| `in_process`) that defaults to `shm` and is omitted from the wire, so every\npre-transport descriptor round-trips byte-for-byte.\n\nThe module is **isomorphic**: it imports no FFI, so it bundles and runs in the\nbrowser. `InProcessBackend`, `ArrowBackend`, the `BlobRouter`, and the\nspill/resolve policy are pure JS and available everywhere (including a\nmain-thread ↔ Web Worker deployment).\n\n```js\nimport {\n  BlobRouter,\n  InProcessBackend,\n  ArrowBackend,\n  spillMessage,\n} from \"@lazily-hub/lazily-js/transport\";\nimport { Delta, DeltaOp, IpcMessage, IpcValue } from \"@lazily-hub/lazily-js\";\n\nconst backend = new InProcessBackend(); // or ArrowBackend for columnar payloads\nconst big = IpcValue.inline(new Uint8Array(4096));\nconst { message, spilledBytes } = spillMessage(\n  IpcMessage.delta(new Delta({ baseEpoch: 0, epoch: 1, ops: [DeltaOp.slotValue(7, big)] })),\n  backend,\n); // message now carries a small SharedBlob descriptor; spilledBytes === 4096\n\nconst router = new BlobRouter().register(backend);\nrouter.resolve(message.delta.ops[0].payload); // Uint8Array view, zero copy\n```\n\nThe genuine **cross-process** `shm` backend (POSIX `shm_open` + `mmap`) is loaded\nlazily and only where a runtime provides FFI — Node (via `koffi`), Bun (`bun:ffi`),\nor Deno (`Deno.dlopen`, needs `--allow-ffi --unstable-ffi`). A peer process on the\nsame host that attaches the same name resolves the descriptor without copying\nacross the process boundary. In the browser (or any runtime without FFI)\n`createShmBackend` rejects with `ShmUnavailableError`; guard with `shmSupported()`\nand fall back to `InProcessBackend` / `ArrowBackend`.\n\n```js\nimport { createShmBackend, shmSupported } from \"@lazily-hub/lazily-js/transport\";\n\nif (shmSupported()) {\n  const shm = await createShmBackend(\"my-session\", { capacity: 1 << 20 });\n  const ref = shm.write(new Uint8Array([1, 2, 3])); // ref.backend === \"shm\"\n  // ...ship `ref` to a peer; the peer attaches `createShmBackend(\"my-session\",\n  // { capacity: 1 << 20, create: false })` and calls `shm.readView(ref)`.\n  shm.close();\n}\n```\n\nAll three runtimes are verified end-to-end, including cross-runtime interop: a\nNode process writes a region that a separate Deno process attaches and resolves,\nproving the layout is byte-identical across FFI implementations. The `shm` region\nis a bump-allocated arena with a fixed header (magic / version / capacity / epoch\n/ generation / cursor) and per-entry `{ generation, epoch, len, checksum }`\nvalidation.\n\n## Distributed plane\n\nThe `@lazily-hub/lazily-js/signaling` and `@lazily-hub/lazily-js/distributed`\nentry points ship the distributed plane. Signaling is the kebab-tagged discovery\nwire protocol (`ClientMessage` / `ServerMessage`), a transport-agnostic\n`SignalingRoom` that enforces the anti-spoof forwarded-`from` invariant, and a\n`SignalingClient` over a pluggable socket seam. The distributed module is the\nWebRTC DataChannel IPC transport (`WebRtcSink` / `WebRtcSource` with outbound\npermission filtering, over any `DataChannel`) plus `CrdtPlaneRuntime`, the CRDT\nanti-entropy runtime. Both are koffi-free and testable over an in-memory loopback\nwith zero network; \"real\" WebRTC is reached through a browser platform adapter\n(`RtcPeerChannel` / `RtcPeerConnector`) that wraps the `RTCDataChannel` /\n`RTCPeerConnection` globals with no npm dependency.\n\n```js\nimport { CrdtPlaneRuntime, InMemoryDataChannel, WebRtcSink, WebRtcSource } from \"@lazily-hub/lazily-js/distributed\";\nimport { SignalingRoom, ClientMessage } from \"@lazily-hub/lazily-js/signaling\";\nimport { IpcMessage, IpcValue, PeerPermissions, OpKind, Snapshot, NodeSnapshot } from \"@lazily-hub/lazily-js\";\n\n// Route a signaling handshake with server-stamped `from` (anti-spoof).\nconst room = new SignalingRoom();\nroom.receive(\"a\", ClientMessage.join(1));\nroom.receive(\"b\", ClientMessage.join(2));\nroom.receive(\"a\", ClientMessage.offer(2, \"SDP-A\")); // -> { to: \"b\", message: offer{ from: 1, sdp: \"SDP-A\" } }\n\n// Two replicas converge over an anti-entropy exchange.\nconst alice = new CrdtPlaneRuntime(1);\nconst bob = new CrdtPlaneRuntime(2);\nalice.register(1, \"doc/title\");\nbob.register(1, \"doc/title\");\nconst op = alice.localUpdate(1, Date.now() * 1000, IpcValue.inline([66]));\nbob.ingest(alice.syncFrame(), Date.now() * 1000); // 1 op applied; re-ingest applies 0\n```\n\n## Conformance\n\nlazily-js replays the shared `lazily-spec` fixtures for IPC, agent-doc state,\nkeyed collections (`SourceMap`, `SourceTree`, LIS reconciliation), semantic tree,\nsequence and text CRDTs (incl. `TextCrdt` delta sync, `#lztextsync`:\n`textcrdt_convergence.json` + `textcrdt_delta_sync.json`), manufactured text\nidentity, the keyed reactive maps / materialization (`#reactivemap`:\n`materialization/observational_transparency.json`,\n`materialization/deferral_not_deallocation.json`,\n`materialization/entry_kind_orthogonal_to_mode.json` — replayed through the\nsingle-threaded, async, and thread-safe maps), the C-ABI FFI boundary\n(`schemas/ffi.json`: message codec + channel round-trip over `snapshot_*` /\n`delta_*` wire), Harel state charts, the\nsignaling protocol (`signaling/frames.json`,\n`signaling/anti_spoof_session.json`), and the distributed CRDT plane\n(`distributed/crdt_sync_frames.json`, `distributed/anti_entropy_converge.json`).\nIt also validates generated wire values against the canonical JSON Schemas.\n\nThe transport-agnostic ingress corpus (`#designimplementtransport`,\n`ingress/ingress_*.json` — all seven named schedules) is replayed against **every\nflavor this binding ships**: `IngressCell`, `ThreadSafeIngressCell`, and\n`AsyncIngressCell`. The flavor axis lives in the runner, not the corpus. Each step's\n`invalidates` matrix is asserted per reader kind and per receipt channel in **both**\ndirections through a cache-validity probe (`isSet` / `isResolved`), so\nover-invalidation is as visible as under-; the probe itself is pinned by a test that\nproves it can fail. `test/ingress-family-conformance.test.js` also carries a\nthree-row flavor ledger enforced by grepping `src/` in both directions, so a shipped\nflavor cannot sit unreplayed, and every replay returns a step count each flavor\nasserts equals the corpus total — an absence guard proves the fixtures exist, only a\npositive count proves this process opened them.\n\n`npm test` builds the [`lazily-formal`][formal] Lean 4 model when that sibling\ncheckout and the `lake` toolchain are present. The script exits successfully\nwhen they are absent, so npm tarball consumers and shallow clones are not forced\nto install Lean; full CI verifies the proofs.\n\nEach formal module with a JS counterpart has a matching property test that\nnames the Lean theorems it mirrors:\n\n| lazily-formal module | JS test file | Mirrored theorems |\n|----------------------|--------------|-------------------|\n| `StateMachine` | `state-machine.test.js` | `guard_rejection_preserves_state`, `accepted_transition_advances_state`, `send_preserves_transition` |\n| `StateChart` | `statechart-properties.test.js` | `enabled_empty_rejects`, `parallel_region_confluence`, `single_region_refines_flat_machine`, `single_region_enabled_at_most_one`, `recordHistory_idempotent`, `send_actions_empty_when_rejected`, `send_preserves_chart`, determinism-by-construction |\n| `Reactive` | `reactive-properties.test.js` | `setCell_equal_preserves_graph`, `setCell_different_invalidates_dependents`, `recomputeSlot_equal_preserves_dependents`, `recomputeSlot_different_invalidates_dependents`, `signal_materialized_after_recompute` |\n| `Collection` | `collection-properties.test.js` | `setEntryValue_preserves_{membership,order,siblings}`, `moveKey_preserves_{membership,values}`, `moveKey_advances_order`, `addKey_advances_membership_and_order`, `Family.get_idempotent_after_first` |\n| `Tree` | `tree-properties.test.js` | `setNodeValue_preserves_{other_nodes,node_signals}`, `moveChild_preserves_{non_parent,parent_value}`, `moveChild_advances_order_signal_only` |\n| `Materialization` | `reactive-family.test.js` | `observe_canonical`, `eager_lazy_observationally_equivalent`, `eager_materializes_all`, `lazy_defers_slots`, `materialize_present_monotone`, `lazy_present_subset_eager`, `materialize_preserves_observe`, `cell_entries_materialized_in_every_mode`, `slot_entries_deferred_under_lazy` |\n| `Materialization` (thread-safe) | `thread-safe-reactive-family.test.js` | `materialize_present_comm`, `materialize_observe_comm` (materialization confluence) + the base materialization laws replayed through `ThreadSafeComputedMap` |\n| `AsyncMaterialization` | `async-reactive-family.test.js` | eventual transparency (a driven async slot resolves to the canonical value; eager ≡ lazy) + present-set monotonicity through `AsyncComputedMap` |\n| `ThreadSafe` | `thread-safe.test.js` | `flushBatch_empty`, `flushBatch_singleton_eq_setSource` (thread-safe batch refines `set`), `flushBatch_dependent_dirty`, `flushBatch_preserves_nondependent_dirty` |\n| `Reconciliation` | `reconciliation-properties.test.js` | `lisBy_longest`, `reconcile_move_minimized`, `reconcile_stable_not_invalidated` |\n| `AsyncSlotState` | `reactive-async.test.js` | `stale_completeOk_discarded`, `current_completeOk_publishes`, `current_completeErr_to_error` |\n| `AsyncEffect` | `reactive-async.test.js` | `fire_blocked_during_cleanup`, `invalidate_from_idle_schedules`, `cleanupDone_resumes_deferred`, `dispose_absorbing`, `disposed_terminal` |\n\nThe thread-safe context IS mirrored on this runtime: JavaScript is\nsingle-threaded per realm but shares memory across Web Workers via\n`SharedArrayBuffer` + `Atomics`, so `ThreadSafeContext` guards every operation\nwith a real reentrant Atomics mutex (cross-worker mutual exclusion, degrading to\na single-realm guard where shared memory is unavailable). The `Signaling` /\n`SignalingRoster` formal models are exercised through the `SignalingRoom`\nfixture replay (`signaling/anti_spoof_session.json`) rather than a named-theorem\nproperty test.\n\n## The lazily family\n\nlazily is one reactive kernel — `Source` / `Computed` / `Effect`, keyed\ncollections, state charts, CRDTs, and a distributed plane — implemented natively\nin each language and held to a single cross-language contract:\n\n- [`lazily-spec`][spec] — the wire protocol, the generated feature matrix, and\n  the conformance corpus every binding replays.\n- [`lazily-formal`][formal] — the Lean 4 formal model the bindings share.\n\n| Binding | Language | Role |\n|---------|----------|------|\n| [`lazily-rs`][rs] | Rust | the reference implementation; single-threaded, thread-safe, and async context layers |\n| [`lazily-py`][py] | Python | dict-backed context plus IPC/shared-blob host types |\n| [`lazily-go`][go] | Go | Go reactive core and distributed plane |\n| [`lazily-kt`][kt] | Kotlin / JVM | Kotlin reactive core plus typed state charts |\n| **`lazily-js`** | JavaScript / TypeScript | `@lazily-hub/lazily-js` — you are here; reactive core + async context, spec wire types, state charts, CRDTs, distributed plane (signaling + WebRTC) |\n| [`lazily-cs`][cs] | C# / .NET | .NET reactive core and distributed plane |\n| [`lazily-cpp`][cpp] | C++ | C++ reactive core and native transport surface |\n| [`lazily-zig`][zig] | Zig | Zig library / FFI-oriented embedding surface |\n| [`lazily-dart`][dart] | Dart / Flutter | Dart binding with statechart conformance |\n| [`lazily-react`][react] | React / Preact | **not a separate language binding** — `@lazily-hub/lazily-react` is a thin hook layer (`useSource` / `useComputed` / `useLazily`) over this package |\n\nPer-binding feature parity is tracked in the `coverage.json`-generated matrix in\n[`lazily-spec`][spec]; read it there rather than any hand copy.\n\n## Development\n\n```bash\nmake check   # npm run build && npm test\n```\n\n- `npm run build` runs `node --check` over every shipped module.\n- `npm run test:formal` builds `lazily-formal` when the sibling checkout and\n  `lake` are present.\n- `npm test` runs the formal check and the Node test suite.\n\n## Benchmarks\n\nWall-clock benchmarks live in [`BENCHMARKS.md`](BENCHMARKS.md), with two suites\nbuilt on a zero-dependency `node:perf_hooks` harness:\n\n- **Micro-benchmarks** ([`bench/context.bench.mjs`](bench/context.bench.mjs)) — a\n  1:1 port of the single-threaded `Context` cases in lazily-rs's\n  `benches/context.rs` (cached reads, cold first get, dependency fan-out,\n  set-cell invalidation, computed equality suppression, effect flushing, batch\n  storms, typed cache reads) so JS and Rust numbers are directly comparable.\n- **Scale** ([`bench/scale.bench.mjs`](bench/scale.bench.mjs)) — a\n  spreadsheet-shaped graph (`N` input cells + `N` formula slots,\n  `formula[i] = input[i] + input[i - 1]`) mirroring the lazily-rs/-go/-py `scale`\n  groups. At the default `N = 1,000,000` that is ~2M reactive nodes; the\n  `LAZILY_SCALE_N=5000000` run covers a full 10M-cell Google Sheets workbook. A\n  one-cell edit + 1,000-cell viewport read stays ~100 µs **independent of sheet\n  size** — the lazy-pull property a viewport-rendered spreadsheet needs.\n\n```bash\nmake bench          # micro-suite (prints a markdown table)\nmake bench-scale    # scale suite at N = 1,000,000\nnpm run benchmark-update   # refresh BENCHMARKS.md's generated micro-bench table\nnpm run benchmark-check    # CI gate: exit 1 if the micro-bench row set is stale\n```\n\n## Bundle size\n\n`@lazily-hub/lazily-js` ships as pure ES modules with `\"sideEffects\": false` and\none file per subpath export, so bundlers tree-shake to exactly what you import.\nThe budgets below are enforced in CI by `npm run test:size` (size-limit); the\ntable is regenerated on every `npm run build` so it cannot drift from the\nshipped bytes.\n\n<!-- size-limits:start -->\n\nGenerated for package `@lazily-hub/lazily-js` version `0.34.0`. Every entry is **minified + brotlied, tree-shaken to the named import** (`size-limit` + esbuild, the same pipeline Webpack/Rollup/Vite apply via `\"sideEffects\": false`).\n\nRefresh command:\n\n```bash\nnpm run build            # regenerates this table as part of every build\nnpm run test:size        # gate: fails CI if any entry exceeds its budget\n```\n\n| Import | Size | Budget |\n|---|---:|---:|\n| reactive: Context | 3.57 KB ✓ | 3.60 KB |\n| reactive: Context + handles + defaultEqual | 3.58 KB ✓ | 3.60 KB |\n| state-machine: StateMachine | 274 B ✓ | 280 B |\n| sem-tree: SemTree | 503 B ✓ | 512 B |\n| stable-id: contentHash | 152 B ✓ | 152 B |\n| collections: SourceMap + SourceTree + reconcileCollections | 1.64 KB ✓ | 1.65 KB |\n| index: PROTOCOL_ID + Snapshot (tree-shaken kitchen sink) | 2.45 KB ✓ | 2.46 KB |\n\n<!-- size-limits:end -->\n\n## See also\n\n- [`lazily-spec`][spec] - language-agnostic wire protocol, schemas, and\n  conformance fixtures.\n- [`lazily-formal`][formal] - Lean 4 formal model behind the shared behavioral\n  guarantees.\n- [`lazily-rs`][rs] / [`lazily-py`][py] / [`lazily-go`][go] / [`lazily-kt`][kt] /\n  [`lazily-cs`][cs] / [`lazily-cpp`][cpp] / [`lazily-zig`][zig] /\n  [`lazily-dart`][dart] - sibling bindings; see the \"The lazily family\" section\n  above.\n- [`lazily-react`][react] - React / Preact hooks layered over this package.\n\n[rs]: https://github.com/lazily-hub/lazily-rs\n[py]: https://github.com/lazily-hub/lazily-py\n[go]: https://github.com/lazily-hub/lazily-go\n[zig]: https://github.com/lazily-hub/lazily-zig\n[kt]: https://github.com/lazily-hub/lazily-kt\n[cs]: https://github.com/lazily-hub/lazily-cs\n[cpp]: https://github.com/lazily-hub/lazily-cpp\n[dart]: https://github.com/lazily-hub/lazily-dart\n[react]: https://github.com/lazily-hub/lazily-react\n[spec]: https://github.com/lazily-hub/lazily-spec\n[formal]: https://github.com/lazily-hub/lazily-formal\n[statecharts]: https://github.com/lazily-hub/lazily-spec/blob/main/docs/state-charts.md\n","readmeFilename":"README.md"}