{"_id":"@absolutejs/sync-pack-comments","_rev":"12-fb4a70a3b82c005b86863cad1b051281","name":"@absolutejs/sync-pack-comments","dist-tags":{"latest":"0.6.0"},"versions":{"0.1.0":{"name":"@absolutejs/sync-pack-comments","version":"0.1.0","keywords":["absolutejs","sync","sync-pack","comments","threading","collaboration"],"author":"Alex Kahn","license":"CC BY-NC 4.0","_id":"@absolutejs/sync-pack-comments@0.1.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"599d961c16c251b893c9d8e71c8d2fa9e14c3d63","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-comments/-/sync-pack-comments-0.1.0.tgz","fileCount":5,"integrity":"sha512-fD/eRA53EYCf2ZZsG+ingdOQbKQ//fOIoOAWAl1R11IEWWkDR0i6cjevRD98REtOhc5tgXdmAjoSMdNGahjTMg==","signatures":[{"sig":"MEUCIQD+2Xt+1lLrrnlg9pcKdQAMUv5TCZ5Sx5esUVyoorjjHAIgBkhXOEy0lm6/aYNHxC6DKatiFLQswVwhsaKXP1vFgJY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38459},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"599d961c16c251b893c9d8e71c8d2fa9e14c3d63","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-fD/eRA53EYCf2ZZsG+ingdOQbKQ//fOIoOAWAl1R11IEWWkDR0i6cjevRD98REtOhc5tgXdmAjoSMdNGahjTMg==","repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"comments"},"_npmVersion":"10.8.3","description":"Threaded comments pack for @absolutejs/sync — per-resource ACL-scoped, author/moderator gates, optional CRDT bodies","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^1.9.1"},"peerDependencies":{"@absolutejs/sync":">= 1.9.1"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-comments_0.1.0_1780002047113_0.14611582584455585","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@absolutejs/sync-pack-comments","version":"0.2.0","keywords":["absolutejs","sync","sync-pack","comments","threading","collaboration"],"author":"Alex Kahn","license":"CC BY-NC 4.0","_id":"@absolutejs/sync-pack-comments@0.2.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"80c88e25632563e1860fa38c9b42af5899609749","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-comments/-/sync-pack-comments-0.2.0.tgz","fileCount":5,"integrity":"sha512-l0EqIzTNI5f98OE27URwf2lvLIpdw8i4PefwPkM/z7+wh1p1DzjYKhiAsQvnO57VvlSsfxDzTnsgh5RsmESZ8g==","signatures":[{"sig":"MEQCIELH1zxSOebFmmzCg1LRfYnxEm9+Yr9YqBNVr9qpiUw9AiB9rYp8ybwJWpfVjak5VbbLooEkOsw3IayD+Y4rbLYW/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47501},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"80c88e25632563e1860fa38c9b42af5899609749","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-l0EqIzTNI5f98OE27URwf2lvLIpdw8i4PefwPkM/z7+wh1p1DzjYKhiAsQvnO57VvlSsfxDzTnsgh5RsmESZ8g==","repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"comments"},"_npmVersion":"10.8.3","description":"Threaded comments pack for @absolutejs/sync — per-resource ACL-scoped, author/moderator gates, optional CRDT bodies","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^1.9.2"},"peerDependencies":{"@absolutejs/sync":">= 1.9.1"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-comments_0.2.0_1780008029747_0.9346913874095584","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@absolutejs/sync-pack-comments","version":"0.3.0","keywords":["absolutejs","sync","sync-pack","comments","threading","collaboration"],"author":"Alex Kahn","license":"CC BY-NC 4.0","_id":"@absolutejs/sync-pack-comments@0.3.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"4760a98f66bed969041aa2616a733f27103794f3","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-comments/-/sync-pack-comments-0.3.0.tgz","fileCount":5,"integrity":"sha512-3PLJVt5/U9oSddTOycwOgx490zPOYFeBEKokjhR+i3upLMUpiB454e6+pkNnmJHihVlDicgY+e8Pccp1+wi8nw==","signatures":[{"sig":"MEUCICF/s9jhX5CLhme0rrijHEoJplXi/Msarf+i1wGT9Q/OAiEApvWLFSG7MavOVjSnm2joDTCg0P+L9i1mJdkGQQ3Oh8w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49925},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"4760a98f66bed969041aa2616a733f27103794f3","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-3PLJVt5/U9oSddTOycwOgx490zPOYFeBEKokjhR+i3upLMUpiB454e6+pkNnmJHihVlDicgY+e8Pccp1+wi8nw==","repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"comments"},"_npmVersion":"10.8.3","description":"Threaded comments pack for @absolutejs/sync — per-resource ACL-scoped, author/moderator gates, optional CRDT bodies","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^1.9.2"},"peerDependencies":{"@absolutejs/sync":">= 1.9.1"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-comments_0.3.0_1780008369463_0.8916470308088069","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@absolutejs/sync-pack-comments","version":"0.4.0","keywords":["absolutejs","sync","sync-pack","comments","threading","collaboration"],"author":"Alex Kahn","license":"CC BY-NC 4.0","_id":"@absolutejs/sync-pack-comments@0.4.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"da43f31ff15480bb056f5d3ad7c5e614ea34707c","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-comments/-/sync-pack-comments-0.4.0.tgz","fileCount":5,"integrity":"sha512-cTaLBYyh8WJcnko9yII60YcBqzRVAGAtN4s8kRvZ2GrMj6OMBUNV6MDCA/kMLckdy7IGrO+o/QmRUQW6QoTW2Q==","signatures":[{"sig":"MEUCIQDvlCr09Q+GZokLoTIzd/mjiJ3bn9bC/Old2s2rz7Yh4AIgDhZ710ctvBNCwp/Y+b04pxgHD2YqycJOk/5dXEc6rjI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72089},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"da43f31ff15480bb056f5d3ad7c5e614ea34707c","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-cTaLBYyh8WJcnko9yII60YcBqzRVAGAtN4s8kRvZ2GrMj6OMBUNV6MDCA/kMLckdy7IGrO+o/QmRUQW6QoTW2Q==","repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"comments"},"_npmVersion":"10.8.3","description":"Threaded comments pack for @absolutejs/sync — per-resource ACL-scoped, author/moderator gates, optional CRDT bodies","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^1.9.2"},"peerDependencies":{"@absolutejs/sync":">= 1.9.1"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-comments_0.4.0_1780014329859_0.5240094055970783","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@absolutejs/sync-pack-comments","version":"0.4.1","keywords":["absolutejs","sync","sync-pack","comments","threading","collaboration"],"author":"Alex Kahn","license":"Apache-2.0","_id":"@absolutejs/sync-pack-comments@0.4.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"8a447560759e2149906a6b61213946233543dccc","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-comments/-/sync-pack-comments-0.4.1.tgz","fileCount":6,"integrity":"sha512-1mJM6QKl1uUY3eVH7yfUvCVTLXd7cwZDYRfy4u3YwmilTzApsuh+Q5xWWBEw8dAs8gR9xITxNLy0RybBjtuowg==","signatures":[{"sig":"MEQCIB2mFWPDWY2vQwpSBMXO0IrxNu5L8A8JC1KI7sjbypBbAiAWwIwXHKPnuV7JBtqs+IUbAp7WYRndR5a19gZ3i9UQWA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83445},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"8a447560759e2149906a6b61213946233543dccc","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-1mJM6QKl1uUY3eVH7yfUvCVTLXd7cwZDYRfy4u3YwmilTzApsuh+Q5xWWBEw8dAs8gR9xITxNLy0RybBjtuowg==","repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"comments"},"_npmVersion":"10.8.3","description":"Threaded comments pack for @absolutejs/sync — per-resource ACL-scoped, author/moderator gates, optional CRDT bodies","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^1.9.2"},"peerDependencies":{"@absolutejs/sync":">= 1.9.1"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-comments_0.4.1_1780071438846_0.9798474192522","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@absolutejs/sync-pack-comments","version":"0.4.2","keywords":["absolutejs","sync","sync-pack","comments","threading","collaboration"],"author":"Alex Kahn","license":"Apache-2.0","_id":"@absolutejs/sync-pack-comments@0.4.2","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"72c5a009f7f0e1d2ccf01ed05e9bc4c8d8919075","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-comments/-/sync-pack-comments-0.4.2.tgz","fileCount":6,"integrity":"sha512-DBjE0dRRcY/QIBpO3l6WL1EkVp19koQTz9e9P7R1pw+LOfJZKq2ONnXqZji7IkFeUIjfS8qql8YhIn8Y31lj3g==","signatures":[{"sig":"MEUCID9VtXQSC1naSxeMD8a2GPlEiVBtzCA+JqnSCM7YxpMlAiEA+McEmaiCJbNB+kWpv+Q03oDB7CKZ1eJLJg+Wj6jujDo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83445},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"72c5a009f7f0e1d2ccf01ed05e9bc4c8d8919075","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-DBjE0dRRcY/QIBpO3l6WL1EkVp19koQTz9e9P7R1pw+LOfJZKq2ONnXqZji7IkFeUIjfS8qql8YhIn8Y31lj3g==","repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"comments"},"_npmVersion":"10.8.3","description":"Threaded comments pack for @absolutejs/sync — per-resource ACL-scoped, author/moderator gates, optional CRDT bodies","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^1.9.2"},"peerDependencies":{"@absolutejs/sync":">= 1.9.1"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-comments_0.4.2_1780071569320_0.5844493180271253","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@absolutejs/sync-pack-comments","version":"0.4.3","keywords":["absolutejs","sync","sync-pack","comments","threading","collaboration"],"author":"Alex Kahn","license":"Apache-2.0","_id":"@absolutejs/sync-pack-comments@0.4.3","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/sync-packs/tree/main/comments","bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"dist":{"shasum":"5dcae4f2f18214bb6b258e1f203388c9f1538f1e","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-comments/-/sync-pack-comments-0.4.3.tgz","fileCount":10,"integrity":"sha512-1MwGvYb+6TSZSWdXBbPqvHdiCKRY3y5jqwxCBsxGQ6nxgrgOFeOzS71/XVSkzUchSYtarGhYuJANz5JYuZnxLQ==","signatures":[{"sig":"MEUCIDY74Eh0FQZ+0z9x5BOTw4o6SSBBPnXsa+0Yec/bM0N5AiEAn5al+LeDIW3xgBMblv9+j5FuHpJzrHXQgi8NHkDtroI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1186104},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"5dcae4f2f18214bb6b258e1f203388c9f1538f1e","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-1MwGvYb+6TSZSWdXBbPqvHdiCKRY3y5jqwxCBsxGQ6nxgrgOFeOzS71/XVSkzUchSYtarGhYuJANz5JYuZnxLQ==","absolutejs":{"manifestContract":1},"repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"comments"},"_npmVersion":"10.8.3","description":"Threaded comments pack for @absolutejs/sync — per-resource ACL-scoped, author/moderator gates, optional CRDT bodies","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^1.9.2"},"peerDependencies":{"@absolutejs/sync":">= 1.9.1"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-comments_0.4.3_1783965467755_0.9336710614655004","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@absolutejs/sync-pack-comments","version":"0.4.4","keywords":["absolutejs","sync","sync-pack","comments","threading","collaboration"],"author":"Alex Kahn","license":"Apache-2.0","_id":"@absolutejs/sync-pack-comments@0.4.4","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/sync-packs/tree/main/comments","bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"dist":{"shasum":"d00b6db7b0a09380276eaaddcb753160f48fcd54","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-comments/-/sync-pack-comments-0.4.4.tgz","fileCount":10,"integrity":"sha512-AQrmbb9yruTqLUgydduHzGF0ntRyFX0ML1kWB6DN4qp0lms9j5eRuoxN3x2tPxZ1LWM6JNonYx12EpxevTfm5g==","signatures":[{"sig":"MEQCIE1swjtxN/eJQGMIGQcddTQTt5mD2SkDROh0Inp82IxwAiBsls4v+K3PtIBCEAq2S7Mg7R4mSLsHrC5bI41nasM5yA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1207826},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"d00b6db7b0a09380276eaaddcb753160f48fcd54","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-AQrmbb9yruTqLUgydduHzGF0ntRyFX0ML1kWB6DN4qp0lms9j5eRuoxN3x2tPxZ1LWM6JNonYx12EpxevTfm5g==","absolutejs":{"manifestContract":2},"repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"comments"},"_npmVersion":"10.8.3","description":"Threaded comments pack for @absolutejs/sync — per-resource ACL-scoped, author/moderator gates, optional CRDT bodies","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^1.9.2"},"peerDependencies":{"@absolutejs/sync":">= 1.9.1"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-comments_0.4.4_1784846208278_0.07795520962629188","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@absolutejs/sync-pack-comments","version":"0.4.5","keywords":["absolutejs","sync","sync-pack","comments","threading","collaboration"],"author":"Alex Kahn","license":"Apache-2.0","_id":"@absolutejs/sync-pack-comments@0.4.5","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/sync-packs/tree/main/comments","bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"dist":{"shasum":"4eafd245bb027cba6adbd0047d3bbd0e7c53106d","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-comments/-/sync-pack-comments-0.4.5.tgz","fileCount":10,"integrity":"sha512-nNy8Q+MYkE6hL/1YLx/BhyyCNWDirUNOTaccQqQDMnT4Ryon3K4BXSQZqylvzexXPqFRXoH064hHgdtsM+GxZg==","signatures":[{"sig":"MEUCIG3VFPTdKy4pg5O8dHMtTGk+Br1Y06aENqutzdd1EsriAiEAlezte7XUnoZP2e3eJQVxTbE+/BDTOlnNTjopDfVM2F8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":550465},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"4eafd245bb027cba6adbd0047d3bbd0e7c53106d","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-nNy8Q+MYkE6hL/1YLx/BhyyCNWDirUNOTaccQqQDMnT4Ryon3K4BXSQZqylvzexXPqFRXoH064hHgdtsM+GxZg==","absolutejs":{"runtimePeers":{"@absolutejs/sync":{"range":">=2.11.0 <3","tested":"2.11.0","buildExternals":["@absolutejs/sync"],"artifactImports":["@absolutejs/sync/engine"]}},"manifestContract":2},"repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"comments"},"_npmVersion":"10.8.3","description":"Threaded comments pack for @absolutejs/sync — per-resource ACL-scoped, author/moderator gates, optional CRDT bodies","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"2.11.0"},"peerDependencies":{"@absolutejs/sync":">=2.11.0 <3"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-comments_0.4.5_1784913347560_0.3431717196969244","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@absolutejs/sync-pack-comments","version":"0.4.6","keywords":["absolutejs","sync","sync-pack","comments","threading","collaboration"],"author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/sync-pack-comments@0.4.6","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/sync-packs/tree/main/comments","bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"dist":{"shasum":"43eebaddc79cb25c65ab7c82d28948e997085f38","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-comments/-/sync-pack-comments-0.4.6.tgz","fileCount":10,"integrity":"sha512-c1PEHYBpkep2Hzn2OkX9zPCv/GL6aLtjFt/vjqULjNKz9nE0dBHnfU6L5uK557CPA8IIrsDWvuWpynXf33Eg6w==","signatures":[{"sig":"MEUCIQDq6euH9fbRX5aNiEtE/nWCGW4M4HAdrlChifBprl/j/AIgHxe13XZ/792B3MOft87+M+pWVQ15JigiC5HAF79fIYo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":558210},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"ba7c2594b58ad9e1cd434195d96823ba678f2260","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/sync-packs.git","type":"git","directory":"comments"},"_npmVersion":"10.9.2","description":"Threaded comments pack for @absolutejs/sync — per-resource ACL-scoped, author/moderator gates, optional CRDT bodies","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"2.11.0"},"peerDependencies":{"@absolutejs/sync":">=2.11.0 <3"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-comments_0.4.6_1787720831071_0.12529374557977624","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@absolutejs/sync-pack-comments","version":"0.5.0","keywords":["absolutejs","sync","sync-pack","comments","threading","collaboration"],"author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/sync-pack-comments@0.5.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/sync-packs/tree/main/comments","bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"dist":{"shasum":"927d015c1d6befc3af3e8b5a32c161c3c1066bc2","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-comments/-/sync-pack-comments-0.5.0.tgz","fileCount":10,"integrity":"sha512-/wThNjgog1ajiCvXoFpjveZYuTWwD2/SXiroCBVs/h/pWL8nIlfHGP845CsreZY2GEWllOWE0L1IJzznF9y/og==","signatures":[{"sig":"MEUCIDj5rwlNuKU4Uxz78CHu2n1PpUi4n4bFebEtad+f1+X/AiEAokHEaFNM1mvDxvAyKTFh2IA2ylFOkYnSsANgyF4EIN8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":558836},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"f6a9d1a741b1b3f39977cea64ba6931b3f2f61db","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"sync":{"localSchema":{"version":1,"localData":{"mutations":[{"match":"*comment*","protection":"required","sensitivity":"private","onProtectionUnavailable":"memory-only"}],"collections":[{"match":"*comment*","protection":"required","sensitivity":"private","evictionPriority":"normal","onProtectionUnavailable":"memory-only"}]}}},"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/sync-packs.git","type":"git","directory":"comments"},"_npmVersion":"10.9.2","description":"Threaded comments pack for @absolutejs/sync — per-resource ACL-scoped, author/moderator gates, optional CRDT bodies","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"2.28.0"},"peerDependencies":{"@absolutejs/sync":">=2.11.0 <3"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-comments_0.5.0_1787723196924_0.45588977820543675","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@absolutejs/sync-pack-comments","version":"0.6.0","description":"Threaded comments pack for @absolutejs/sync — per-resource ACL-scoped, author/moderator gates, optional CRDT bodies","repository":{"type":"git","url":"git+https://github.com/absolutejs/sync-packs.git","directory":"comments"},"homepage":"https://github.com/absolutejs/sync-packs/tree/main/comments","bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","type":"module","license":"Apache-2.0","author":{"name":"Alex Kahn"},"publishConfig":{"access":"public"},"keywords":["absolutejs","sync","sync-pack","comments","threading","collaboration"],"scripts":{"build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json && absolute-manifest emit","test":"bun test","typecheck":"tsc --noEmit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish"},"peerDependencies":{"@absolutejs/sync":">=2.11.0 <3"},"devDependencies":{"@absolutejs/sync":"2.29.0","@types/bun":"1.3.14","prettier":"3.5.3","typescript":"5.8.3"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"absolutejs":{"manifestContract":2,"sync":{"localSchema":{"version":1,"localData":{"collections":[{"match":"*comment*","sensitivity":"private","protection":"required","onProtectionUnavailable":"memory-only","evictionPriority":"normal"}],"mutations":[{"match":"*comment*","sensitivity":"private","protection":"required","onProtectionUnavailable":"memory-only","conflict":{"strategy":"manual"}}]}}}},"dependencies":{"@absolutejs/manifest":"^0.9.0","@sinclair/typebox":"^0.34.0"},"_id":"@absolutejs/sync-pack-comments@0.6.0","gitHead":"70fac17d77643bafa53a933112c69a65b06245e9","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-ISODECjgKlcVupsxiuB93AJQkA8bJFyY/C3ZXyo/IbzVsmQBRRlU/D/dHptWQkEoRsq8LgSZjNyKGCmy5+zPUQ==","shasum":"932b089f8b7abfb2c922596138d35e9a03a9eb55","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-comments/-/sync-pack-comments-0.6.0.tgz","fileCount":10,"unpackedSize":559165,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCs/7S/lz6YbJDb6y2a+rSzhMKVWPE4qlkpSSGVojnPawIhAKszMdXIjp7lhKPEUV66+8c2WFNu4ovOOWELMBxAfnuf"}]},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"directories":{},"maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sync-pack-comments_0.6.0_1787729600949_0.6350492318867453"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-28T21:00:46.934Z","modified":"2026-08-26T07:33:21.271Z","0.1.0":"2026-05-28T21:00:47.260Z","0.2.0":"2026-05-28T22:40:29.906Z","0.3.0":"2026-05-28T22:46:09.612Z","0.4.0":"2026-05-29T00:25:30.053Z","0.4.1":"2026-05-29T16:17:18.995Z","0.4.2":"2026-05-29T16:19:29.487Z","0.4.3":"2026-07-13T17:57:47.947Z","0.4.4":"2026-07-23T22:36:48.462Z","0.4.5":"2026-07-24T17:15:47.701Z","0.4.6":"2026-08-26T05:07:11.259Z","0.5.0":"2026-08-26T05:46:37.079Z","0.6.0":"2026-08-26T07:33:21.071Z"},"bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"author":{"name":"Alex Kahn"},"license":"Apache-2.0","homepage":"https://github.com/absolutejs/sync-packs/tree/main/comments","keywords":["absolutejs","sync","sync-pack","comments","threading","collaboration"],"repository":{"type":"git","url":"git+https://github.com/absolutejs/sync-packs.git","directory":"comments"},"description":"Threaded comments pack for @absolutejs/sync — per-resource ACL-scoped, author/moderator gates, optional CRDT bodies","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"readme":"# @absolutejs/sync-pack-comments\n\nThreaded comments as a sync pack for\n[`@absolutejs/sync`](https://github.com/absolutejs/sync). Per-resource ACL\ninjection, author/moderator gates, optional CRDT bodies. Plugs into a\n`SyncEngine` with one `engine.registerPack(...)` call.\n\n```bash\nbun add @absolutejs/sync-pack-comments\n```\n\n## Usage\n\n```ts\nimport { createSyncEngine } from '@absolutejs/sync/engine';\nimport { createCommentsPack } from '@absolutejs/sync-pack-comments';\n\nconst engine = createSyncEngine();\nengine.registerPack(\n\tcreateCommentsPack({\n\t\t// REQUIRED: gate read access on a resource. The host knows which\n\t\t// resources a given ctx can see; the pack does not duplicate that.\n\t\tcanReadResource: (resourceId, ctx) =>\n\t\t\thostAcl.canRead(resourceId, ctx.session.userId),\n\n\t\t// REQUIRED in practice: how the pack reads the current actor id\n\t\t// from your app's ctx. Default is `(ctx) => ctx.userId`.\n\t\tgetActorId: (ctx) => ctx.session.userId,\n\n\t\t// OPTIONAL: moderator predicate. Used by comments:delete (author OR\n\t\t// moderator can delete). Default `() => false`.\n\t\tcanModerate: (ctx) => ctx.session.isModerator,\n\n\t\t// OPTIONAL: max thread depth (top-level = 0). Default 8.\n\t\tmaxDepth: 8,\n\n\t\t// OPTIONAL: wire the comment body as a CRDT field via registerCrdt\n\t\t// so concurrent edits merge instead of clobbering. Pass anything\n\t\t// implementing `CrdtMergeable<T>` — e.g. yjsText from\n\t\t// @absolutejs/sync-yjs. The pack does NOT import Yjs.\n\t\t// bodyCrdt: yjsText,\n\t})\n);\n```\n\n## The pack exposes\n\n| Surface     | Name                | What it does                                                            |\n| ----------- | ------------------- | ----------------------------------------------------------------------- |\n| Collection  | `comments`          | Subscribe with `params: { resourceId }` — returns the comment tree      |\n| Mutation    | `comments:create`   | Args: `{ resourceId, body, parentCommentId? }` — stamps `authorId`      |\n| Mutation    | `comments:edit`     | Args: `{ commentId, body }` — author only, stamps `editedAt`            |\n| Mutation    | `comments:delete`   | Args: `{ commentId }` — author or moderator                             |\n\nWhen `bodyCrdt` is set, the engine auto-registers a `comments:merge`\nmutation through `registerCrdt` — clients call that to merge CRDT body\nupdates concurrently with regular edits.\n\n## Row shape\n\n```ts\ntype CommentRow = {\n\tid: string;\n\tresourceId: string;\n\tparentCommentId: string | null; // null on top-level; parent id on replies\n\tauthorId: string;\n\tbody: string;\n\tdepth: number; // 0 for top-level, parent.depth + 1 for replies\n\tcreatedAt: number;\n\teditedAt: number | null;\n};\n```\n\nThe collection returns a flat list of rows for the resource; the client\nbuilds the tree by walking `parentCommentId`. Depth is stored on the row\nso a client can short-circuit-render without traversing the full chain.\n\n## Storage\n\nDefault: per-instance in-memory store. To use a persistent backend (Drizzle,\nPostgres, …), pass a custom `store`:\n\n```ts\nimport {\n\tcreateCommentsPack,\n\ttype CommentsStore,\n} from '@absolutejs/sync-pack-comments';\n\nconst store: CommentsStore = {\n\tgetById: (id) => /* SELECT * FROM comments WHERE id = $1 */,\n\treader: { all: () => /* SELECT * FROM comments */ },\n\twriter: {\n\t\tinsert: (row) => /* INSERT */,\n\t\tupdate: (row) => /* UPDATE */,\n\t\tdelete: (row) => /* DELETE WHERE id = $1 */,\n\t},\n};\n\nengine.registerPack(createCommentsPack({ store, canReadResource, getActorId }));\n```\n\nThe `getById` method is required (used by edit + delete to verify ownership\nand by create to walk the parent chain for depth math).\n\n## Multiple instances\n\nTo run two comments packs on the same engine (e.g. one per product\nsurface), pass a `prefix` to each. It scopes the owned table, the\ncollection, and the mutation names:\n\n```ts\nengine.registerPack(createCommentsPack({ prefix: 'docs_', canReadResource, getActorId }));\nengine.registerPack(createCommentsPack({ prefix: 'chat_', canReadResource, getActorId }));\n\n// Tables:       docs_comments,        chat_comments\n// Collections:  docs_comments,        chat_comments\n// Mutations:    docs_comments:create, chat_comments:create  (etc.)\n```\n\n## Composition\n\nThis pack composes with the rest of your sync graph via **subscriptions**.\nA presence pack that wants to show \"Alice is replying to this thread\" should\nsubscribe to `comments` and `presence` separately — it should NOT call\n`comments:*` from inside its own handler. See the design doc rules in\n[`syncPacks.design.md`](https://github.com/absolutejs/sync/blob/main/src/engine/syncPacks.design.md).\n\n## Optional: `comments-with-author` join collection (0.2+)\n\nSet `joinUsers` to additionally register a `comments-with-author` join\ncollection that pairs each comment with the host's user row. The pack does\nNOT own the users table; it adds it to `readsTables` so the engine knows\nthe dependency and your devtools see the full graph.\n\n```ts\ntype Author = { id: string; displayName: string; avatarUrl?: string };\n\nengine.registerReader('users', { all: () => db.users.list() });\nengine.registerWriter('users', { /* ... */ });\n\nengine.registerPack(\n\tcreateCommentsPack<MyCtx, Author>({\n\t\tcanReadResource,\n\t\tgetActorId,\n\t\tjoinUsers: {\n\t\t\t// Default 'users'; pass another name if your table differs.\n\t\t\ttable: 'users',\n\t\t\t// Default (u) => u.id; override if your user id key isn't `id`.\n\t\t\t// key: (user) => user.userId,\n\t\t\t// Required: host supplies the users-side hydrate.\n\t\t\thydrate: () => db.users.list(),\n\t\t},\n\t}),\n);\n\n// Subscribe with the same params shape as the base collection.\nconst subscription = await engine.subscribe<\n\tCommentRow & { author: Author },\n\t{ resourceId: string }\n>({\n\tcollection: 'comments-with-author',\n\tparams: { resourceId },\n\tctx,\n\tonDiff: rerender,\n});\n// subscription.initial[0] === { ...comment, author: { id, displayName, ... } }\n```\n\nThe engine inner-joins on `comment.authorId === user.id`; comments\nwhose author is missing from the users table are excluded from the join\n(but still appear in the base `comments` collection). `canReadResource`\ngates the join the same way it gates the base.\n\n## Planned for 0.3+\n\n- **In-thread full-text search** via `registerSearch` on the comments\n  table.\n- **Reactions** — a `reactionsTable` config that adds an emoji-reaction\n  side table with create/remove/list mutations.\n","readmeFilename":"README.md"}