@univerjs-pro/collaboration-worktree-database-memory 1.0.0-insiders.20260805-b15e7f3 → 1.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,31 @@
1
+ # @univerjs-pro/collaboration-worktree-database-memory
2
+
3
+ English | [简体中文](./README.zh-CN.md)
4
+
5
+ An in-process `IWorktreeDatabaseAdapter` for tests, local development, and temporary Worktree data.
6
+
7
+ ```bash
8
+ pnpm add \
9
+ @univerjs-pro/collaboration-worktree-service \
10
+ @univerjs-pro/collaboration-worktree-database-memory
11
+ ```
12
+
13
+ ```ts
14
+ const worktreeDatabase = new MemoryWorktreeDatabaseAdapter();
15
+ const worktreeService = new UniverCollabWorktreeService({
16
+ trunk: {
17
+ service: collabService,
18
+ dbAdapter: trunkDatabase,
19
+ },
20
+ dbAdapter: worktreeDatabase,
21
+ });
22
+
23
+ await worktreeService.dispose();
24
+ await worktreeDatabase.dispose();
25
+ ```
26
+
27
+ It implements Worktree state transitions, draft revision CAS, and per-Unit merge-result contracts. Draft submission idempotency is resolved by Worktree Service from continuous history.
28
+
29
+ All Worktree data is lost when the process exits, and state is not shared between Node.js processes. Use SQLite or another persistent Adapter for persistent production data.
30
+
31
+ `setUnitRemoved` atomically updates reversible draft intent. Removed Units reject draft commits; terminal removal merge results prevent later restoration.
@@ -0,0 +1,31 @@
1
+ # @univerjs-pro/collaboration-worktree-database-memory
2
+
3
+ [English](./README.md) | [简体中文](./README.zh-CN.md)
4
+
5
+ 进程内 `IWorktreeDatabaseAdapter`,适合测试、本地开发和临时 Worktree 数据。
6
+
7
+ ```bash
8
+ pnpm add \
9
+ @univerjs-pro/collaboration-worktree-service \
10
+ @univerjs-pro/collaboration-worktree-database-memory
11
+ ```
12
+
13
+ ```ts
14
+ const worktreeDatabase = new MemoryWorktreeDatabaseAdapter();
15
+ const worktreeService = new UniverCollabWorktreeService({
16
+ trunk: {
17
+ service: collabService,
18
+ dbAdapter: trunkDatabase,
19
+ },
20
+ dbAdapter: worktreeDatabase,
21
+ });
22
+
23
+ await worktreeService.dispose();
24
+ await worktreeDatabase.dispose();
25
+ ```
26
+
27
+ 它实现 Worktree 状态转换、draft revision CAS 和逐 Unit merge result 契约。draft 提交
28
+ 幂等由 Worktree Service 从连续 history 中判断。
29
+
30
+ 进程退出后所有 Worktree 数据丢失,多个 Node.js 进程之间也不共享状态。持久化生产数据
31
+ 应使用 SQLite 或其他持久化 Adapter。
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object['defineProperty'](exports,Symbol['toStringTag'],{'value':'Module'});let e=require('node:util'),t=require('@univerjs-pro/collaboration-service'),n=require('@univerjs/protocol');var r=new Set([n['UniverType']['UNIVER_SHEET'],n['UniverType']['UNIVER_DOC'],n['UniverType']['UNIVER_SLIDE'],n['UniverType']['UNIVER_BOARD'],n['UniverType']['UNIVER_BASE']]),i=class{['_worktrees']=new Map();['_disposed']=!0x1;async['getWorktree'](_0x42a0de,_0x386b2c){this['_assertOpen']();let _0x164008=this['_worktrees']['get'](_0x386b2c);return _0x164008?a(_0x164008):null;}async['getWorktreeUnit'](_0x2cb67a,_0xc2ae82,_0x21cbfe){this['_assertOpen']();let _0x4426ce=this['_worktrees']['get'](_0xc2ae82)?.['units']['get'](_0x21cbfe);return _0x4426ce?b(_0x4426ce['record']):null;}async['getDraftChangesets'](_0x4d298f,_0x3f3416,_0x2263d4,_0x5ab2c8){this['_assertOpen'](),f(_0x5ab2c8);let _0x4996e6=this['_worktrees']['get'](_0x3f3416)?.['units']['get'](_0x2263d4);if(!_0x4996e6)return{'changesets':[],'latestRevision':0x0};let _0x47887e=_0x5ab2c8['to']===0x0?_0x4996e6['record']['draftHeadRevision']:Math['min'](_0x5ab2c8['to'],_0x4996e6['record']['draftHeadRevision']);return{'changesets':[..._0x4996e6['changesets']['entries']()]['filter'](([_0x2d72b5])=>_0x2d72b5>_0x5ab2c8['from']&&_0x2d72b5<=_0x47887e)['sort'](([_0x428a77],[_0x26d4e9])=>_0x428a77-_0x26d4e9)['map'](([,_0x5a5106])=>b(_0x5a5106)),'latestRevision':_0x4996e6['record']['draftHeadRevision']};}async['getDraftSubmission'](_0x17f578,_0x519604,_0x2495fc,_0x42ba57,_0x5301a6){this['_assertOpen']();let _0x279337=this['_worktrees']['get'](_0x519604)?.['units']['get'](_0x2495fc)?.['submissions']['get'](v(_0x42ba57,_0x5301a6));return _0x279337?b(_0x279337):null;}async['getUnitSeed'](_0x4436c3,_0x434d4f,_0x7480d){this['_assertOpen']();let _0x56f13c=this['_worktrees']['get'](_0x434d4f)?.['units']['get'](_0x7480d)?.['seed'];return _0x56f13c?b(_0x56f13c):null;}async['getUnitMergeArtifact'](_0x2dcb89,_0x33ec75,_0x50d2b2){this['_assertOpen']();let _0x488bce=this['_worktrees']['get'](_0x33ec75)?.['units']['get'](_0x50d2b2)?.['mergeArtifact'];return _0x488bce?b(_0x488bce):null;}async['createWorktree'](_0x5c3542,_0x38a343){this['_assertOpen'](),o(_0x38a343);let _0xa82006=this['_worktrees']['get'](_0x38a343['record']['worktreeID']);if(_0xa82006)return{'status':'already-exists','aggregate':a(_0xa82006)};let _0x241bfd=new Map();for(let _0x514ec0 of _0x38a343['units'])_0x241bfd['set'](_0x514ec0['unitID'],{'record':b(_0x514ec0),'changesets':new Map(),'submissions':new Map()});let _0x2a8b2a={'record':b(_0x38a343['record']),'units':_0x241bfd};return this['_worktrees']['set'](_0x38a343['record']['worktreeID'],_0x2a8b2a),{'status':'created','aggregate':a(_0x2a8b2a)};}async['addUnit'](_0x20d5b7,_0x1323fe){this['_assertOpen']();let {unit:_0x1eb210}=_0x1323fe;s(_0x1eb210);let _0x406c73=this['_worktrees']['get'](_0x1eb210['worktreeID']);return _0x406c73?_0x406c73['units']['has'](_0x1eb210['unitID'])?{'status':'already-exists','aggregate':a(_0x406c73)}:_0x406c73['record']['status']==='draft'?(c(_0x1eb210),_0x406c73['units']['set'](_0x1eb210['unitID'],{'record':b(_0x1eb210),'changesets':new Map(),'submissions':new Map()}),{'status':'added','aggregate':a(_0x406c73)}):{'status':'status-mismatch','aggregate':a(_0x406c73)}:{'status':'not-found'};}async['createUnit'](_0x55b772,_0x5e2985){this['_assertOpen'](),l(_0x5e2985['unit'],_0x5e2985['seed']);let _0x298755=this['_worktrees']['get'](_0x5e2985['unit']['worktreeID']);if(!_0x298755)return{'status':'not-found'};let _0x11774e=_0x298755['units']['get'](_0x5e2985['unit']['unitID']);return _0x11774e?{'status':_0x11774e['record']['source']==='worktree'&&_0x11774e['record']['type']===_0x5e2985['unit']['type']&&_0x11774e['seed']!==void 0x0&&(0x0,e['isDeepStrictEqual'])(_0x11774e['seed'],_0x5e2985['seed'])?'already-created':'unit-exists','aggregate':a(_0x298755)}:_0x298755['record']['status']==='draft'?(_0x298755['units']['set'](_0x5e2985['unit']['unitID'],{'record':b(_0x5e2985['unit']),'seed':b(_0x5e2985['seed']),'changesets':new Map(),'submissions':new Map()}),{'status':'created','aggregate':a(_0x298755)}):{'status':'status-mismatch','aggregate':a(_0x298755)};}async['saveUnitMergeArtifact'](_0x2c63bc,_0x30a0e6){this['_assertOpen']();let _0x3edbc8=this['_worktrees']['get'](_0x30a0e6['worktreeID']),_0xdf7426=_0x3edbc8?.['units']['get'](_0x30a0e6['unitID']);return!_0x3edbc8||!_0xdf7426?{'status':'not-found'}:_0x3edbc8['record']['status']!=='merging'||_0xdf7426['record']['source']!=='worktree'||_0xdf7426['record']['readyDraftHeadRevision']!==_0x30a0e6['artifact']['readyDraftHeadRevision']||g(_0xdf7426['record'])?{'status':'stale-merge'}:_0xdf7426['mergeArtifact']?{'status':'already-saved','artifact':b(_0xdf7426['mergeArtifact'])}:(d(_0xdf7426['record'],_0x30a0e6['artifact']),_0xdf7426['mergeArtifact']=b(_0x30a0e6['artifact']),{'status':'saved','artifact':b(_0x30a0e6['artifact'])});}async['commitDraftChangeset'](_0x28aeea,_0x32c026){this['_assertOpen']();let _0x1ca28f=this['_worktrees']['get'](_0x32c026['worktreeID']),_0x4e496e=_0x1ca28f?.['units']['get'](_0x32c026['changeset']['unitID']);if(!_0x1ca28f||!_0x4e496e)return{'status':'not-found'};p(_0x32c026['changeset']);let _0xac3fcf=v(_0x32c026['changeset']['sid'],_0x32c026['changeset']['reqId']),_0x41cace=_0x4e496e['submissions']['get'](_0xac3fcf);if(_0x41cace)return{'status':'already-committed','changeset':b(_0x41cace)};if(_0x1ca28f['record']['status']!=='draft')return{'status':'not-editable','worktreeStatus':_0x1ca28f['record']['status']};if(g(_0x4e496e['record']))return{'status':'unit-frozen'};if(_0x4e496e['record']['draftHeadRevision']!==_0x32c026['expectedHeadRevision'])return{'status':'revision-mismatch','actualHeadRevision':_0x4e496e['record']['draftHeadRevision']};m(_0x4e496e['record'],_0x32c026);let _0x53dea6=b(_0x32c026['changeset']);return _0x4e496e['changesets']['set'](_0x53dea6['revision'],_0x53dea6),_0x4e496e['submissions']['set'](_0xac3fcf,_0x53dea6),_0x4e496e['record']={..._0x4e496e['record'],'draftHeadRevision':_0x53dea6['revision']},{'status':'committed','changeset':b(_0x53dea6),'headRevision':_0x53dea6['revision']};}async['markReady'](_0x11836b,_0x3b9d8f){this['_assertOpen']();let _0x343639=this['_worktrees']['get'](_0x3b9d8f);if(!_0x343639)return{'status':'not-found'};if(_0x343639['record']['status']==='ready')return{'status':'already-in-target','aggregate':a(_0x343639)};if(_0x343639['record']['status']!=='draft')return{'status':'status-mismatch','aggregate':a(_0x343639)};for(let _0x29066a of _0x343639['units']['values']())g(_0x29066a['record'])||(_0x29066a['record']={..._0x29066a['record'],'readyDraftHeadRevision':_0x29066a['record']['draftHeadRevision']});return _0x343639['record']={..._0x343639['record'],'status':'ready'},{'status':'transitioned','previousStatus':'draft','aggregate':a(_0x343639)};}async['reopenWorktree'](_0x5a5995,_0x335f16){this['_assertOpen']();let _0x31785b=this['_worktrees']['get'](_0x335f16);if(!_0x31785b)return{'status':'not-found'};if(_0x31785b['record']['status']==='draft')return{'status':'already-in-target','aggregate':a(_0x31785b)};if(_0x31785b['record']['status']!=='ready')return{'status':'status-mismatch','aggregate':a(_0x31785b)};for(let _0x4d829f of _0x31785b['units']['values']())g(_0x4d829f['record'])||(_0x4d829f['record']=h(_0x4d829f['record']),delete _0x4d829f['mergeArtifact']);return _0x31785b['record']={..._0x31785b['record'],'status':'draft'},{'status':'transitioned','previousStatus':'ready','aggregate':a(_0x31785b)};}async['discardWorktree'](_0x4e05d7,_0x20717a){this['_assertOpen']();let _0x579d1f=this['_worktrees']['get'](_0x20717a);if(!_0x579d1f)return{'status':'not-found'};if(_0x579d1f['record']['status']==='discarded')return{'status':'already-in-target','aggregate':a(_0x579d1f)};if(_0x579d1f['record']['status']!=='draft'&&_0x579d1f['record']['status']!=='ready')return{'status':'status-mismatch','aggregate':a(_0x579d1f)};let _0x2fb413=_0x579d1f['record']['status'];return _0x579d1f['record']={..._0x579d1f['record'],'status':'discarded'},{'status':'transitioned','previousStatus':_0x2fb413,'aggregate':a(_0x579d1f)};}async['startOrResumeMerge'](_0x3422b5,_0x43c51a){this['_assertOpen']();let _0xad0182=this['_worktrees']['get'](_0x43c51a);return _0xad0182?_0xad0182['record']['status']==='merged'?{'status':'already-merged','aggregate':a(_0xad0182)}:_0xad0182['record']['status']==='merging'?{'status':'resumed','aggregate':a(_0xad0182)}:_0xad0182['record']['status']==='ready'?(_0xad0182['record']={..._0xad0182['record'],'status':'merging'},{'status':'started','aggregate':a(_0xad0182)}):{'status':'status-mismatch','aggregate':a(_0xad0182)}:{'status':'not-found'};}async['recordUnitMergeResult'](_0x33744f,_0x3c3171){this['_assertOpen'](),u(_0x3c3171['mergeResult']);let _0x4db983=this['_worktrees']['get'](_0x3c3171['worktreeID']),_0x44398e=_0x4db983?.['units']['get'](_0x3c3171['unitID']);if(!_0x4db983||!_0x44398e)return{'status':'not-found'};if(_0x4db983['record']['status']!=='merging'||_0x44398e['record']['readyDraftHeadRevision']!==_0x3c3171['readyDraftHeadRevision'])return{'status':'stale-merge'};let _0x42889e=_0x44398e['record']['mergeResult'];return _0x42889e&&(0x0,e['isDeepStrictEqual'])(_0x42889e,_0x3c3171['mergeResult'])?{'status':'already-recorded','aggregate':a(_0x4db983)}:_0x42889e&&_(_0x42889e)?{'status':'stale-merge'}:(_0x44398e['record']={..._0x44398e['record'],'mergeResult':b(_0x3c3171['mergeResult'])},{'status':'recorded','aggregate':a(_0x4db983)});}async['finishMerge'](_0x355acc,_0x4a3040){this['_assertOpen']();let _0x103dc0=this['_worktrees']['get'](_0x4a3040);if(!_0x103dc0)return{'status':'not-found'};if(_0x103dc0['record']['status']==='merged')return{'status':'already-in-target','aggregate':a(_0x103dc0)};if(_0x103dc0['record']['status']!=='merging')return{'status':'status-mismatch','aggregate':a(_0x103dc0)};let _0x131b34=[..._0x103dc0['units']['values']()]['every'](_0x35743d=>g(_0x35743d['record']));return _0x103dc0['record']={..._0x103dc0['record'],'status':_0x131b34?'merged':'ready'},{'status':'transitioned','previousStatus':'merging','aggregate':a(_0x103dc0)};}async['dispose'](){this['_disposed']||(this['_disposed']=!0x0,this['_worktrees']['clear']());}['_assertOpen'](){if(this['_disposed'])throw new t['CollabError']('INTERNAL_ERROR','Memory\x20Worktree\x20Database\x20Adapter\x20is\x20disposed');}};function a(_0x52af8b){return{'worktree':b(_0x52af8b['record']),'units':[..._0x52af8b['units']['values']()]['map'](({record:_0x12d27a})=>b(_0x12d27a))};}function o(_0x26087c){if(!_0x26087c['record']['worktreeID']||!_0x26087c['record']['sid']||_0x26087c['record']['status']!=='draft')throw y('New\x20Worktree\x20record\x20must\x20be\x20a\x20draft\x20with\x20identity');let _0x1b177a=new Set();for(let _0x183e54 of _0x26087c['units']){if(_0x183e54['worktreeID']!==_0x26087c['record']['worktreeID'])throw y('Initial\x20Unit\x20belongs\x20to\x20a\x20different\x20Worktree');if(_0x1b177a['has'](_0x183e54['unitID']))throw y('Initial\x20Worktree\x20Units\x20must\x20be\x20unique');_0x1b177a['add'](_0x183e54['unitID']),c(_0x183e54);}}function s(_0x4a55ab){if(!_0x4a55ab['worktreeID']||!_0x4a55ab['unitID'])throw y('Worktree\x20and\x20Unit\x20identity\x20are\x20required');}function c(_0x4afa61){if(s(_0x4afa61),_0x4afa61['source']!=='trunk'||!Number['isSafeInteger'](_0x4afa61['baselineTrunkRevision'])||_0x4afa61['baselineTrunkRevision']<0x1||!r['has'](_0x4afa61['type'])||_0x4afa61['draftHeadRevision']!==_0x4afa61['baselineTrunkRevision']||_0x4afa61['readyDraftHeadRevision']!==void 0x0||_0x4afa61['mergeResult']!==void 0x0)throw y('New\x20Worktree\x20Unit\x20must\x20start\x20at\x20its\x20trunk\x20baseline');}function l(_0x534cc1,_0x1223a8){if(s(_0x534cc1),_0x534cc1['source']!=='worktree'||_0x534cc1['baselineTrunkRevision']!==void 0x0||!r['has'](_0x534cc1['type'])||_0x534cc1['draftHeadRevision']!==0x1||_0x534cc1['readyDraftHeadRevision']!==void 0x0||_0x534cc1['mergeResult']!==void 0x0||_0x1223a8['snapshot']['unitID']!==_0x534cc1['unitID']||_0x1223a8['snapshot']['type']!==_0x534cc1['type']||_0x1223a8['snapshot']['rev']!==0x1)throw y('Worktree-created\x20Unit\x20must\x20start\x20from\x20its\x20revision\x201\x20seed');}function u(_0xb56378){if(_0xb56378['status']==='merged'){if(!Number['isSafeInteger'](_0xb56378['trunkRevision'])||_0xb56378['trunkRevision']<0x1)throw y('Merged\x20result\x20requires\x20a\x20positive\x20trunk\x20revision');return;}if(_0xb56378['status']!=='unchanged'&&(!_0xb56378['error']['code']||!_0xb56378['error']['message']||typeof _0xb56378['error']['retryable']!='boolean'))throw y('Merge\x20error\x20must\x20be\x20stable\x20and\x20serializable');}function d(_0x826fb8,_0x36c5e0){if(_0x36c5e0['unit']['snapshot']['unitID']!==_0x826fb8['unitID']||_0x36c5e0['unit']['snapshot']['type']!==_0x826fb8['type']||_0x36c5e0['unit']['snapshot']['rev']!==0x1)throw y('Worktree\x20Unit\x20merge\x20artifact\x20must\x20be\x20a\x20revision\x201\x20snapshot');}function f(_0x4b8dde){if(!Number['isSafeInteger'](_0x4b8dde['from'])||!Number['isSafeInteger'](_0x4b8dde['to'])||_0x4b8dde['from']<0x0||_0x4b8dde['to']<0x0)throw y('Changeset\x20range\x20revisions\x20must\x20be\x20non-negative');}function p(_0x336724){if(!_0x336724['sid']||!Number['isSafeInteger'](_0x336724['reqId'])||_0x336724['reqId']<0x1)throw y('Changeset\x20sid\x20and\x20positive\x20integer\x20reqId\x20are\x20required');}function m(_0x1048c0,_0x5b9c06){let {changeset:_0x477339,expectedHeadRevision:_0x12b422}=_0x5b9c06;if(_0x477339['type']!==_0x1048c0['type']||_0x477339['baseRev']!==_0x12b422||_0x477339['revision']!==_0x12b422+0x1)throw y('Draft\x20changeset\x20must\x20match\x20the\x20Unit\x20type\x20and\x20expected\x20revision');}function h(_0x25541a){let {readyDraftHeadRevision:_0x5af819,mergeResult:_0x520a7e,..._0xed3347}=_0x25541a;return _0xed3347;}function g(_0x1430a2){return _0x1430a2['mergeResult']?_(_0x1430a2['mergeResult']):!0x1;}function _(_0x24ea8c){return _0x24ea8c['status']==='merged'||_0x24ea8c['status']==='unchanged';}function v(_0x29e866,_0x1e2f35){return _0x29e866['length']+':'+_0x29e866+':'+_0x1e2f35;}function y(_0x535f34){return new t['CollabError']('INVALID_REQUEST',_0x535f34);}function b(_0x1faf0b){return structuredClone(_0x1faf0b);}exports['MemoryWorktreeDatabaseAdapter']=i;
1
+ Object['defineProperty'](exports,Symbol['toStringTag'],{'value':'Module'});let e=require('node:util'),t=require('@univerjs-pro/collaboration-service'),n=require('@univerjs/protocol');var r=new Set([n['UniverType']['UNIVER_SHEET'],n['UniverType']['UNIVER_DOC'],n['UniverType']['UNIVER_SLIDE'],n['UniverType']['UNIVER_BOARD'],n['UniverType']['UNIVER_BASE']]),i=class{['_worktrees']=new Map();['_disposed']=!0x1;async['getWorktree'](_0x3707f0,_0x3cb038){this['_assertOpen']();let _0x2724cd=this['_worktrees']['get'](_0x3cb038);return _0x2724cd?a(_0x2724cd):null;}async['getWorktreeUnit'](_0x181a56,_0x449ae9,_0x3e1738){this['_assertOpen']();let _0x3eefd4=this['_worktrees']['get'](_0x449ae9)?.['units']['get'](_0x3e1738);return _0x3eefd4?_(_0x3eefd4['record']):null;}async['getDraftChangesets'](_0xc6ae6,_0x35848a,_0x222d20,_0x56c8f3){this['_assertOpen'](),f(_0x56c8f3);let _0x3c14f5=this['_worktrees']['get'](_0x35848a)?.['units']['get'](_0x222d20);return _0x3c14f5?[..._0x3c14f5['changesets']['entries']()]['filter'](([_0x26299e])=>_0x26299e>_0x56c8f3['from']&&(_0x56c8f3['to']===void 0x0||_0x26299e<=_0x56c8f3['to']))['sort'](([_0x35cbf6],[_0x29dfd0])=>_0x35cbf6-_0x29dfd0)['map'](([,_0x27a2e0])=>_(_0x27a2e0)):null;}async['getUnitSeed'](_0x668c84,_0x2ec2c2,_0x344853){this['_assertOpen']();let _0x434acf=this['_worktrees']['get'](_0x2ec2c2)?.['units']['get'](_0x344853)?.['seed'];return _0x434acf?_(_0x434acf):null;}async['getUnitMergeArtifact'](_0x144ab1,_0x2856de,_0x2b4f32){this['_assertOpen']();let _0x1b149b=this['_worktrees']['get'](_0x2856de)?.['units']['get'](_0x2b4f32)?.['mergeArtifact'];return _0x1b149b?_(_0x1b149b):null;}async['createWorktree'](_0x42d516,_0x278ea5){this['_assertOpen'](),o(_0x278ea5);let _0x169a25=this['_worktrees']['get'](_0x278ea5['record']['worktreeID']);if(_0x169a25)return{'status':'already-exists','aggregate':a(_0x169a25)};let _0x37b116=new Map();for(let _0x127bc3 of _0x278ea5['units'])_0x37b116['set'](_0x127bc3['unitID'],{'record':_(_0x127bc3),'changesets':new Map()});let _0x5c326d={'record':_(_0x278ea5['record']),'units':_0x37b116};return this['_worktrees']['set'](_0x278ea5['record']['worktreeID'],_0x5c326d),{'status':'created','aggregate':a(_0x5c326d)};}async['addUnit'](_0x401f84,_0x2293b3){this['_assertOpen']();let {unit:_0x3dc85c}=_0x2293b3;s(_0x3dc85c);let _0x1856da=this['_worktrees']['get'](_0x3dc85c['worktreeID']);return _0x1856da?_0x1856da['units']['has'](_0x3dc85c['unitID'])?{'status':'already-exists','aggregate':a(_0x1856da)}:_0x1856da['record']['status']==='draft'?(c(_0x3dc85c),_0x1856da['units']['set'](_0x3dc85c['unitID'],{'record':_(_0x3dc85c),'changesets':new Map()}),{'status':'added','aggregate':a(_0x1856da)}):{'status':'status-mismatch','aggregate':a(_0x1856da)}:{'status':'not-found'};}async['createUnit'](_0x45b311,_0x231bbb){this['_assertOpen'](),l(_0x231bbb['unit'],_0x231bbb['seed']);let _0x276565=this['_worktrees']['get'](_0x231bbb['unit']['worktreeID']);if(!_0x276565)return{'status':'not-found'};let _0xe1c39=_0x276565['units']['get'](_0x231bbb['unit']['unitID']);return _0xe1c39?{'status':_0xe1c39['record']['source']==='worktree'&&_0xe1c39['record']['type']===_0x231bbb['unit']['type']&&_0xe1c39['seed']!==void 0x0&&(0x0,e['isDeepStrictEqual'])(_0xe1c39['seed'],_0x231bbb['seed'])?'already-created':'unit-exists','aggregate':a(_0x276565)}:_0x276565['record']['status']==='draft'?(_0x276565['units']['set'](_0x231bbb['unit']['unitID'],{'record':_(_0x231bbb['unit']),'seed':_(_0x231bbb['seed']),'changesets':new Map()}),{'status':'created','aggregate':a(_0x276565)}):{'status':'status-mismatch','aggregate':a(_0x276565)};}async['saveUnitMergeArtifact'](_0x959734,_0xc3a8f9){this['_assertOpen']();let _0x44fc3b=this['_worktrees']['get'](_0xc3a8f9['worktreeID']),_0x4dd4d3=_0x44fc3b?.['units']['get'](_0xc3a8f9['unitID']);return!_0x44fc3b||!_0x4dd4d3?{'status':'not-found'}:_0x44fc3b['record']['status']!=='merging'||_0x4dd4d3['record']['source']!=='worktree'||_0x4dd4d3['record']['readyDraftHeadRevision']!==_0xc3a8f9['artifact']['readyDraftHeadRevision']||m(_0x4dd4d3['record'])?{'status':'stale-merge'}:_0x4dd4d3['mergeArtifact']?{'status':'already-saved','artifact':_(_0x4dd4d3['mergeArtifact'])}:(d(_0x4dd4d3['record'],_0xc3a8f9['artifact']),_0x4dd4d3['mergeArtifact']=_(_0xc3a8f9['artifact']),{'status':'saved','artifact':_(_0xc3a8f9['artifact'])});}async['setUnitRemoved'](_0x21becd,_0x229161){this['_assertOpen']();let _0x5abf34=this['_worktrees']['get'](_0x229161['worktreeID']),_0x50c9d2=_0x5abf34?.['units']['get'](_0x229161['unitID']);if(!_0x5abf34||!_0x50c9d2)return{'status':'not-found'};if(_0x5abf34['record']['status']!=='draft'||m(_0x50c9d2['record']))return{'status':'not-editable','aggregate':a(_0x5abf34)};if(!!_0x50c9d2['record']['removed']===_0x229161['removed'])return{'status':'unchanged','aggregate':a(_0x5abf34)};let {removed:_0x4e947c,..._0x8d2205}=_0x50c9d2['record'];return _0x50c9d2['record']={..._0x8d2205,..._0x229161['removed']?{'removed':!0x0}:{}},{'status':'updated','aggregate':a(_0x5abf34)};}async['commitDraftChangeset'](_0x54879e,_0x3a1811){this['_assertOpen']();let _0x3853d7=this['_worktrees']['get'](_0x3a1811['worktreeID']),_0x448dd9=_0x3853d7?.['units']['get'](_0x3a1811['changeset']['unitID']);if(!_0x3853d7||!_0x448dd9)return{'status':'not-found'};if(_0x3853d7['record']['status']!=='draft')return{'status':'not-editable','worktreeStatus':_0x3853d7['record']['status']};if(_0x448dd9['record']['removed']||m(_0x448dd9['record']))return{'status':'unit-frozen'};if(_0x448dd9['record']['draftHeadRevision']!==_0x3a1811['changeset']['revision']-0x1)return{'status':'revision-mismatch','actualHeadRevision':_0x448dd9['record']['draftHeadRevision']};let _0x32c7c8=_(_0x3a1811['changeset']);return _0x448dd9['changesets']['set'](_0x32c7c8['revision'],_0x32c7c8),_0x448dd9['record']={..._0x448dd9['record'],'draftHeadRevision':_0x32c7c8['revision']},{'status':'committed','changeset':_(_0x32c7c8),'headRevision':_0x32c7c8['revision']};}async['markReady'](_0x161a17,_0x3cb235){this['_assertOpen']();let _0x3047ae=this['_worktrees']['get'](_0x3cb235);if(!_0x3047ae)return{'status':'not-found'};if(_0x3047ae['record']['status']==='ready')return{'status':'already-in-target','aggregate':a(_0x3047ae)};if(_0x3047ae['record']['status']!=='draft')return{'status':'status-mismatch','aggregate':a(_0x3047ae)};for(let _0x22733d of _0x3047ae['units']['values']())m(_0x22733d['record'])||(_0x22733d['record']={..._0x22733d['record'],'readyDraftHeadRevision':_0x22733d['record']['draftHeadRevision']});return _0x3047ae['record']={..._0x3047ae['record'],'status':'ready'},{'status':'transitioned','previousStatus':'draft','aggregate':a(_0x3047ae)};}async['reopenWorktree'](_0x364030,_0x1ccefa){this['_assertOpen']();let _0x47ccf1=this['_worktrees']['get'](_0x1ccefa);if(!_0x47ccf1)return{'status':'not-found'};if(_0x47ccf1['record']['status']==='draft')return{'status':'already-in-target','aggregate':a(_0x47ccf1)};if(_0x47ccf1['record']['status']!=='ready')return{'status':'status-mismatch','aggregate':a(_0x47ccf1)};for(let _0x5515d1 of _0x47ccf1['units']['values']())m(_0x5515d1['record'])||(_0x5515d1['record']=p(_0x5515d1['record']),delete _0x5515d1['mergeArtifact']);return _0x47ccf1['record']={..._0x47ccf1['record'],'status':'draft'},{'status':'transitioned','previousStatus':'ready','aggregate':a(_0x47ccf1)};}async['discardWorktree'](_0x21fb78,_0x13f6d7){this['_assertOpen']();let _0x24db19=this['_worktrees']['get'](_0x13f6d7);if(!_0x24db19)return{'status':'not-found'};if(_0x24db19['record']['status']==='discarded')return{'status':'already-in-target','aggregate':a(_0x24db19)};if(_0x24db19['record']['status']!=='draft'&&_0x24db19['record']['status']!=='ready')return{'status':'status-mismatch','aggregate':a(_0x24db19)};let _0x3c4611=_0x24db19['record']['status'];return _0x24db19['record']={..._0x24db19['record'],'status':'discarded'},{'status':'transitioned','previousStatus':_0x3c4611,'aggregate':a(_0x24db19)};}async['startOrResumeMerge'](_0x31ee85,_0x24ff5b){this['_assertOpen']();let _0x172eab=this['_worktrees']['get'](_0x24ff5b);return _0x172eab?_0x172eab['record']['status']==='merged'?{'status':'already-merged','aggregate':a(_0x172eab)}:_0x172eab['record']['status']==='merging'?{'status':'resumed','aggregate':a(_0x172eab)}:_0x172eab['record']['status']==='ready'?(_0x172eab['record']={..._0x172eab['record'],'status':'merging'},{'status':'started','aggregate':a(_0x172eab)}):{'status':'status-mismatch','aggregate':a(_0x172eab)}:{'status':'not-found'};}async['recordUnitMergeResult'](_0x32dec7,_0x4897d7){this['_assertOpen'](),u(_0x4897d7['mergeResult']);let _0x4a1bfe=this['_worktrees']['get'](_0x4897d7['worktreeID']),_0x46ed79=_0x4a1bfe?.['units']['get'](_0x4897d7['unitID']);if(!_0x4a1bfe||!_0x46ed79)return{'status':'not-found'};if(_0x4a1bfe['record']['status']!=='merging'||_0x46ed79['record']['readyDraftHeadRevision']!==_0x4897d7['readyDraftHeadRevision'])return{'status':'stale-merge'};if(_0x4897d7['mergeResult']['status']==='removed'&&!_0x46ed79['record']['removed']||_0x46ed79['record']['removed']&&(_0x4897d7['mergeResult']['status']==='merged'||_0x4897d7['mergeResult']['status']==='unchanged'))throw new t['CollabError']('INVALID_REQUEST','Merge\x20result\x20does\x20not\x20match\x20frozen\x20Unit\x20removal\x20intent');let _0x585bd8=_0x46ed79['record']['mergeResult'];return _0x585bd8&&(0x0,e['isDeepStrictEqual'])(_0x585bd8,_0x4897d7['mergeResult'])?{'status':'already-recorded','aggregate':a(_0x4a1bfe)}:_0x585bd8&&h(_0x585bd8)?{'status':'stale-merge'}:(_0x46ed79['record']={..._0x46ed79['record'],'mergeResult':_(_0x4897d7['mergeResult'])},{'status':'recorded','aggregate':a(_0x4a1bfe)});}async['finishMerge'](_0x23cdc8,_0x45d5b1){this['_assertOpen']();let _0x22e981=this['_worktrees']['get'](_0x45d5b1);if(!_0x22e981)return{'status':'not-found'};if(_0x22e981['record']['status']==='merged')return{'status':'already-in-target','aggregate':a(_0x22e981)};if(_0x22e981['record']['status']!=='merging')return{'status':'status-mismatch','aggregate':a(_0x22e981)};let _0x135a4d=[..._0x22e981['units']['values']()]['every'](_0x46f5f5=>m(_0x46f5f5['record']));return _0x22e981['record']={..._0x22e981['record'],'status':_0x135a4d?'merged':'ready'},{'status':'transitioned','previousStatus':'merging','aggregate':a(_0x22e981)};}async['dispose'](){this['_disposed']||(this['_disposed']=!0x0,this['_worktrees']['clear']());}['_assertOpen'](){if(this['_disposed'])throw new t['CollabError']('INTERNAL_ERROR','Memory\x20Worktree\x20Database\x20Adapter\x20is\x20disposed');}};function a(_0x1947b3){return{'worktree':_(_0x1947b3['record']),'units':[..._0x1947b3['units']['values']()]['map'](({record:_0x406489})=>_(_0x406489))};}function o(_0x4e32df){if(!_0x4e32df['record']['worktreeID']||!_0x4e32df['record']['sid']||_0x4e32df['record']['status']!=='draft')throw g('New\x20Worktree\x20record\x20must\x20be\x20a\x20draft\x20with\x20identity');let _0x1ee95b=new Set();for(let _0x3b02ee of _0x4e32df['units']){if(_0x3b02ee['worktreeID']!==_0x4e32df['record']['worktreeID'])throw g('Initial\x20Unit\x20belongs\x20to\x20a\x20different\x20Worktree');if(_0x1ee95b['has'](_0x3b02ee['unitID']))throw g('Initial\x20Worktree\x20Units\x20must\x20be\x20unique');_0x1ee95b['add'](_0x3b02ee['unitID']),c(_0x3b02ee);}}function s(_0x2ee5b2){if(!_0x2ee5b2['worktreeID']||!_0x2ee5b2['unitID'])throw g('Worktree\x20and\x20Unit\x20identity\x20are\x20required');}function c(_0x720ba3){if(s(_0x720ba3),_0x720ba3['source']!=='trunk'||!Number['isSafeInteger'](_0x720ba3['baselineTrunkRevision'])||_0x720ba3['baselineTrunkRevision']<0x1||!r['has'](_0x720ba3['type'])||_0x720ba3['draftHeadRevision']!==_0x720ba3['baselineTrunkRevision']||_0x720ba3['readyDraftHeadRevision']!==void 0x0||_0x720ba3['mergeResult']!==void 0x0)throw g('New\x20Worktree\x20Unit\x20must\x20start\x20at\x20its\x20trunk\x20baseline');}function l(_0x19927c,_0x1ea4f7){if(s(_0x19927c),_0x19927c['source']!=='worktree'||_0x19927c['baselineTrunkRevision']!==void 0x0||!r['has'](_0x19927c['type'])||_0x19927c['draftHeadRevision']!==0x1||_0x19927c['readyDraftHeadRevision']!==void 0x0||_0x19927c['mergeResult']!==void 0x0||_0x1ea4f7['snapshot']['unitID']!==_0x19927c['unitID']||_0x1ea4f7['snapshot']['type']!==_0x19927c['type']||_0x1ea4f7['snapshot']['rev']!==0x1)throw g('Worktree-created\x20Unit\x20must\x20start\x20from\x20its\x20revision\x201\x20seed');}function u(_0x288d2f){if(_0x288d2f['status']==='merged'){if(!Number['isSafeInteger'](_0x288d2f['trunkRevision'])||_0x288d2f['trunkRevision']<0x1)throw g('Merged\x20result\x20requires\x20a\x20positive\x20trunk\x20revision');return;}if(!(_0x288d2f['status']==='unchanged'||_0x288d2f['status']==='removed')&&(!_0x288d2f['error']['code']||!_0x288d2f['error']['message']||typeof _0x288d2f['error']['retryable']!='boolean'))throw g('Merge\x20error\x20must\x20be\x20stable\x20and\x20serializable');}function d(_0x5441a7,_0x4ded8b){if(_0x4ded8b['unit']['snapshot']['unitID']!==_0x5441a7['unitID']||_0x4ded8b['unit']['snapshot']['type']!==_0x5441a7['type']||_0x4ded8b['unit']['snapshot']['rev']!==0x1)throw g('Worktree\x20Unit\x20merge\x20artifact\x20must\x20be\x20a\x20revision\x201\x20snapshot');}function f(_0x1b4001){if(!Number['isSafeInteger'](_0x1b4001['from'])||_0x1b4001['from']<0x0||_0x1b4001['to']!==void 0x0&&(!Number['isSafeInteger'](_0x1b4001['to'])||_0x1b4001['to']<0x0))throw g('Changeset\x20range\x20revisions\x20must\x20be\x20non-negative');}function p(_0x4896ff){let {readyDraftHeadRevision:_0x5e242e,mergeResult:_0x416bf6,..._0x4bc943}=_0x4896ff;return _0x4bc943;}function m(_0xa5dd2d){return _0xa5dd2d['mergeResult']?h(_0xa5dd2d['mergeResult']):!0x1;}function h(_0x122f23){return _0x122f23['status']==='merged'||_0x122f23['status']==='unchanged'||_0x122f23['status']==='removed';}function g(_0x7260e6){return new t['CollabError']('INVALID_REQUEST',_0x7260e6);}function _(_0x33b278){return structuredClone(_0x33b278);}exports['MemoryWorktreeDatabaseAdapter']=i;
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { ChangesetRange, DatabaseContext } from "@univerjs-pro/collaboration-service";
2
- import { AddWorktreeUnitDatabaseInput, AddWorktreeUnitDatabaseResult, CommitWorktreeChangesetInput, CommitWorktreeChangesetResult, CreateWorktreeDatabaseInput, CreateWorktreeDatabaseResult, CreateWorktreeUnitDatabaseInput, CreateWorktreeUnitDatabaseResult, IWorktreeDatabaseAdapter, RecordUnitMergeResultInput, RecordUnitMergeResultResult, SaveWorktreeUnitMergeArtifactInput, SaveWorktreeUnitMergeArtifactResult, StartMergeResult, WorktreeAggregateRecord, WorktreeRevisionRange, WorktreeTransitionResult, WorktreeUnitMergeArtifact, WorktreeUnitRecord, WorktreeUnitSeed } from "@univerjs-pro/collaboration-worktree-service";
1
+ import { DatabaseContext } from "@univerjs-pro/collaboration-service";
2
+ import { AddWorktreeUnitDatabaseInput, AddWorktreeUnitDatabaseResult, CommitWorktreeChangesetInput, CommitWorktreeChangesetResult, CreateWorktreeDatabaseInput, CreateWorktreeDatabaseResult, CreateWorktreeUnitDatabaseInput, CreateWorktreeUnitDatabaseResult, IWorktreeDatabaseAdapter, RecordUnitMergeResultInput, RecordUnitMergeResultResult, SaveWorktreeUnitMergeArtifactInput, SaveWorktreeUnitMergeArtifactResult, SetWorktreeUnitRemovedDatabaseInput, SetWorktreeUnitRemovedResult, StartMergeResult, WorktreeAggregateRecord, WorktreeRevisionRange, WorktreeTransitionResult, WorktreeUnitMergeArtifact, WorktreeUnitRecord, WorktreeUnitSeed } from "@univerjs-pro/collaboration-worktree-service";
3
3
  import { IChangeset } from "@univerjs/protocol";
