{"_id":"lazy-storage","_rev":"33-80271831f134076052cc489eeae096db","name":"lazy-storage","dist-tags":{"latest":"0.23.3"},"versions":{"0.2.0":{"name":"lazy-storage","version":"0.2.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun"],"license":"ISC","_id":"lazy-storage@0.2.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"f4c3bb1e640577ca1f46bfe807083f52e3f70454","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.2.0.tgz","fileCount":21,"integrity":"sha512-w3/STrjvXH1ff4bD1WnJoiRcq2MQWXSMdG/aBzYB6AE6WBbNan5Ua62oqEnw9MeOzYaeRJibmyaiQH6rgolapw==","signatures":[{"sig":"MEUCIBV7L2yu6C6c+pSxIdNhYDNSt82e3R1PI8qFg5jejpkKAiEA9okfxBX/J1S9pbuoGHGkuP+t2ftqmktWcjJ4Djft8oI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88604},"type":"module","engines":{"node":">=22"},"exports":{".":"./src/index.js","./core":"./src/core/index.js","./client":"./src/client/index.js","./server":"./src/server/index.js","./server/bun":"./src/server/bun.js","./server/sqlite":"./src/server/sqlite-bun.js"},"gitHead":"c8071dfbf201a6a185d41207dc4c43079c497c09","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","test:bun":"bun test/bun/sqlite.test.js"},"_npmUser":{"name":"luff","email":"rb.luff@gmail.com"},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"11.6.2","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"lazy-watch":"^6.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.2.0_1788433790307_0.3382586945287853","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"lazy-storage","version":"0.2.1","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun"],"license":"ISC","_id":"lazy-storage@0.2.1","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"229f6dd8d3fe9ee7f0caae0538286c8b82d6a2d8","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.2.1.tgz","fileCount":21,"integrity":"sha512-0sh9mhonzsSjgdV7II/aXMV0YRvK/PdDlmaG/5b8oJRgZp+ehPpunnQrpla6EwIzU7uHrGHFH1okLwCxgOv3Iw==","signatures":[{"sig":"MEUCIQDGNM29Nw//tSE4eB2spyO7GEJm0fiyc6+IaZifONhbWgIgXWyWkJ/doJTgGzi6PpzmD2at9bq27jnWnJRgWo8AdKY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":91104},"type":"module","engines":{"node":">=22"},"exports":{".":"./src/index.js","./core":"./src/core/index.js","./client":"./src/client/index.js","./server":"./src/server/index.js","./server/bun":"./src/server/bun.js","./server/sqlite":"./src/server/sqlite-bun.js"},"gitHead":"718a6e82f830f942df93e3e799dc30021bc94b49","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","test:bun":"bun test/bun/sqlite.test.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.0.2","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"lazy-watch":"^6.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.2.1_1788439081365_0.1535395327846787","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"lazy-storage","version":"0.2.2","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun"],"license":"ISC","_id":"lazy-storage@0.2.2","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"3bff7264c41a3ddcccc4ab9eb269e96bee015552","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.2.2.tgz","fileCount":21,"integrity":"sha512-G7QIjTXImANNrfTXBqHy1XpjvIA4sRNyKVRgRTWsmpy1gdQUbL+aCHXoLWJynub3abDpO6TY4JREgGLGCdVaBA==","signatures":[{"sig":"MEYCIQDx6geK1iV7B4BqbEHgEuHk41Vgm+YesCPYOFjfdzSKYQIhAKy+25FbK7P6Ye1d4q8sCNMeKzLxynneTNDb1XfJv3Vi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":92686},"type":"module","engines":{"node":">=22"},"exports":{".":"./src/index.js","./core":"./src/core/index.js","./client":"./src/client/index.js","./server":"./src/server/index.js","./server/bun":"./src/server/bun.js","./server/sqlite":"./src/server/sqlite-bun.js"},"gitHead":"e9eef37ce89211bb3dba342663fd3c40747e210f","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","test:bun":"bun test/bun/sqlite.test.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.0.2","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"lazy-watch":"^6.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.2.2_1788441053987_0.12897037951448764","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"lazy-storage","version":"0.3.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun"],"license":"ISC","_id":"lazy-storage@0.3.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"e646290739b4aa7ff6a5136a4bceb6c1802b883b","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.3.0.tgz","fileCount":22,"integrity":"sha512-YyYAe+XNldNbecVPbiN5n5UCwVIZ+C75Ot17MKrBTNMzaFko8EzZQsrOhNkqGtqlzpXO2gx6kBdltUA1PuRTaQ==","signatures":[{"sig":"MEYCIQC0ZUyEeo/QY+3m4OAULxiKeXc4fFM4oKwEMizWMponMAIhAI8/xZVG4LyatURKW+A9zFgWJzCNZCNq3LvhFTtxivgt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":122157},"type":"module","engines":{"node":">=22"},"exports":{".":"./src/index.js","./core":"./src/core/index.js","./client":"./src/client/index.js","./server":"./src/server/index.js","./server/bun":"./src/server/bun.js","./server/sqlite":"./src/server/sqlite-bun.js"},"gitHead":"b6697beada056dab1fe73046536eb0ce10863079","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","test:bun":"bun test/bun/sqlite.test.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.0.2","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"lazy-watch":"^6.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.3.0_1788445701596_0.14175878788352647","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"lazy-storage","version":"0.4.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun"],"license":"ISC","_id":"lazy-storage@0.4.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"13ffc3a551fc34f102c5bcd676f3226bc6343947","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.4.0.tgz","fileCount":25,"integrity":"sha512-g6Jb5XdQSc1Ma/+jR0D8fX+xkKcvcOwbHvYp/m7FURBtl0QYUtL9wZTwT+L+TPqKKXTTYAkUnAsIY/2wEliXIQ==","signatures":[{"sig":"MEUCIQDq2ClXolMFe16azKJAEZcxsmxgXBSYKKF5iQ7/87EOlQIgMMa2ZdkAekPURYX9kUKh40mso8J5AGIGsgtjWtqoblE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":158997},"type":"module","engines":{"node":">=22"},"exports":{".":"./src/index.js","./core":"./src/core/index.js","./client":"./src/client/index.js","./server":"./src/server/index.js","./server/bun":"./src/server/bun.js","./client/sqlite":"./src/client/sqlite-bun.js","./server/sqlite":"./src/server/sqlite-bun.js"},"gitHead":"47b52f965a8b75eefc5d9e9b6170b5067022fa0f","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","test:bun":"bun test/bun/sqlite.test.js && bun test/bun/sqlite-client.test.js && bun test/bun/serve.test.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.0.2","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"lazy-watch":"^6.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"fake-indexeddb":"6.2.5"},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.4.0_1788459351797_0.2784212912401851","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"lazy-storage","version":"0.5.1","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun"],"license":"ISC","_id":"lazy-storage@0.5.1","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"ec1d66e995e13f55f344ea9ad67cbc9c5b5b2567","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.5.1.tgz","fileCount":38,"integrity":"sha512-81oc7G5qkvC2fAkiXRro3BKhc6z1pUeSvvCW+7SfohtcC5HGujmOPJy7Lb05VFDxlsitbn/Ik3IFaU3VrB7jjQ==","signatures":[{"sig":"MEUCIQCoavFNW7/CLLX7zDrbt7j+FJEIg3CinPxCmpAK1yb4IQIgGAx2MSKCltzYvCI500LFxDvPJ+hY2LApZMU6yfkzqcU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":213426},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"34cbce6fd4f8269cacc521f026b52e3e5ce700ae","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test/bun/sqlite.test.js && bun test/bun/sqlite-client.test.js && bun test/bun/serve.test.js","test:types":"tsc -p test/types/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.0.2","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"lazy-watch":"^6.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5"},"peerDependencies":{"ws":">=8"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.5.1_1788464886827_0.2980039268358241","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"lazy-storage","version":"0.5.2","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun"],"license":"ISC","_id":"lazy-storage@0.5.2","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"bfbd0de5f5ba6eb6456e01f37b9070f17a393fba","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.5.2.tgz","fileCount":38,"integrity":"sha512-4d+dX94px0VrBCEZ07+QEwSpH+/+9RNa3tOJvlk+ae7FhNZG48EWEJ+lFLZtZZYesflms0gS1gW342RPVvt7HQ==","signatures":[{"sig":"MEYCIQDIhu8hVWO2431t8U06XTOE+16LmuNQN0GzOuRYZAfHRwIhANTVJcVP3HwfCrH2FR8CNs3/iEnTpBOpMeciAbzedhW1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":214467},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"12e401b86b66c6cb5084e98f9dc039a7712bff3b","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test/bun/sqlite.test.js && bun test/bun/sqlite-client.test.js && bun test/bun/serve.test.js","test:types":"tsc -p test/types/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.0.2","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"lazy-watch":"^6.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5"},"peerDependencies":{"ws":">=8"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.5.2_1788468338554_0.07623519607692097","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"lazy-storage","version":"0.6.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun"],"license":"ISC","_id":"lazy-storage@0.6.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"389988af6d92dce6be611aad918bfc4e7a664a0c","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.6.0.tgz","fileCount":42,"integrity":"sha512-g2hSBvga4SrLQtKjtAufsIh/Z2SfEN2u9NZ7NPypErgQvb2X+Yu0aVURqBGNwgzVEWrrrv7fBwpIkTVZh2tisQ==","signatures":[{"sig":"MEYCIQDdOUkuIdJsCBiN3nVweolzVynl8ZLSCCOl636re4Hu6wIhAKukYR/co1xizmjPL2BxPEeMgj+6/wwYPp6qaAF+pfCC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":261898},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"9f9fe0e382e6d5118cab112a71124cf9e67d0c67","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test/bun/sqlite.test.js && bun test/bun/sqlite-client.test.js && bun test/bun/serve.test.js","test:types":"tsc -p test/types/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.0.2","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"lazy-watch":"^6.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5"},"peerDependencies":{"ws":">=8"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.6.0_1788514276950_0.3909239907372053","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"lazy-storage","version":"0.7.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun"],"license":"ISC","_id":"lazy-storage@0.7.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"a0af7a215d65cf99dd16d909833628d0b39e7231","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.7.0.tgz","fileCount":41,"integrity":"sha512-+6TLpavid2cKZjwFLPmeZtejvsEE6TmCrUxBQg4M4sn61jkEljB8ZYwwiIK3o4osBlOKXaF5GBN4Z+Rpx9324A==","signatures":[{"sig":"MEYCIQCG9FLQmX8AS/OTPV8kkQ3sBeBrd+rNsOX0PrNFKte9AgIhANulpNrNqlIJbG63cK3e8BhrPqzrsrvOLgxvsyzI39ke","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":258021},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"d68a6dec8f78075e239e1bd1749124cc787f90e3","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test/bun/sqlite.test.js && bun test/bun/sqlite-client.test.js && bun test/bun/serve.test.js","test:types":"tsc -p test/types/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.0.2","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"lazy-watch":"^6.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5"},"peerDependencies":{"ws":">=8"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.7.0_1788523379176_0.5657644066558494","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"lazy-storage","version":"0.8.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.8.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"90ddedde18efa61e96608baa94ab20626e9f0a81","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.8.0.tgz","fileCount":45,"integrity":"sha512-sfC38VzRk2jpzydBoz7+XhgsvEYfNIGe9/4JujR/zWZ8gBhE5ZicOKUYbeAvAh4hqzKFWy0xELG2uxlcLMpzqQ==","signatures":[{"sig":"MEUCIQCJQkALGcrdmRnceVMbwH4NzFnY21qE9huFUfprtjrwXgIgETWGYd46267q1RnRFSJqqN3vzNUnIrEPorRP5uUHJsw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":304626},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"65c6be2a226187e51ec88a5f989b9e9c162abf4e","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test/bun/sqlite.test.js && bun test/bun/sqlite-client.test.js && bun test/bun/serve.test.js","test:types":"tsc -p test/types/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.0.2","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"lazy-watch":"^6.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.8.0_1788532282500_0.5643862537853832","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"lazy-storage","version":"0.9.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.9.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"6c7358571df05b7b327570357525b1cb6089d195","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.9.0.tgz","fileCount":48,"integrity":"sha512-GAOsBzC3mwDJqtRj9fxYIaF8i1XTKn3bBw0mIs8h+eOd++MTe5G2d/Htg8D++1/GOdiyvzuW+iT3FWjaqskr0g==","signatures":[{"sig":"MEUCIBvh6tlky5qjlvQTmwSFueWNHO9SaiJKJgy4Or3qFw2sAiEAtG/I3z6+y+DISEgRyhVIwyXQqpjrUIkgEKOnUdTgZAg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":352381},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"6ebba0a8114db9e3b730ccda3e9cbe9c7cd5822c","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test/bun/sqlite.test.js && bun test/bun/sqlite-client.test.js && bun test/bun/serve.test.js","test:types":"tsc -p test/types/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.0.2","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"lazy-watch":"^6.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.9.0_1788607307379_0.6635829382594673","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"lazy-storage","version":"0.9.1","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.9.1","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"ee5894a8f0cd84e07ed680c33103c94718689401","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.9.1.tgz","fileCount":48,"integrity":"sha512-3qGZXuM3fDk9LTfPYp7D3LmuezeS8Z0Sflbh1AaJDu72rDZzFllBX23XlWNwz+UkZ6nqI9W+hlj0faGlTfUDww==","signatures":[{"sig":"MEYCIQDEp9vB7WAK5IwYW4Jqmle3OrfFsm0BPihmog/WrCFjnAIhAKsCd4bd9y2cDcdnuDjx4HN/ZLvQU9Dc8zLdFI75+GOT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":353221},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"bd9c6f444b4a9947ea70b93876be10eb67290efa","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test/bun/sqlite.test.js && bun test/bun/sqlite-client.test.js && bun test/bun/serve.test.js","test:types":"tsc -p test/types/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.0.2","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"lazy-watch":"^6.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.9.1_1788608248210_0.5803366617025469","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"lazy-storage","version":"0.10.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.10.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"215f00f5fadde464242d4f9618e9a13f12109c47","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.10.0.tgz","fileCount":49,"integrity":"sha512-mFvO1PWOZmGJ7TNsnvRmN1WnLoLzZWRPHdlutiXnT+qctrg3rbCJoZCmVSoK0WSsos8B2Tg6SMfKiiE5fHBCPg==","signatures":[{"sig":"MEQCIEI25GSEQClNPyMGq+Vb/W47m7IWEXkgpZvx5QKyIqwVAiB+i2Y/gI4cvlkdHo1LbNCj9ipUXKB9Ko3UAGCgK72K4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":382845},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"81b93a06a4e0d6798224fedd378d996118749821","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.0.2","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"lazy-watch":"^6.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.10.0_1788629105805_0.6522470426262188","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"lazy-storage","version":"0.10.1","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.10.1","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"9d5a0673caef9600db2d46b04bbd7ce5852c69a2","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.10.1.tgz","fileCount":49,"integrity":"sha512-/6BlQgAhRlzv6sbljAAM0uT50TusJ5vfSMDIMYPHm/uv+5dWtG34UXycY3o3w4JNgf0691mwh4JM45PPS9xktg==","signatures":[{"sig":"MEUCIHcVOITud4RGZuIn/k+XIqwdL3kVRCcwAgLEDOv+cvURAiEAgxhaUT43nKmRZCqTLdm5cZDCqC/gWnwYKCMI0johkOw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":385229},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"f79f38c1cbf716a1a9f8ff292fe6cf7b6f618d5f","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.0.2","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"lazy-watch":"^6.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.10.1_1788784671214_0.8543370570686712","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"lazy-storage","version":"0.11.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.11.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"462c4763a60acbd161fb727c545a6e23caef09f7","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.11.0.tgz","fileCount":49,"integrity":"sha512-qVh3ahNGgDrixhFYA9L1Jk3+t+4FRp5qfRdv5MmlyuhoFPF0yiBfrCRcG6Xc9KFxgv4bmpauy8QRcRZFSghJHg==","signatures":[{"sig":"MEQCIFpBCZxXhxvBZ8ndgrCvh8GTaHl8wU/wVnR8fBXcxqzbAiAH0Q3zQ6m0JbJ/jKZM0fUjwpjX+DrQrgSOIn2LgWVyZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":398252},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"cbebeaf1bf70437530f32e08248a2322b8e8d26a","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.0.2","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"lazy-watch":"^6.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.11.0_1788790081179_0.9507230788673682","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"lazy-storage","version":"0.11.1","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.11.1","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"7afc5edb673ab95574ffc98281f26038ef7999be","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.11.1.tgz","fileCount":49,"integrity":"sha512-1TzPF0FSZth5OvEHFR9K/bfqD9hARVob/oxAKwyKh8WViLrOY6/kHlWMRX+NU5P4+xKWwb1pVnlK7HlSTTsT7Q==","signatures":[{"sig":"MEUCIDlIt3KR/CoTcwLXNiR6ChbiOqUOgE7fHQW9L8sZaTjJAiEAmIO3+Jn7gGaOfU13VSQOhqaani2U6FCoO0tNGbeCR90=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":401341},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"8f4aa49ece00ca1f81f70278ea5745fa3a796870","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.0.2","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"lazy-watch":"^6.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.11.1_1789216425608_0.8418663179700165","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"lazy-storage","version":"0.12.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.12.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"8dd4a59b1a5cf3f4203ceb1339ec60bfa95d9e70","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.12.0.tgz","fileCount":50,"integrity":"sha512-Uj1x5rJdskN/2KTW4XCYqtEjeYT/TsgNlF8jui6XOly4pHbtDh1gpF3XqSObrV/vTkzu57EEe5WpDkrzFH4brw==","signatures":[{"sig":"MEQCIBVMCPhIgPXQxEfof5rAu6qy/3up20RxQYC0sGft0Tv4AiAHXiTS3KY60PyPEL0+oUt6lCOfcgmdgi+CPlb8dayTxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":413811},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"28d5a549b68fba22e8451990c4ca967c6f376298","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.0.2","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"lazy-watch":"^6.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.12.0_1789238624790_0.4728008946933453","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"lazy-storage","version":"0.12.1","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.12.1","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"db000b07b2d3a95d226030ef24d1773523bf8a63","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.12.1.tgz","fileCount":50,"integrity":"sha512-o1mC9SG3E0tIQywKeM7mJNFThSDjd4vgiFGgej4cEbaN7s0O1awzeZl434BlsdJmO1Ucs8QOV3M3J5dTTAwm0Q==","signatures":[{"sig":"MEUCICPAL2KWZh91dGZABBgaGzMsNVtvlnJn3yJZdPBLwismAiEA94eh9raM/4ITsYtNtjGp1hxTX1WGOa1JNAaOrh118PQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.12.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":416520},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"e7b73fc91a0311ad642fba152b82a51824e5e051","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.0.2","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"lazy-watch":"^6.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.12.1_1789243781855_0.3504436714885566","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"lazy-storage","version":"0.13.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.13.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"271ccedd45559397a4c19d50af3264c7115b77f1","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.13.0.tgz","fileCount":50,"integrity":"sha512-LSthbaXYXM8/eBTOmKwr75929KzT2xWPsaH7DmQyrXNX35QKE82YnRduhkCJF6XSwhFSNalP790TDqaQ+U0aoQ==","signatures":[{"sig":"MEUCICkYsRMv3V6uQJJ2m9krmj0z0d7ik7N+CcQgrIuNSf85AiEA0gkuIDUl19I6Svy3+TbDQqWQcfP0PKhhTQ6vrp51DMY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICZB9QRgVfWaNzIGQpKOJUgzfwOdrptUTV6h49rxEwb+AiEAqwiWK8dQRAm5374+IfZ/4XhuuK3deqvQcYzl4O1DdhM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":450613},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"f7f1c949ef2d04913b8f179957b1f90d974d0baf","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.1.0","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"lazy-watch":"^6.3.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.13.0_1790159789006_0.4232079849745034","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"lazy-storage","version":"0.14.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.14.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"8c555372cee2cba0049c88e7556f0d5bc7274b5b","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.14.0.tgz","fileCount":50,"integrity":"sha512-2ehP+1Jvc1Ju1YGMCfeZN7bB5VJn4+h9LsjOEcNDOgeD7rwUXiNcRpnQY6HnI4ohqXeDpZgbc+GBKoiC+y8lAw==","signatures":[{"sig":"MEUCIFvgNFgeFZaKtQLHQIq0DB+VenSEpdBSmGlTiNS2LV/QAiEA5qmF0MGzF2QW/5gCcPlyiSKiqDLD2jz6OEl/8eWtrX0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDUNXNZWFl9VHCPqx9Z1sg6VkPIuZsynFNRNmuAXEAiAAIgHAbA504zVQYs+f9+eYW7srrUfLoEC+TisTqXLo7rKGc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":479973},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"1f983f0fa14dc71ef7f0803b187424b70c449221","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json","bench:client":"node bench/client.js","fuzz:hostile":"node test/fuzz/run.js --mode hostile"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.1.0","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"lazy-watch":"^6.4.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.14.0_1790168323749_0.7342595009863528","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"lazy-storage","version":"0.14.1","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.14.1","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"351474be808dd1c3e9346180653a1d7219130c6f","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.14.1.tgz","fileCount":51,"integrity":"sha512-9+vgn2eSSIYVtAnK4at5lc958kB9hA92/4jcdbNmEWhw4RKzILs3ajx1Em546C6Lt7gboTTewp78/AypWWPrzw==","signatures":[{"sig":"MEQCICdR7MTnLVP8rAwtfgGt1ytzE9tP+0y/uqtUvdGyYIUQAiBdkUxROc3I3rtbriiPvkW9TKGeQnZndXQj0ngE6NLJhQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCID0THuGSbof+BEnvayQei4GLL9n3Yz6KhJ7s8UGYdSusAiEAjWXF32YFaSQsrf9NJ5tqC/qljv4VZyL3uYzThceTxmQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.14.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":488723},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"fd0e04b54a434e3a688b04cf3c1a2b826476dc21","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json","bench:client":"node bench/client.js","fuzz:hostile":"node test/fuzz/run.js --mode hostile"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.1.0","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"lazy-watch":"^6.4.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.14.1_1790170078444_0.5525371744441945","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"lazy-storage","version":"0.15.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.15.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"ce0cb64b87c247159892f05d1073fc590ce3f01d","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.15.0.tgz","fileCount":51,"integrity":"sha512-z4ssYfPQhxlZtsulj2VOnicuO3jgSTtdhh4DU4EQqX1RSNu7/CTe1QXpzGHUoa0vjiF8T+OxR8OeFX+VhKKxuw==","signatures":[{"sig":"MEUCIApoqP0pZf/O5RltiCctj+57dHaPzsAcdrxfuAFPMm0TAiEA0zcHJ5rhPOZeimlYFxnIU/V7KuTM4nCLRDoQUh/yZLY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHOYikmDWP84PyZsnvTJNo8Yh1c1LVxZ5CvfWcg97MhRAiBHxKnmMHwBUEDQeNGkyJp0E9ztNj0qADUy/jRLjrp+MA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":500441},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"8159d5f23de6d64c21ee3cd29ac5e3cdfab46224","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json","bench:client":"node bench/client.js","fuzz:hostile":"node test/fuzz/run.js --mode hostile"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.1.0","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"lazy-watch":"^6.4.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.15.0_1790172640433_0.3713863197693861","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"lazy-storage","version":"0.16.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.16.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"844a0338682ca2ed797d27cbbeac57cb08e7b761","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.16.0.tgz","fileCount":51,"integrity":"sha512-dtgD05CpCrDCbr5Bz5Xezz3lYFlCnFsmLlstPUdrgq4ydc/Z796iVZu/c2S6TMfUn8NuzO2mHkmtSjJ+zBgJLg==","signatures":[{"sig":"MEQCIDlayXAn+kGXZwbFj7+3p7rM4Ca77g/5L7afs91+zd/+AiAICh/bbqhDch6Ms+jH2KIMu4gZdArvuIHOtbZRJo4ncw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDwlCkctsc+U8CgZF8rrQLq6a6Fy9rSEzcOtHPhqv2rYgIgOu4iwje+H12S+gtk4nckBI0jDV0bH3rU58Mwj7hwohQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":532200},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"e9b0c7359399db6cd7636285c3835e5715a31f0b","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json","bench:client":"node bench/client.js","fuzz:hostile":"node test/fuzz/run.js --mode hostile"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.1.0","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"lazy-watch":"^6.4.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.16.0_1790246276402_0.9919525556173243","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"lazy-storage","version":"0.17.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.17.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"4f1b76b604510d12033e3744b1c54452eea64470","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.17.0.tgz","fileCount":51,"integrity":"sha512-b2BJ9M3O6iQzAWWOqYo+gRlUzy3juWNpq3VUjse3+2NuuPCF7+i67ebKJ/tSCLNQ5vxNdKn19lU3ndaTKMyVVQ==","signatures":[{"sig":"MEUCID1eZwi9Qw2B98j+AbzyEpAM/ZDU+StC/7JaeI3uSgl8AiEA9XIMB88hfgn8EW0HM9AIWprrDrQkvMM+mcP6OJvWwzk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDrE3ilcz/We0agOPE3Gbpy8Ef9O8heCDPbY6EhDhKpBgIhAOdoWPyG8amgMhw/kCfoY5JhNkFbT+ZI6QdzP2Y7Q2BA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":534725},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"fc7fcbd6e4386d3ce998017454e4072ce068e23b","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json","bench:client":"node bench/client.js","fuzz:hostile":"node test/fuzz/run.js --mode hostile"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.1.0","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"lazy-watch":"^7.0.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.17.0_1790323151840_0.42602775735191645","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"lazy-storage","version":"0.18.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.18.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"821e19f2f11489defb4afdb46dd2a6547b3df28d","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.18.0.tgz","fileCount":51,"integrity":"sha512-JhiZ/BTqslbdAwl0JQyUerLSCiQeQJ9aUpRn0hgpp75psjd7vf2ZBtNSkDSssBjU/dNRR1d7dOkWJ5WkFygUbQ==","signatures":[{"sig":"MEYCIQDaEYmKk0XAnkG10pv2nSTBk8cV/oxlM3XRNYv/X9k/+gIhAIxer5CCHPqJ0CmdOYlnDd7Bl31UCCLo/vyOhvdwxvFs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDw3adJ4cNciOSaSw+z8nuPkmi49CPvd0j7pCPvBJVnQwIgaxwNTK6Jil9NRtT7UBzoIbEUoiWt8I3dbvluXGnkhE8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":556945},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"7c61b301c863d1232329c0e19a0afc2e0e91cd3b","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json","bench:check":"node bench/run.js --check && node bench/client.js --check","bench:client":"node bench/client.js","fuzz:hostile":"node test/fuzz/run.js --mode hostile","test:coverage":"npx -y c8 --include=src --reporter=text --reporter=text-summary --check-coverage --statements 96 --lines 96 --branches 88 --functions 92 node --test \"test/*.test.js\""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.1.0","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"lazy-watch":"^7.0.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.18.0_1790342791854_0.7685279581762468","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"lazy-storage","version":"0.19.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.19.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"719ca5ed6fde0d2bbd8492521b07e54b70d884a1","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.19.0.tgz","fileCount":51,"integrity":"sha512-AYyX25c3/ZywycaDAz/ZutUDBGSDgSd9smH2nS1gG7Ir9SXLeKlZW1iI8i0lony7dAPVKfsFLRpf0ksC2LxPqw==","signatures":[{"sig":"MEUCIQCeeTTQ+BN514Nql7M2ENz8ukpHXtg7KYCUt8pzWa+a2gIgANNT/ZIEt/BurK7Ik7EqaWkV2Gb1eA+7PqRo24cuCGI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCH1Svkhsq8eCsvdXHtdbA97h7qeQcEc8P8OitilKtirICIQDO0uFGmdpQVe2Ky/dKXqE2SM1dueMZtOdUy50QSIugWA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":576800},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"7034822351f3df58cfcbd7807f89162a2f6e1dda","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json","bench:check":"node bench/run.js --check && node bench/client.js --check","bench:client":"node bench/client.js","fuzz:hostile":"node test/fuzz/run.js --mode hostile","test:coverage":"npx -y c8 --include=src --reporter=text --reporter=text-summary --check-coverage --statements 96 --lines 96 --branches 88 --functions 92 node --test \"test/*.test.js\""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.1.0","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"lazy-watch":"^7.0.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.19.0_1790361732103_0.7487811063931955","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"lazy-storage","version":"0.20.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.20.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"db200c7564771e86c292e50ab55fdb0a73de0da9","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.20.0.tgz","fileCount":56,"integrity":"sha512-fXwtTrRXf1MEilYsNC4lRlFnGtRORHfdJc7P6bsD8NNgGMLZGaKLMnZHW8iiCp1Efo9m2p+v26pYQa1Ec4vfUA==","signatures":[{"sig":"MEUCIHGgH5Z9xFGu3ibFOnsGv2ZR1INBIvP5fAY8FnHEZhwVAiEA/14VYByAMCRP84N2G7VdVmJtsRmvG0l+FJUq9Cmzwbg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDeNweKc5EzuxFeFvufkFPdvWOi7bdsyigUmdTs7FS7rgIhAMQ5I4CThvwIs/nxlx2BlRmJN9PyJcchlW9/mRWHvFxX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":683101},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./relay":{"types":"./types/relay.d.ts","default":"./src/relay/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./relay/bun":{"types":"./types/relay-bun.d.ts","default":"./src/relay/bun.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"dc1344f1e0282bc52ea255a592364523ffcc4500","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json","bench:check":"node bench/run.js --check && node bench/client.js --check","bench:client":"node bench/client.js","fuzz:hostile":"node test/fuzz/run.js --mode hostile","test:coverage":"npx -y c8 --include=src --reporter=text --reporter=text-summary --check-coverage --statements 96 --lines 96 --branches 88 --functions 92 node --test \"test/*.test.js\""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.1.0","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"lazy-watch":"^7.0.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.20.0_1790430992333_0.41679300568516986","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"lazy-storage","version":"0.21.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.21.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"23780d95fbf740634cf9fa7f9f83ad40440a6f85","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.21.0.tgz","fileCount":57,"integrity":"sha512-4heXGmDmivCnbHum8ZcKLx6ndknoZHxMMzskE0ANf3Jopgamww1BDe1KXF0mHZ5HAJPxUkdHuvMDOsEvrGzBBQ==","signatures":[{"sig":"MEYCIQCQqCn08swDQ+iSwn7gjQMUmGBLE32P/MRu/iBU7OjTQwIhAKidkv/1lWeYxyEeD346dEMoSndBIvhJwqUp6IIxD/8Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCe6d3OCYyxQbKyCFSB9SSCWDCD+R0sIRiLfzXDMfKNvQIhAKNjxSmtHAd/vQ04ij8EqwzhbxHSy0d2M5gamYGuKH5u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":826463},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./relay":{"types":"./types/relay.d.ts","default":"./src/relay/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./relay/bun":{"types":"./types/relay-bun.d.ts","default":"./src/relay/bun.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"3e2be6c699a2ce7528e193d7da7658054f2b794b","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json","bench:check":"node bench/run.js --check && node bench/client.js --check","bench:client":"node bench/client.js","bench:fanout":"bun bench/fanout/run.js","fuzz:hostile":"node test/fuzz/run.js --mode hostile","test:coverage":"npx -y c8 --include=src --reporter=text --reporter=text-summary --check-coverage --statements 96 --lines 96 --branches 88 --functions 92 node --test \"test/*.test.js\""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.1.0","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"lazy-watch":"^7.0.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.21.0_1790538069997_0.04119080921233276","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"lazy-storage","version":"0.22.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.22.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"0fd3f540f66481994516fd0a2d35f74f2911133b","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.22.0.tgz","fileCount":57,"integrity":"sha512-Cj9WttDtQZFDvr+veY6t8LuglbywAqL/0339oP4+A7nl5UIBEilsS9vjNVY2qibCFT1ECvM7sONzGZ1yIvY4xg==","signatures":[{"sig":"MEQCIHNwXlj7O1oay/f6ub4qNWGiz5VxGfPxW9rcbcGc9AvxAiBulIcAWg27iFyByTgroK90UTWnJ38d8rwChDfUWdCRIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBKoLumHj1J/46Dw75/G0i3d6VzUk7y4HvA54CNt+m7/AiB0niWIrmPsNpMQ3YaQAwignYAQn2CP/uJ9xYWScG16ZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":834132},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./relay":{"types":"./types/relay.d.ts","default":"./src/relay/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./relay/bun":{"types":"./types/relay-bun.d.ts","default":"./src/relay/bun.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"c1b3fe0f18f0c9d97cbb71096232c0705cf5d62b","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json","bench:check":"node bench/run.js --check && node bench/client.js --check","bench:client":"node bench/client.js","bench:fanout":"bun bench/fanout/run.js","fuzz:hostile":"node test/fuzz/run.js --mode hostile","test:coverage":"npx -y c8 --include=src --reporter=text --reporter=text-summary --check-coverage --statements 96 --lines 96 --branches 88 --functions 92 node --test \"test/*.test.js\""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.1.0","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"lazy-watch":"^7.0.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.22.0_1790627194692_0.4091015893888057","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"lazy-storage","version":"0.23.0","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.23.0","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"0c8ed9a3daac411ec20b37ea173e82860460d76d","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.23.0.tgz","fileCount":58,"integrity":"sha512-rv3570Pr2ePcQhHsalcE7XnbpSrOBVr9poSbDgNnHI5wn37r+8DXxpp8N/22VzS0q2pSHLdacuKOO7w93eiEaw==","signatures":[{"sig":"MEYCIQC5kVrhAY7lQ44TrzOJcYbF0EbHNmNG6CH8uNGLgINy+wIhAMwzZs+uXarHoislmBkfe680p6oPs1y37K8LJq1BpazE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDvAKOd9wXk/0E6GHP7QrySJ7DfKqYZB7+SZj+e8OhedAIhAPu0979ObSoaToJkqgBMYWbvxGDP0GOArliBpiQOUAiT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":869208},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./relay":{"types":"./types/relay.d.ts","default":"./src/relay/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./relay/bun":{"types":"./types/relay-bun.d.ts","default":"./src/relay/bun.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"80add20097e91585b453f68cd771b22dedc57a89","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json","bench:check":"node bench/run.js --check && node bench/client.js --check","bench:client":"node bench/client.js","bench:fanout":"bun bench/fanout/run.js","fuzz:hostile":"node test/fuzz/run.js --mode hostile","test:coverage":"npx -y c8 --include=src --reporter=text --reporter=text-summary --check-coverage --statements 96 --lines 96 --branches 88 --functions 92 node --test \"test/*.test.js\""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.1.0","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"lazy-watch":"^7.0.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.23.0_1790685111094_0.731523188263997","host":"s3://npm-registry-packages-npm-production"}},"0.23.1":{"name":"lazy-storage","version":"0.23.1","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.23.1","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"57489fea451aa9ab8cb9f4da126614619ddef4ef","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.23.1.tgz","fileCount":58,"integrity":"sha512-UoLvlkzo0mDr1JzhVXg552NBY4zX++fW0fsi+HdxcSXgidSRwlh4oWi/F/4NMsT6BccneDqJm+6lRZ7XXF45Qw==","signatures":[{"sig":"MEUCIC9FrePD5/KLb14Cc+nXLjZAiJy925/9anUsShoAcNR3AiEA7gsP66D6IbLZU/cL5JLAr7DBri50jprX7o389zTl0TY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBw3hAwv47QnciBQQQJjutbGnSJQmqlonxcOD732mYigAiBwS1pi8Vw6292BCsOaXepdhTYf2BkLrQ653PTU9b5i1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.23.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":877080},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./relay":{"types":"./types/relay.d.ts","default":"./src/relay/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./relay/bun":{"types":"./types/relay-bun.d.ts","default":"./src/relay/bun.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"259f80f081b1c42f1bb3b8cbe07c0ffba65cc91c","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json","bench:check":"node bench/run.js --check && node bench/client.js --check","bench:client":"node bench/client.js","bench:fanout":"bun bench/fanout/run.js","fuzz:hostile":"node test/fuzz/run.js --mode hostile","test:coverage":"npx -y c8 --include=src --reporter=text --reporter=text-summary --check-coverage --statements 96 --lines 96 --branches 88 --functions 92 node --test \"test/*.test.js\""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.1.0","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"lazy-watch":"^7.0.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.23.1_1790707989660_0.7543417356239572","host":"s3://npm-registry-packages-npm-production"}},"0.23.2":{"name":"lazy-storage","version":"0.23.2","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"license":"ISC","_id":"lazy-storage@0.23.2","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"homepage":"https://github.com/luffs/lazy-storage#readme","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"3abf84939e30619c396a3ec4574a3f37592147dd","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.23.2.tgz","fileCount":68,"integrity":"sha512-aagt+DaaZ69tlGvFnJPUT+tNUBike1rjU708kDqpRLtD2qXbLASKwvbod0DONLZVIQKJ5QF8tjw3mGfG6qqyoA==","signatures":[{"sig":"MEUCIQDAdQf6KVu/M8v0uwn6jEI/ahmE5QbQVd1C0hO4BqTC0QIgXx9ffWIprzMskxdpOrJzxljlOWpTlxdgfr69rZyiT74=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC+Zsts872K1bKM31+ED+oyfC1GpopMFGu5viixPvIcBwIgEwWY6pQAE+n64U9oM53waDvTwwDWTl7gV2rdaBDqm90=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.23.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":884136},"type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./relay":{"types":"./types/relay.d.ts","default":"./src/relay/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./relay/bun":{"types":"./types/relay-bun.d.ts","default":"./src/relay/bun.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"b4babaac092af3a2ceacbdcd9547282ef6771940","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json","bench:check":"node bench/run.js --check && node bench/client.js --check","bench:client":"node bench/client.js","bench:fanout":"bun bench/fanout/run.js","fuzz:hostile":"node test/fuzz/run.js --mode hostile","test:coverage":"npx -y c8 --include=src --reporter=text --reporter=text-summary --check-coverage --statements 96 --lines 96 --branches 88 --functions 92 node --test \"test/*.test.js\""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"97f5bbeb-df34-4021-928c-d8008f90ce73"}},"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.1.0","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"lazy-watch":"^7.0.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/lazy-storage_0.23.2_1790773311033_0.7182599915182415","host":"s3://npm-registry-packages-npm-production"}},"0.23.3":{"_id":"lazy-storage@0.23.3","bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"dist":{"shasum":"ae4bb831804cf6dcf2f8e24728a21b1eff78dd92","tarball":"https://registry.npmjs.org/lazy-storage/-/lazy-storage-0.23.3.tgz","fileCount":68,"integrity":"sha512-8oyIdov5tAo+nSIujyKcVC38EjTDWw7ixV4fX/lU3HYP8eHs9M3MVK+76l2PG0RlEIyYnrbED2/2Rk5ei8jUxA==","signatures":[{"sig":"MEUCICoYHkb4O8cK6ARin9jrHP3HfPj8RPABMzFmlgvrRAV+AiEAoz54BOj+EMtyWKricsuu6H89OcBXp78i9CFfH3syQ8A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBgr1DSiBmp7EOhrsdtrC0RUaHqScWH7JZyXnsuqMMUeAiA8B0qFa2IsuwZanpVVUDFcRo1AUFSZB48M7U1VyaX4eQ=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lazy-storage@0.23.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":886442},"name":"lazy-storage","type":"module","types":"./types/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./vue":{"types":"./types/vue.d.ts","default":"./src/vue/index.js"},"./core":{"types":"./types/core.d.ts","default":"./src/core/index.js"},"./react":{"types":"./types/react.d.ts","default":"./src/react/index.js"},"./relay":{"types":"./types/relay.d.ts","default":"./src/relay/index.js"},"./client":{"types":"./types/client.d.ts","default":"./src/client/index.js"},"./server":{"types":"./types/server.d.ts","default":"./src/server/index.js"},"./testing":{"types":"./types/testing.d.ts","default":"./src/testing/index.js"},"./relay/bun":{"types":"./types/relay-bun.d.ts","default":"./src/relay/bun.js"},"./server/bun":{"types":"./types/server-bun.d.ts","default":"./src/server/bun.js"},"./server/node":{"types":"./types/server-node.d.ts","default":"./src/server/node.js"},"./client/sqlite":{"types":"./types/client-sqlite.d.ts","default":"./src/client/sqlite-bun.js"},"./server/sqlite":{"types":"./types/server-sqlite.d.ts","default":"./src/server/sqlite-bun.js"},"./server/sqlite-node":{"types":"./types/server-sqlite-node.d.ts","default":"./src/server/sqlite-node.js"}},"gitHead":"08ab40299d80cc5ce13a4f8e4f3a4d52fb59384a","license":"ISC","scripts":{"fuzz":"node test/fuzz/run.js","test":"node --test \"test/*.test.js\"","bench":"node bench/run.js","test:bun":"bun test","test:types":"tsc -p test/types/tsconfig.json","bench:check":"node bench/run.js --check && node bench/client.js --check","bench:client":"node bench/client.js","bench:fanout":"bun bench/fanout/run.js","fuzz:hostile":"node test/fuzz/run.js --mode hostile","test:coverage":"npx -y c8 --include=src --reporter=text --reporter=text-summary --check-coverage --statements 96 --lines 96 --branches 88 --functions 92 node --test \"test/*.test.js\""},"version":"0.23.3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"97f5bbeb-df34-4021-928c-d8008f90ce73"}},"homepage":"https://github.com/luffs/lazy-storage#readme","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"_npmVersion":"12.2.0","description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","directories":{},"maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"lazy-watch":"^7.0.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.3","vue":"^3.5.42","react":"^19.2.8","happy-dom":"^20.14.0","react-dom":"^19.2.8","typescript":"^7.0.2","@types/node":"^26.4.1","fake-indexeddb":"6.2.5","@happy-dom/global-registrator":"^20.14.0"},"peerDependencies":{"ws":">=8","vue":">=3.2","react":">=18"},"peerDependenciesMeta":{"ws":{"optional":true},"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lazy-storage_0.23.3_1790877341390_0.909129423635598"}}},"time":{"created":"2026-09-03T11:09:50.038Z","modified":"2026-10-01T17:55:41.798Z","0.2.0":"2026-09-03T11:09:50.461Z","0.2.1":"2026-09-03T12:38:01.534Z","0.2.2":"2026-09-03T13:10:54.131Z","0.3.0":"2026-09-03T14:28:21.750Z","0.4.0":"2026-09-03T18:15:51.952Z","0.5.1":"2026-09-03T19:48:06.969Z","0.5.2":"2026-09-03T20:45:38.687Z","0.6.0":"2026-09-04T09:31:17.094Z","0.7.0":"2026-09-04T12:02:59.380Z","0.8.0":"2026-09-04T14:31:22.650Z","0.9.0":"2026-09-05T11:21:47.523Z","0.9.1":"2026-09-05T11:37:28.350Z","0.10.0":"2026-09-05T17:25:05.959Z","0.10.1":"2026-09-07T12:37:51.351Z","0.11.0":"2026-09-07T14:08:01.331Z","0.11.1":"2026-09-12T12:33:45.748Z","0.12.0":"2026-09-12T18:43:44.918Z","0.12.1":"2026-09-12T20:09:42.038Z","0.13.0":"2026-09-23T10:36:29.095Z","0.14.0":"2026-09-23T12:58:43.833Z","0.14.1":"2026-09-23T13:27:58.535Z","0.15.0":"2026-09-23T14:10:40.601Z","0.16.0":"2026-09-24T10:37:56.489Z","0.17.0":"2026-09-25T07:59:11.932Z","0.18.0":"2026-09-25T13:26:32.062Z","0.19.0":"2026-09-25T18:42:12.233Z","0.20.0":"2026-09-26T13:56:32.420Z","0.21.0":"2026-09-27T19:41:10.090Z","0.22.0":"2026-09-28T20:26:34.832Z","0.23.0":"2026-09-29T12:31:51.203Z","0.23.1":"2026-09-29T18:53:09.782Z","0.23.2":"2026-09-30T13:01:51.158Z","0.23.3":"2026-10-01T17:55:41.500Z"},"bugs":{"url":"https://github.com/luffs/lazy-storage/issues"},"license":"ISC","homepage":"https://github.com/luffs/lazy-storage#readme","keywords":["sync","offline-first","realtime","state","lazy-watch","last-writer-wins","websocket","bun","vue","react"],"repository":{"url":"git+https://github.com/luffs/lazy-storage.git","type":"git"},"description":"Self-hosted realtime state store with offline sync, built on lazy-watch: keyed collections, last-writer-wins per field, an outbox that survives reconnects.","maintainers":[{"name":"luff","email":"rb.luff@gmail.com"}],"readme":"# lazy-storage\n\nRealtime shared state for web apps that keeps working offline, on a\nserver you run yourself. Clients read and write the state like a plain\nJavaScript object; every change reaches everyone else as a small JSON\ndiff, edits made offline are kept and sent later, and everything converges\nwhen the connection is back.\n\nIt is the \"database + sync\" half of a Firebase-style backend as a\nlibrary: one dependency ([lazy-watch](https://github.com/luffs/lazy-watch)),\nno build step, and on the server one process and a SQLite file.\n\n```bash\nnpm install lazy-storage\n```\n\n## Quickstart\n\nIn the browser, a client is a live mirror of a store:\n\n```js\nimport { createClient, webSocketTransport, localStorageOutbox } from 'lazy-storage';\n\nconst db = createClient({\n  transport: webSocketTransport('wss://example.com/ws?token=...'),\n  store: 'todo',\n  initial: { tasks: [] },\n  lists: ['tasks'],                       // an ordered list of records, seen as an array\n  storage: localStorageOutbox('todo')\n});\ndb.connect();\n\ndb.state.tasks.push({ title: 'Ship it', done: false }); // synced, offline or not\ndb.state.tasks[0].done = true;\ndb.state.tasks.sort((a, b) => a.title.localeCompare(b.title));\n\ndb.watch((diff, inverse, meta) => render(db.state, meta?.origin === 'remote'));\ndb.undo();\n```\n\nOn the server (Bun here; [Node works too](docs/server.md#on-node)), a few\nlines hold every store and say who may open which:\n\n```js\nimport { createStore, createStores } from 'lazy-storage/server';\nimport { sqliteStorage } from 'lazy-storage/server/sqlite';\nimport { serve } from 'lazy-storage/server/bun';\n\n// Any number of stores in one SQLite file, one row per leaf. The server\n// knows nothing of arrays: a list is a keyed map with a position per record\nconst sqlite = sqliteStorage('data/app.sqlite');\nconst stores = createStores(id => createStore({\n  initial: { tasks: {} },\n  storage: sqlite.store(id)\n}));\nserve({\n  stores,\n  port: 3200,\n  authenticate: req => userForToken(new URL(req.url).searchParams.get('token')), // null → closed 'unauthorized'\n  authorizeId: (user, storeId) => user.teams.includes(storeId)                   // false → closed 'forbidden', nothing loaded\n});\n// clients connect to ws://host:3200/ws?token=... and name their store per client\n```\n\nA server with a single store passes `stores: () => store`; there is one\nprotocol and one route either way.\n\nTo see it run, clone the repository and start the smallest example, a\nshared list, then open http://localhost:3200 in two tabs:\n\n```bash\nbun install\n```\n\n```bash\nbun examples/basic/server.js\n```\n\n## What you get\n\n- **State you just edit.** No queries, mutators or document types to\n  define: assign to `db.state` and it syncs. A list of records is an\n  ordinary array to your code (push, splice, sort) and a keyed map on the\n  wire, so two people adding or reordering never collide.\n  ([The model](docs/model.md))\n- **Offline by default.** Edits made without a connection go to an outbox\n  that survives reloads, and are sent in order when the server is back.\n  ([Offline](docs/offline.md))\n- **Conflicts you can reason about.** The server merges field by field:\n  edits to different fields of one record both land, and on the same field\n  the later one wins everywhere. A client whose edit lost is told what it\n  lost. ([How conflicts resolve](docs/model.md#how-conflicts-resolve))\n- **Undo and redo** that only ever touch your own edits, not a\n  teammate's. ([Undo](docs/model.md#undo))\n- **React and Vue bindings**, `lazy-storage/react` and `lazy-storage/vue`,\n  and a pattern of a few lines for anything else.\n  ([With a UI framework](docs/model.md#with-a-ui-framework))\n- **Storage that looks after itself.** SQLite with a row per field, on Bun\n  or Node: versioned migrations, and backups and restores while serving.\n  ([Persistence](docs/server.md#persistence))\n- **Your own users.** Two hooks say who a request is and which stores\n  they may open; presence shows who is here and what they share.\n  ([Authentication, presence, and eviction](docs/auth.md))\n- **One socket for everything.** Any number of stores over one\n  connection, and one connection per browser however many tabs it has\n  open. ([Multiple stores](docs/stores.md))\n- **Relays.** A relay on a shop's or an office's network keeps its\n  clients working while the server is away; relays in front of the\n  server take the writing to clients off its one core.\n  ([Relays](docs/relays.md))\n- **Built for the open internet.** Size and rate limits are on by default,\n  and the test suite includes a fuzzer that plays a signed-in attacker\n  beside honest clients. ([Limits](docs/limits.md))\n- **TypeScript declarations** for every entry point, and\n  `lazy-storage/testing` to test your app against a store without\n  sockets. ([Testing](docs/development.md#testing))\n\n## How fast\n\nMeasured with the repository's own benchmarks, on a 4-core Linux server\nwith the load coming from another machine:\n\n- One store on SQLite took **15 000 writes a second** behind ten relays,\n  each write reaching every client at a p99 of some 50 ms.\n- **20 000 connected clients** behind three relays left the machine's\n  cores nearly idle, and every one of them, dropped at once, was answered\n  again with only what it had missed.\n\n[Spreading the load](docs/relays.md#spreading-the-load) says what a\nchange costs and where, and `examples/podman-caddy` is that layout in a\ncontainer behind Caddy. `bench:fanout --url` measures a deployment of\nyour own ([Examples, benchmarks, and tests](docs/development.md)).\n\n## When to use something else\n\n- **Collaborative text, or merging two edits of the same value.** This is\n  last-writer-wins per field, not a text CRDT: on the same field, the\n  later edit replaces the earlier. For a shared document, embed a library\n  made for it (Yjs, Automerge) and keep the state around it here.\n- **Data too large to hand a client whole.** A client that opens a store\n  gets all of it: who may read is decided per store (what they may write,\n  per path). Large or mixed-audience data has to be split into stores; if\n  you need queries over a big dataset synced in part, this is the wrong\n  tool.\n- **No server to run.** You host it: one process holds a store, and\n  backups are yours to schedule. Authentication is a hook, not a system:\n  users, tokens and memberships stay in your application.\n\n## Documentation\n\n| | |\n|---|---|\n| [The model](docs/model.md) | State, lists, plain arrays, UI frameworks, how conflicts resolve, undo, scope |\n| [Offline](docs/offline.md) | The outbox, storage adapters, what a reconnect does |\n| [Multiple stores](docs/stores.md) | Many stores over one socket, one socket per browser |\n| [The server](docs/server.md) | Persistence, migrations, backups, state the server owns, embedding, Node |\n| [Authentication, presence, and eviction](docs/auth.md) | Who may open what, who is here, ending sessions |\n| [Relays](docs/relays.md) | Working while the server is away, fan-out, spreading the load, compression |\n| [Limits, memory, and observability](docs/limits.md) | The ceilings a public server needs, and what to watch |\n| [API](docs/api.md) | Every export, in brief |\n| [Wire protocol](docs/protocol.md) | The messages, refusal and close codes, a relay's link |\n| [Examples, benchmarks, and tests](docs/development.md) | What runs from a checkout |\n\n`examples/` holds complete programs with no build step: the shared list\nin plain JavaScript, Vue and React, the same served by Node, a\nserver-side client, and the podman-caddy deployment. See\n[examples/README.md](examples/README.md). Changes are in\n[CHANGELOG.md](CHANGELOG.md).\n\n## License\n\nISC\n","readmeFilename":"README.md"}