{"_id":"@8space-lab/univer-collab-bridge","_rev":"5-9c99c4d7b809aa9360efeaf262104ccd","name":"@8space-lab/univer-collab-bridge","dist-tags":{"latest":"0.2.2"},"versions":{"0.1.0":{"name":"@8space-lab/univer-collab-bridge","version":"0.1.0","keywords":["univer","collaboration","yjs","spreadsheet","plugin"],"author":{"name":"8Space Lab"},"license":"Apache-2.0","_id":"@8space-lab/univer-collab-bridge@0.1.0","maintainers":[{"name":"8space","email":"moriya@8space.kr"}],"homepage":"https://github.com/moriya-8space/8space-univer-bridge","bugs":{"url":"https://github.com/moriya-8space/8space-univer-bridge/issues"},"dist":{"shasum":"9e65234b2ed4bc8bf4b334edc5dec38fdcfe3498","tarball":"https://registry.npmjs.org/@8space-lab/univer-collab-bridge/-/univer-collab-bridge-0.1.0.tgz","fileCount":15,"integrity":"sha512-dXWUcfuzc8Vk27W8J9SYjML+D+lLqy284D3mZAcBXY12Du6YaZSAH2GSNiukkpkXSPlUhL9Du8ScxiGYD2f/sQ==","signatures":[{"sig":"MEQCIHZnp5k3n+7QPyonIJeGcSotq/nJUDtZvUa/mCVXigxmAiAWI32tjC5wdnxw/GQjoevhzdE0HId51pzC7YIqejHbkg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":105266},"main":"./src/index.ts","types":"./lib/types/index.d.ts","exports":{".":"./src/index.ts","./*":"./src/*"},"gitHead":"d6b047aa693768a0f7194986f12c74997bdfbd72","private":false,"scripts":{"test":"vitest run","build":"pnpm run build:bundle && pnpm run build:types","coverage":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","build:types":"tsc -p tsconfig.node.json","build:bundle":"univer-cli build"},"_npmUser":{"name":"8space","email":"moriya@8space.kr"},"repository":{"url":"git+https://github.com/moriya-8space/8space-univer-bridge.git","type":"git"},"_npmVersion":"11.5.1","description":"Clean-room collaboration bridge for Univer OSS runtimes.","directories":{"lib":"lib"},"_nodeVersion":"24.6.0","dependencies":{"@univerjs/core":"workspace:*"},"publishConfig":{"main":"./lib/es/index.js","access":"public","module":"./lib/es/index.js","exports":{".":{"types":"./lib/types/index.d.ts","import":"./lib/es/index.js","require":"./lib/cjs/index.js"},"./*":{"types":"./lib/types/index.d.ts","import":"./lib/es/*","require":"./lib/cjs/*"},"./lib/*":"./lib/*"}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^6.0.3","@univerjs-infra/shared":"workspace:*"},"peerDependencies":{"@univerjs/core":">=0.23.0 <1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/univer-collab-bridge_0.1.0_1779413509765_0.20199058583529372","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@8space-lab/univer-collab-bridge","version":"0.1.1","keywords":["univer","collaboration","yjs","spreadsheet","plugin"],"author":{"name":"8Space Lab"},"license":"Apache-2.0","_id":"@8space-lab/univer-collab-bridge@0.1.1","maintainers":[{"name":"8space","email":"moriya@8space.kr"}],"homepage":"https://github.com/moriya-8space/8space-univer-bridge","bugs":{"url":"https://github.com/moriya-8space/8space-univer-bridge/issues"},"dist":{"shasum":"f546dc355f3ef0fbfe8bc9476dee41071ca1fc71","tarball":"https://registry.npmjs.org/@8space-lab/univer-collab-bridge/-/univer-collab-bridge-0.1.1.tgz","fileCount":15,"integrity":"sha512-7rqbcoSrC5ylHPr0OukDJ74Nq/y7/FOcD0Y6bmYL1rLanTTblHdBHN+niJqnXWayETk6cnal6d6rga77KHIu9A==","signatures":[{"sig":"MEUCIQChS+8XHteBoyc/Fogpxu94Ier3YiNQJtKMxnlv7m+YkgIgaCR/j1zemyifOPnhFF5sTmzqSHRVFOBq9FDOAMTfXw8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":105233},"main":"./lib/cjs/index.js","types":"./lib/types/index.d.ts","module":"./lib/es/index.js","exports":{".":{"types":"./lib/types/index.d.ts","import":"./lib/es/index.js","require":"./lib/cjs/index.js"},"./*":{"types":"./lib/types/index.d.ts","import":"./lib/es/*","require":"./lib/cjs/*"},"./lib/*":"./lib/*"},"gitHead":"0ccc6995991556556ba2318adcd0aca2d9437d05","private":false,"scripts":{"test":"vitest run","build":"pnpm run build:bundle && pnpm run build:types && pnpm run prepare-publish-manifest","coverage":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","build:types":"tsc -p tsconfig.node.json","build:bundle":"univer-cli build","prepublishOnly":"pnpm run build","prepare-publish-manifest":"node ./scripts/prepare-publish-manifest.mjs"},"_npmUser":{"name":"8space","email":"moriya@8space.kr"},"repository":{"url":"git+https://github.com/moriya-8space/8space-univer-bridge.git","type":"git"},"_npmVersion":"11.5.1","description":"Clean-room collaboration bridge for Univer OSS runtimes.","directories":{"lib":"lib"},"_nodeVersion":"24.6.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^6.0.3","@univerjs/core":"workspace:*","@univerjs-infra/shared":"workspace:*"},"peerDependencies":{"@univerjs/core":">=0.23.0 <1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/univer-collab-bridge_0.1.1_1779414159660_0.27166629469326864","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@8space-lab/univer-collab-bridge","version":"0.2.0","keywords":["univer","collaboration","yjs","spreadsheet","plugin"],"author":{"name":"8Space Lab"},"license":"Apache-2.0","_id":"@8space-lab/univer-collab-bridge@0.2.0","maintainers":[{"name":"8space","email":"moriya@8space.kr"}],"homepage":"https://github.com/moriya-8space/8space-univer-bridge","bugs":{"url":"https://github.com/moriya-8space/8space-univer-bridge/issues"},"dist":{"shasum":"ab0a330ec195ad988a732f1a49c3a866bcd4bb80","tarball":"https://registry.npmjs.org/@8space-lab/univer-collab-bridge/-/univer-collab-bridge-0.2.0.tgz","fileCount":16,"integrity":"sha512-lHC8nC+VqlAIAXaSVg3O19nJu0da6HFA9WBCzcBOpTCjDjT+WLpr8FSezuq6SX6QwX1drDa+7DIGdUpUZOyTAg==","signatures":[{"sig":"MEUCICE1bNHoyYe6q6fuUCFpvjSxPbRy0h1nVQTqFkh4UdHIAiEA2qv0+cq3++OPs3XpTWA+mRpLnwq6Ipkpv96WVczX1Rw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142180},"main":"./lib/cjs/index.js","types":"./lib/types/index.d.ts","module":"./lib/es/index.js","exports":{".":{"types":"./lib/types/index.d.ts","import":"./lib/es/index.js","require":"./lib/cjs/index.js"},"./*":{"types":"./lib/types/index.d.ts","import":"./lib/es/*","require":"./lib/cjs/*"},"./lib/*":"./lib/*"},"gitHead":"bb3b877bf6a0a34acea35342b5568903a621e36c","private":false,"scripts":{"test":"vitest run","build":"pnpm run build:bundle && pnpm run build:types && pnpm run prepare-publish-manifest","coverage":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","build:types":"tsc -p tsconfig.node.json","build:bundle":"univer-cli build","prepublishOnly":"pnpm run build","prepare-publish-manifest":"node ./scripts/prepare-publish-manifest.mjs"},"_npmUser":{"name":"8space","email":"moriya@8space.kr"},"repository":{"url":"git+https://github.com/moriya-8space/8space-univer-bridge.git","type":"git"},"_npmVersion":"11.5.1","description":"Clean-room collaboration bridge for Univer OSS runtimes.","directories":{"lib":"lib"},"_nodeVersion":"24.6.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^6.0.3","@univerjs/core":"workspace:*","@univerjs-infra/shared":"workspace:*"},"peerDependencies":{"@univerjs/core":">=0.23.0 <1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/univer-collab-bridge_0.2.0_1779690147411_0.1593378846254736","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@8space-lab/univer-collab-bridge","version":"0.2.1","keywords":["univer","collaboration","yjs","spreadsheet","plugin"],"author":{"name":"8Space Lab"},"license":"Apache-2.0","_id":"@8space-lab/univer-collab-bridge@0.2.1","maintainers":[{"name":"8space","email":"moriya@8space.kr"}],"homepage":"https://github.com/moriya-8space/8space-univer-bridge","bugs":{"url":"https://github.com/moriya-8space/8space-univer-bridge/issues"},"dist":{"shasum":"314058863bad27e56f169e00c1945968e37a752f","tarball":"https://registry.npmjs.org/@8space-lab/univer-collab-bridge/-/univer-collab-bridge-0.2.1.tgz","fileCount":17,"integrity":"sha512-XN1HZsf0aQpi5JgmjAsbgZ0FRc1tvu+gWQrhjtOz2qdkFynWJaiddRgLX7p6c7Dyx+1dVl1sIaCasH4nUq5J/Q==","signatures":[{"sig":"MEQCIDxMKKrF++o6PXEhVGQqv7hApkRNYW+CPWMXhRKm4umGAiAXPEcgp7/of1JEw5WpvgvXn63IZmJnoYUpeNsnGxRFHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":155410},"main":"./lib/cjs/index.js","types":"./lib/types/index.d.ts","module":"./lib/es/index.js","exports":{".":{"types":"./lib/types/index.d.ts","import":"./lib/es/index.js","require":"./lib/cjs/index.js"},"./*":{"types":"./lib/types/index.d.ts","import":"./lib/es/*","require":"./lib/cjs/*"},"./lib/*":"./lib/*"},"gitHead":"bb3b877bf6a0a34acea35342b5568903a621e36c","private":false,"scripts":{"test":"vitest run","build":"pnpm run build:bundle && pnpm run build:types && pnpm run prepare-publish-manifest","coverage":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest","build:types":"tsc -p tsconfig.node.json","build:bundle":"univer-cli build","prepublishOnly":"pnpm run build","prepare-publish-manifest":"node ./scripts/prepare-publish-manifest.mjs"},"_npmUser":{"name":"8space","email":"moriya@8space.kr"},"repository":{"url":"git+https://github.com/moriya-8space/8space-univer-bridge.git","type":"git"},"_npmVersion":"11.5.1","description":"Clean-room collaboration bridge for Univer OSS runtimes.","directories":{"lib":"lib"},"_nodeVersion":"24.6.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^6.0.3","@univerjs/core":"workspace:*","@univerjs-infra/shared":"workspace:*"},"peerDependencies":{"@univerjs/core":">=0.23.0 <1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/univer-collab-bridge_0.2.1_1779697469909_0.14015266037293417","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@8space-lab/univer-collab-bridge","version":"0.2.2","private":false,"description":"Clean-room collaboration bridge for Univer OSS runtimes.","author":{"name":"8Space Lab"},"license":"Apache-2.0","homepage":"https://github.com/moriya-8space/8space-univer-bridge","repository":{"type":"git","url":"git+https://github.com/moriya-8space/8space-univer-bridge.git"},"bugs":{"url":"https://github.com/moriya-8space/8space-univer-bridge/issues"},"keywords":["univer","collaboration","yjs","spreadsheet","plugin"],"exports":{".":{"import":"./lib/es/index.js","require":"./lib/cjs/index.js","types":"./lib/types/index.d.ts"},"./*":{"import":"./lib/es/*","require":"./lib/cjs/*","types":"./lib/types/index.d.ts"},"./lib/*":"./lib/*"},"main":"./lib/cjs/index.js","module":"./lib/es/index.js","types":"./lib/types/index.d.ts","publishConfig":{"access":"public"},"directories":{"lib":"lib"},"scripts":{"test":"vitest run","test:watch":"vitest","coverage":"vitest run --coverage","typecheck":"tsc --noEmit","build:bundle":"univer-cli build","build:types":"tsc -p tsconfig.node.json","prepare-publish-manifest":"node ./scripts/prepare-publish-manifest.mjs","build":"pnpm run build:bundle && pnpm run build:types && pnpm run prepare-publish-manifest","prepublishOnly":"pnpm run build"},"peerDependencies":{"@univerjs/core":">=0.23.0 <1.0.0"},"devDependencies":{"@univerjs-infra/shared":"workspace:*","typescript":"^6.0.3","vitest":"^4.1.5","@univerjs/core":"workspace:*"},"_id":"@8space-lab/univer-collab-bridge@0.2.2","gitHead":"33d98076f41f0435db73db93f14e8be8ce034795","_nodeVersion":"24.6.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-tA+fXKBV3P9/uVGYAeysqcV/LxvhhWnPMFT5lxQN8EY1w+d/4tu4NKyx3GFCd/qOmHJWgozF2KFCJ4N4Wfjc3A==","shasum":"b67436983d51e10f6908294227606419137f80a2","tarball":"https://registry.npmjs.org/@8space-lab/univer-collab-bridge/-/univer-collab-bridge-0.2.2.tgz","fileCount":17,"unpackedSize":158268,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBhGIC1VtBsTcZm4b1hmQkOCOv3lcX8//ozqYxXo/0ehAiB8Ka4Ko5hRS/BooQkedQYz1LtsNr6kMPrAR3ucL9EQgA=="}]},"_npmUser":{"name":"8space","email":"moriya@8space.kr"},"maintainers":[{"name":"8space","email":"moriya@8space.kr"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/univer-collab-bridge_0.2.2_1779812567282_0.5022115363258428"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-22T01:31:49.498Z","modified":"2026-05-26T16:22:48.087Z","0.1.0":"2026-05-22T01:31:49.921Z","0.1.1":"2026-05-22T01:42:39.804Z","0.2.0":"2026-05-25T06:22:27.562Z","0.2.1":"2026-05-25T08:24:30.058Z","0.2.2":"2026-05-26T16:22:47.650Z"},"bugs":{"url":"https://github.com/moriya-8space/8space-univer-bridge/issues"},"author":{"name":"8Space Lab"},"license":"Apache-2.0","homepage":"https://github.com/moriya-8space/8space-univer-bridge","keywords":["univer","collaboration","yjs","spreadsheet","plugin"],"repository":{"type":"git","url":"git+https://github.com/moriya-8space/8space-univer-bridge.git"},"description":"Clean-room collaboration bridge for Univer OSS runtimes.","maintainers":[{"name":"8space","email":"moriya@8space.kr"}],"readme":"# @8space-lab/univer-collab-bridge\n\nClean-room collaboration bridge for Univer OSS runtimes.\n\nThis package is built on public Univer OSS APIs. It does not include, import,\ncopy, or derive from Univer Pro source code.\n\n## Install\n\n```bash\npnpm add @8space-lab/univer-collab-bridge\n```\n\nKeep `@univerjs/*` packages on compatible versions.\n\n## Usage\n\n```ts\nimport {\n    UniverCollabBridgePlugin,\n    YjsCollabTransport,\n    createSheetsCollabBridgeConfig,\n    getCollabBridgeService,\n} from '@8space-lab/univer-collab-bridge';\n\nuniver.registerPlugin(UniverCollabBridgePlugin, {\n    ...createSheetsCollabBridgeConfig(),\n    clientId: 'client-1',\n    user: { id: 'u1', name: 'Jane' },\n    unitId: 'workbook-id',\n    transport: new YjsCollabTransport(yDoc),\n});\n\nconst bridgeService = getCollabBridgeService('client-1');\n```\n\nThe bridge serializes local Univer mutations into durable collaboration ops,\nreplays remote ops through Univer's command service with `fromCollab`, and emits\nperiodic snapshot checkpoints for host applications to persist.\n\n## Sheets preset\n\n`createSheetsCollabBridgeConfig()` enables the default safe command policy for\nUniver Sheets. It ignores local-only/internal replay options such as\n`fromCollab`, `fromChangeset`, `syncOnly`, and `onlyLocal`, while allowing safe\nsheet mutations/commands and formula mutations needed to preserve formula cells.\n\nPresence is transport-neutral. Host applications can send a sheet location\npayload, listen to remote presence lists, and clear local presence on unload.\n`YjsCollabTransport` emits full presence-list changes so departed peers can be\nremoved from the host UI immediately instead of waiting for TTL expiry:\n\n```ts\nbridgeService.sendPresence({\n    kind: 'spreadsheet',\n    sheetName: 'Sheet 1',\n    row: 1,\n    column: 2,\n    rangeLabel: 'C2',\n});\n\nbridgeService.onPresenceListChange((presences) => {\n    // Render collaborator badges or grid overlays in the host application.\n});\n\nconst latestPresences = bridgeService.refreshPresenceList();\n\nbridgeService.flushCheckpoint('pagehide');\n```\n\n`onPresenceListChange()` and `refreshPresenceList()` read from the transport's\ncurrent presence snapshot when available. The Yjs transport exposes the\nunderlying presence map as a snapshot API, so host UIs do not need to observe or\nwrite Yjs maps directly.\n","readmeFilename":"README.md"}