4
4
 
5
5
  //#region src/memory-worktree-database-adapter.d.ts
@@ -8,14 +8,14 @@ declare class MemoryWorktreeDatabaseAdapter implements IWorktreeDatabaseAdapter
8
8
  private _disposed;
9
9
  getWorktree(_context: DatabaseContext, worktreeID: string): Promise<WorktreeAggregateRecord | null>;
10
10
  getWorktreeUnit(_context: DatabaseContext, worktreeID: string, unitID: string): Promise<WorktreeUnitRecord | null>;
11
- getDraftChangesets(_context: DatabaseContext, worktreeID: string, unitID: string, range: WorktreeRevisionRange): Promise<ChangesetRange>;
12
- getDraftSubmission(_context: DatabaseContext, worktreeID: string, unitID: string, sid: string, reqId: number): Promise<IChangeset | null>;
11
+ getDraftChangesets(_context: DatabaseContext, worktreeID: string, unitID: string, range: WorktreeRevisionRange): Promise<readonly IChangeset[] | null>;
13
12
  getUnitSeed(_context: DatabaseContext, worktreeID: string, unitID: string): Promise<WorktreeUnitSeed | null>;
14
13
  getUnitMergeArtifact(_context: DatabaseContext, worktreeID: string, unitID: string): Promise<WorktreeUnitMergeArtifact | null>;
