{"_id":"@absolutejs/sync-loro","_rev":"4-435cd015c6c31b17ad6f9055f8de8729","name":"@absolutejs/sync-loro","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"name":"@absolutejs/sync-loro","version":"0.0.1","keywords":["absolutejs","sync","crdt","loro","collaborative","multiplayer"],"author":"Alex Kahn","license":"CC BY-NC 4.0","_id":"@absolutejs/sync-loro@0.0.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"13af895026cc5f2da381594fd5ef70c78c39144e","tarball":"https://registry.npmjs.org/@absolutejs/sync-loro/-/sync-loro-0.0.1.tgz","fileCount":5,"integrity":"sha512-rt4aouvjGxrPAJ8lQx0rQi5XOJmLct8xW3Pkthc4ll11yOdLt9QkB1R3B19GLAZ4FPd1snH2X/D+JGYIIjqYsw==","signatures":[{"sig":"MEYCIQC7pCES0wZW5wWFrXrdNbASejOn2dFfaSV73PIoZZuBOQIhAL5wHi5fIT1W2QBmc3Uhhy03fYWZODy3v47M8EoSiq0h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11458},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"13af895026cc5f2da381594fd5ef70c78c39144e","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 --external loro-crdt && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-rt4aouvjGxrPAJ8lQx0rQi5XOJmLct8xW3Pkthc4ll11yOdLt9QkB1R3B19GLAZ4FPd1snH2X/D+JGYIIjqYsw==","repository":{"url":"https://github.com/absolutejs/sync-adapters.git","type":"git","directory":"loro"},"_npmVersion":"10.8.3","description":"Loro-backed collaborative-text CRDT adapter for @absolutejs/sync","directories":{},"_nodeVersion":"24.3.0","dependencies":{"loro-crdt":"^1.12.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^0.15.0"},"peerDependencies":{"@absolutejs/sync":">= 0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sync-loro_0.0.1_1779758746366_0.26924447438544097","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@absolutejs/sync-loro","version":"0.0.2","keywords":["absolutejs","sync","crdt","loro","collaborative","multiplayer"],"author":"Alex Kahn","license":"Apache-2.0","_id":"@absolutejs/sync-loro@0.0.2","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"5f3f4be7301baa4f27232cf07b4639cf31a43455","tarball":"https://registry.npmjs.org/@absolutejs/sync-loro/-/sync-loro-0.0.2.tgz","fileCount":6,"integrity":"sha512-8tsx3BuEG1zDB6aVx82rQV5AOsGS4bbBa/Qks9+/xCcLYBWZH7LVyVdfSjwLSDfvvtnjCIS1pSKENcxWi6HoDA==","signatures":[{"sig":"MEYCIQCJDp/AbTfkbIX5POJFewgqbN64XK69gyOhsqVD/Es0swIhAL/c46T/mbg7fs1SKFjq8P2dDCOAWlN1Y8Zr6QZ8DtY3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22814},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"5f3f4be7301baa4f27232cf07b4639cf31a43455","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 --external loro-crdt && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-8tsx3BuEG1zDB6aVx82rQV5AOsGS4bbBa/Qks9+/xCcLYBWZH7LVyVdfSjwLSDfvvtnjCIS1pSKENcxWi6HoDA==","repository":{"url":"https://github.com/absolutejs/sync-adapters.git","type":"git","directory":"loro"},"_npmVersion":"10.8.3","description":"Loro-backed collaborative-text CRDT adapter for @absolutejs/sync","directories":{},"_nodeVersion":"24.3.0","dependencies":{"loro-crdt":"^1.12.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^0.15.0"},"peerDependencies":{"@absolutejs/sync":">= 0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sync-loro_0.0.2_1780071587218_0.8638110175649303","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@absolutejs/sync-loro","version":"0.0.3","keywords":["absolutejs","sync","crdt","loro","collaborative","multiplayer"],"author":"Alex Kahn","license":"Apache-2.0","_id":"@absolutejs/sync-loro@0.0.3","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/sync-adapters/tree/main/loro","bugs":{"url":"https://github.com/absolutejs/sync-adapters/issues"},"dist":{"shasum":"bf624f83caecfd638a3a7c14de020d8aa72403c4","tarball":"https://registry.npmjs.org/@absolutejs/sync-loro/-/sync-loro-0.0.3.tgz","fileCount":10,"integrity":"sha512-eDsW99nIjv9dkr8j2OI8abDGJQ1U3lO1c8WeeA6y0j8SAtd3wZ/Jodoqpc0zZSV+hgoZOOeslu3CklXgiDFlfA==","signatures":[{"sig":"MEQCIC2Ba/8bWptr+MC78XSCcEUhqjzCFQEapBkP4V7w0gGhAiALHmYDRIC549gFKQDdjlCHs0bCZuSgfC8J15xegXBUCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1112682},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"bf624f83caecfd638a3a7c14de020d8aa72403c4","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 --external loro-crdt && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-eDsW99nIjv9dkr8j2OI8abDGJQ1U3lO1c8WeeA6y0j8SAtd3wZ/Jodoqpc0zZSV+hgoZOOeslu3CklXgiDFlfA==","absolutejs":{"manifestContract":1},"repository":{"url":"https://github.com/absolutejs/sync-adapters.git","type":"git","directory":"loro"},"_npmVersion":"10.8.3","description":"Loro-backed collaborative-text CRDT adapter for @absolutejs/sync","directories":{},"_nodeVersion":"24.3.0","dependencies":{"loro-crdt":"^1.12.2","@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":"^0.15.0"},"peerDependencies":{"@absolutejs/sync":">= 0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sync-loro_0.0.3_1783965130377_0.8429540187683462","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@absolutejs/sync-loro","version":"0.0.4","description":"Loro-backed collaborative-text CRDT adapter for @absolutejs/sync","repository":{"type":"git","url":"https://github.com/absolutejs/sync-adapters.git","directory":"loro"},"homepage":"https://github.com/absolutejs/sync-adapters/tree/main/loro","bugs":{"url":"https://github.com/absolutejs/sync-adapters/issues"},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","type":"module","license":"Apache-2.0","author":"Alex Kahn","publishConfig":{"access":"public"},"keywords":["absolutejs","sync","crdt","loro","collaborative","multiplayer"],"scripts":{"build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync --external loro-crdt && 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 build && bun publish"},"dependencies":{"@absolutejs/manifest":"^0.7.1","@sinclair/typebox":"^0.34.0","loro-crdt":"^1.12.2"},"peerDependencies":{"@absolutejs/sync":">=2.11.0 <3"},"devDependencies":{"@absolutejs/sync":"2.11.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,"runtimePeers":{"@absolutejs/sync":{"artifactImports":[],"buildExternals":["@absolutejs/sync"],"range":">=2.11.0 <3","tested":"2.11.0"}}},"_id":"@absolutejs/sync-loro@0.0.4","_integrity":"sha512-eCYo9PBtT61JSpHzr3PSh3M72gKxdH1AEaS0zdhYLix8qA2E1D2Y7nRuPDYU6tgDHl5J/bdQ3X2wabuBuzwEew==","_nodeVersion":"24.3.0","_npmVersion":"10.8.3","shasum":"29529ec5389cdbd72c9528f35c36ce7bd9dbe8d3","dist":{"integrity":"sha512-eCYo9PBtT61JSpHzr3PSh3M72gKxdH1AEaS0zdhYLix8qA2E1D2Y7nRuPDYU6tgDHl5J/bdQ3X2wabuBuzwEew==","shasum":"29529ec5389cdbd72c9528f35c36ce7bd9dbe8d3","tarball":"https://registry.npmjs.org/@absolutejs/sync-loro/-/sync-loro-0.0.4.tgz","fileCount":10,"unpackedSize":475406,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAp3E9fSOSRSgtQ7ED4Mw3r4hNDXYPTPz6EE1eaL+9S8AiEA6SQgIskDMMZ4XUL4mnrgMqgbP9HNmRDDXydCWJ9IK5Q="}]},"_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-loro_0.0.4_1784913336769_0.5006519891841856"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-26T01:25:46.078Z","modified":"2026-07-24T17:15:37.099Z","0.0.1":"2026-05-26T01:25:46.564Z","0.0.2":"2026-05-29T16:19:47.357Z","0.0.3":"2026-07-13T17:52:10.533Z","0.0.4":"2026-07-24T17:15:36.931Z"},"bugs":{"url":"https://github.com/absolutejs/sync-adapters/issues"},"author":"Alex Kahn","license":"Apache-2.0","homepage":"https://github.com/absolutejs/sync-adapters/tree/main/loro","keywords":["absolutejs","sync","crdt","loro","collaborative","multiplayer"],"repository":{"type":"git","url":"https://github.com/absolutejs/sync-adapters.git","directory":"loro"},"description":"Loro-backed collaborative-text CRDT adapter for @absolutejs/sync","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"readme":"# @absolutejs/sync-loro\n\nA [Loro](https://loro.dev)-backed collaborative-text CRDT for\n[`@absolutejs/sync`](https://github.com/absolutejs/sync), behind the same\n`CrdtText` / `TextCrdtAdapter` contract as the core's zero-dependency `rgaText`\nand `@absolutejs/sync-yjs`.\n\n`@absolutejs/sync/crdt` ships a first-party RGA text CRDT that's great for\noffline-merge and moderate collaboration. Loro is a fast, Rust/wasm CRDT library;\nthis adapter lets you swap it in without touching your call sites.\n\n## Install\n\n```bash\nbun add @absolutejs/sync-loro loro-crdt\n```\n\n`@absolutejs/sync` is a peer dependency. `loro-crdt` is a runtime dependency you\ninstall alongside.\n\n## Use\n\n```ts\nimport { loroText } from '@absolutejs/sync-loro';\n// ...instead of: import { rgaText } from '@absolutejs/sync/crdt';\n\n// Server — declare the CRDT field with this backend\nengine.registerCrdt('doc', { state: loroText });\n\n// Client — same hook, just pass the backend's factory\nconst doc = useCollaborativeText({\n\tcollection: 'doc',\n\tfield: 'state',\n\tid: 'shared',\n\turl,\n\tcreate: (replica) => createLoroText(replica)\n});\n```\n\nThe serialized state is a base64 string of a Loro snapshot — JSON-safe for the\nsync engine's change feed. `merge` is commutative/associative/idempotent.\n\n## The contract\n\nImplements `TextCrdtAdapter<string>` from `@absolutejs/sync/crdt`: `create`,\n`merge`, `empty`, `textOf`. The `replica` argument is accepted for contract\ncompatibility; Loro assigns a peer id internally.\n\n## License\n\nApache License 2.0. See [LICENSE](./LICENSE).\n","readmeFilename":"README.md"}