15
14
  createWorktree(_context: DatabaseContext, input: CreateWorktreeDatabaseInput): Promise<CreateWorktreeDatabaseResult>;
16
15
  addUnit(_context: DatabaseContext, input: AddWorktreeUnitDatabaseInput): Promise<AddWorktreeUnitDatabaseResult>;
17
16
  createUnit(_context: DatabaseContext, input: CreateWorktreeUnitDatabaseInput): Promise<CreateWorktreeUnitDatabaseResult>;
18
17
  saveUnitMergeArtifact(_context: DatabaseContext, input: SaveWorktreeUnitMergeArtifactInput): Promise<SaveWorktreeUnitMergeArtifactResult>;
18
+ setUnitRemoved(_context: DatabaseContext, input: SetWorktreeUnitRemovedDatabaseInput): Promise<SetWorktreeUnitRemovedResult>;
19
19
  commitDraftChangeset(_context: DatabaseContext, input: CommitWorktreeChangesetInput): Promise<CommitWorktreeChangesetResult>;
20
20
  markReady(_context: DatabaseContext, worktreeID: string): Promise<WorktreeTransitionResult>;
21
21
  reopenWorktree(_context: DatabaseContext, worktreeID: string): Promise<WorktreeTransitionResult>;
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- function _0x5743(_0x300a7c,_0x1b0906){_0x300a7c=_0x300a7c-0xd1;const _0x96ac51=_0x96ac();let _0x5743ef=_0x96ac51[_0x300a7c];return _0x5743ef;}const _0x34e5b8=_0x5743;(function(_0x3399e8,_0x52c0cd){const _0x181c06=_0x5743,_0x9c30d7=_0x3399e8();while(!![]){try{const _0xfac58a=-parseInt(_0x181c06(0xd6))/0x1+-parseInt(_0x181c06(0xd3))/0x2+parseInt(_0x181c06(0xd8))/0x3*(-parseInt(_0x181c06(0xd4))/0x4)+parseInt(_0x181c06(0xd1))/0x5+parseInt(_0x181c06(0xdb))/0x6+-parseInt(_0x181c06(0xda))/0x7*(parseInt(_0x181c06(0xd5))/0x8)+parseInt(_0x181c06(0xd2))/0x9*(parseInt(_0x181c06(0xd7))/0xa);if(_0xfac58a===_0x52c0cd)break;else _0x9c30d7['push'](_0x9c30d7['shift']());}catch(_0x535620){_0x9c30d7['push'](_0x9c30d7['shift']());}}}(_0x96ac,0x34b18));function _0x96ac(){const _0x4b046f=['2149600QUzQsw','207oMXpuS','136550zgIdvg','250156AtXvzK','858944OnEhOL','353244pVqDmQ','65720pxpDlD','9LBsGtm','MemoryWorktreeDatabaseAdapter','7NWfDBI','2107560WVozOA'];_0x96ac=function(){return _0x4b046f;};return _0x96ac();}import _0x1f8a98 from'./index.cjs';const facadeExport0=_0x1f8a98[_0x34e5b8(0xd9)];export{facadeExport0 as MemoryWorktreeDatabaseAdapter};
1
+ function _0x3080(){const _0x3ea16d=['44dpledO','1603668EuAYhT','476230zfQGZz','4xmayOr','57474eBJYJj','1712536teIHfa','73841QHGuUP','418QOcoAX','1182900YnGUVR','656YYSPRp','70435ESJYBd','MemoryWorktreeDatabaseAdapter'];_0x3080=function(){return _0x3ea16d;};return _0x3080();}function _0x5435(_0x12dd80,_0x1d1873){_0x12dd80=_0x12dd80-0x1e4;const _0x308057=_0x3080();let _0x5435f9=_0x308057[_0x12dd80];return _0x5435f9;}const _0x26a9f6=_0x5435;(function(_0x4bfa66,_0x93644f){const _0xf3807f=_0x5435,_0xc5252b=_0x4bfa66();while(!![]){try{const _0x4ceae4=-parseInt(_0xf3807f(0x1e9))/0x1*(parseInt(_0xf3807f(0x1e6))/0x2)+-parseInt(_0xf3807f(0x1e4))/0x3+-parseInt(_0xf3807f(0x1ef))/0x4*(parseInt(_0xf3807f(0x1ed))/0x5)+parseInt(_0xf3807f(0x1eb))/0x6+-parseInt(_0xf3807f(0x1e8))/0x7+parseInt(_0xf3807f(0x1ec))/0x8*(-parseInt(_0xf3807f(0x1e7))/0x9)+-parseInt(_0xf3807f(0x1e5))/0xa*(-parseInt(_0xf3807f(0x1ea))/0xb);if(_0x4ceae4===_0x93644f)break;else _0xc5252b['push'](_0xc5252b['shift']());}catch(_0x3dd93d){_0xc5252b['push'](_0xc5252b['shift']());}}}(_0x3080,0x61fb1));import _0x21e6ef from'./index.cjs';const facadeExport0=_0x21e6ef[_0x26a9f6(0x1ee)];export{facadeExport0 as MemoryWorktreeDatabaseAdapter};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@univerjs-pro/collaboration-worktree-database-memory",
3
3
  "type": "module",
4
- "version": "1.0.0-insiders.20260805-b15e7f3",
4
+ "version": "1.0.0-rc.0",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.mjs",
7
7
  "types": "./dist/index.d.ts",
@@ -16,11 +16,8 @@
16
16
  "dist"
17
17
  ],
18
18
  "dependencies": {
19
- "@univerjs-pro/collaboration-service": "1.0.0-insiders.20260805-b15e7f3",
20
- "@univerjs-pro/collaboration-worktree-service": "1.0.0-insiders.20260805-b15e7f3",
21
- "@univerjs/protocol": "1.0.0-insiders.20260805-b15e7f3"
22
- },
23
- "publishConfig": {
24
- "access": "public"
19
+ "@univerjs-pro/collaboration-service": "1.0.0-rc.0",
20
+ "@univerjs-pro/collaboration-worktree-service": "1.0.0-rc.0",
21
+ "@univerjs/protocol": "1.0.0-rc.0"
25
22
  }
26
- }
23
+ }