@univerjs-pro/collaboration-worktree-database-sqlite 1.0.0-insiders.20260808-70eefdd → 1.0.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,64 @@
1
+ # @univerjs-pro/collaboration-worktree-database-sqlite
2
+
3
+ English | [简体中文](./README.zh-CN.md)
4
+
5
+ A persistent SQLite `IWorktreeDatabaseAdapter` for `@univerjs-pro/collaboration-worktree-service`. It uses the stable synchronous `libsql` API and supports Node.js 22 and later.
6
+
7
+ ## Installation and usage
8
+
9
+ ```bash
10
+ pnpm add \
11
+ @univerjs-pro/collaboration-worktree-service \
12
+ @univerjs-pro/collaboration-worktree-database-sqlite
13
+ ```
14
+
15
+ ```ts
16
+ const worktreeDatabase = new SQLiteWorktreeDatabaseAdapter({
17
+ filename: './data/collaboration.sqlite',
18
+ busyTimeoutMs: 5_000,
19
+ });
20
+ const worktreeService = new UniverCollabWorktreeService({
21
+ trunk: {
22
+ service: collabService,
23
+ dbAdapter: trunkDatabase,
24
+ },
25
+ dbAdapter: worktreeDatabase,
26
+ });
27
+
28
+ await worktreeService.dispose();
29
+ await worktreeDatabase.dispose();
30
+ ```
31
+
32
+ The caller must create the database parent directory in advance and dispose the Adapter after stopping Worktree Service.
33
+
34
+ ## Storage contract
35
+
36
+ - Tables use the `collaboration_worktree_*` prefix.
37
+ - Schema version `('worktree', 3)` is stored in shared `collaboration_schema_versions`; `PRAGMA user_version` is not used.
38
+ - Draft-changeset scalar columns and the submission unique constraint provide database-level integrity, while commits use revision CAS and do not query the submission key.
39
+ - It can share a database file with trunk, Comment, and History SQLite Adapters.
40
+ - State transitions, draft CAS, and merge results use SQLite transactions for atomicity.
41
+ - An empty Worktree schema is initialized automatically. Incomplete or unsupported schemas are rejected.
42
+
43
+ Worktree Adapter does not own trunk collaboration data and does not manage Worktree names, list discovery, ACLs, or product-resource extension data for the application.
44
+
45
+ ## Explicit migrations
46
+
47
+ V3 adds required `creator_id` (creator) and `created_at_ms` (creation time, Unix milliseconds)
48
+ to `collaboration_worktree_units`, and required `created_at_ms` (commit time, Unix milliseconds)
49
+ to `collaboration_worktree_changesets`.
50
+
51
+ Stop writers and back up the file,
52
+ then call `migrateSQLiteWorktreeV2ToV3({ filename })` before constructing the Adapter.
53
+ For v1 databases, first call `migrateSQLiteWorktreeV1ToV2({ filename })`.
54
+ Both functions are exported from the package root; opening an old database does not migrate it automatically.
55
+
56
+ For trunk-sourced Units, creation facts default to revision 1 in History in the same database.
57
+ Draft changeset times use their payload `createTime` (seconds). Missing or invalid information
58
+ falls back to `anonymous` and the migration start time. Trunk History cannot identify draft revisions.
59
+
60
+ Optional async `resolveUnitCreation(worktreeID, unitID)` and
61
+ `resolveChangesetCreatedAt(worktreeID, unitID, revision)` callbacks replace these defaults,
62
+ returning `{ creatorID, createdAt }` and a timestamp, respectively, using Unix milliseconds.
63
+ Callbacks cover removed Units too and must not write to the same database.
64
+ Invalid callback results or exceptions roll back the migration.
@@ -0,0 +1,66 @@
1
+ # @univerjs-pro/collaboration-worktree-database-sqlite
2
+
3
+ [English](./README.md) | [简体中文](./README.zh-CN.md)
4
+
5
+ 面向 `@univerjs-pro/collaboration-worktree-service` 的持久化 SQLite
6
+ `IWorktreeDatabaseAdapter`。它使用稳定的 `libsql` 同步接口,支持 Node.js 22 及以上。
7
+
8
+ ## 安装与使用
9
+
10
+ ```bash
11
+ pnpm add \
12
+ @univerjs-pro/collaboration-worktree-service \
13
+ @univerjs-pro/collaboration-worktree-database-sqlite
14
+ ```
15
+
16
+ ```ts
17
+ const worktreeDatabase = new SQLiteWorktreeDatabaseAdapter({
18
+ filename: './data/collaboration.sqlite',
19
+ busyTimeoutMs: 5_000,
20
+ });
21
+ const worktreeService = new UniverCollabWorktreeService({
22
+ trunk: {
23
+ service: collabService,
24
+ dbAdapter: trunkDatabase,
25
+ },
26
+ dbAdapter: worktreeDatabase,
27
+ });
28
+
29
+ await worktreeService.dispose();
30
+ await worktreeDatabase.dispose();
31
+ ```
32
+
33
+ 调用方必须预先创建数据库父目录,并在 Worktree Service 停止后释放 Adapter。
34
+
35
+ ## 存储契约
36
+
37
+ - 表使用 `collaboration_worktree_*` 前缀。
38
+ - schema 版本 `('worktree', 3)` 记录在共享的
39
+ `collaboration_schema_versions`,不占用 `PRAGMA user_version`。
40
+ - draft changeset 标量列和 submission unique constraint 提供数据库级完整性;提交只做
41
+ revision CAS,不按 submission key 点查。
42
+ - 可以与 trunk、Comment 和 History SQLite Adapter 共用一个数据库文件。
43
+ - 状态转换、draft CAS 和 merge result 使用 SQLite transaction 保证原子契约。
44
+ - 空 Worktree schema 自动初始化;不完整或不支持的 schema 会被拒绝。
45
+
46
+ Worktree Adapter 不拥有 trunk 协同数据,也不替应用管理 Worktree 名称、列表发现、ACL 或
47
+ 产品资源扩展数据。
48
+
49
+ ## 显式迁移
50
+
51
+ v3 为 `collaboration_worktree_units` 新增必填的 `creator_id`(创建者)和
52
+ `created_at_ms`(创建时间,Unix 毫秒),为 `collaboration_worktree_changesets` 新增必填的
53
+ `created_at_ms`(提交时间,Unix 毫秒)。
54
+
55
+ 停写并备份后,在构造 Adapter 前调用
56
+ `migrateSQLiteWorktreeV2ToV3({ filename })`;v1 库先调用
57
+ `migrateSQLiteWorktreeV1ToV2({ filename })`。两个方法均从包根入口导出,打开旧库不会自动迁移。
58
+
59
+ 从 trunk 加入的 Unit 默认使用同一数据库中 History revision 1 的创建信息。
60
+ Draft changeset 时间使用其 payload 的 `createTime`(秒)。信息缺失或非法时使用
61
+ `anonymous` 和本次迁移开始时间;trunk History 不能用于识别 draft revision。
62
+
63
+ 可选异步回调 `resolveUnitCreation(worktreeID, unitID)` 和
64
+ `resolveChangesetCreatedAt(worktreeID, unitID, revision)` 可覆盖默认策略,
65
+ 分别返回 `{ creatorID, createdAt }` 和时间值,时间均为 Unix 毫秒。
66
+ 回调也包含 removed Unit,不得写入同一数据库;返回非法值或抛出异常会使迁移整体回滚。
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object['defineProperty'](exports,Symbol['toStringTag'],{'value':'Module'});var e=Object['create'],t=Object['defineProperty'],n=Object['getOwnPropertyDescriptor'],r=Object['getOwnPropertyNames'],i=Object['getPrototypeOf'],a=Object['prototype']['hasOwnProperty'],o=(_0x422cea,_0x1805ca,_0x42b28f,_0xb23984)=>{if(_0x1805ca&&typeof _0x1805ca=='object'||typeof _0x1805ca=='function'){for(var _0x58d16b=r(_0x1805ca),_0x852e29=0x0,_0x578fd6=_0x58d16b['length'],_0x8ef071;_0x852e29<_0x578fd6;_0x852e29++)_0x8ef071=_0x58d16b[_0x852e29],!a['call'](_0x422cea,_0x8ef071)&&_0x8ef071!==_0x42b28f&&t(_0x422cea,_0x8ef071,{'get':(_0x31bddb=>_0x1805ca[_0x31bddb])['bind'](null,_0x8ef071),'enumerable':!(_0xb23984=n(_0x1805ca,_0x8ef071))||_0xb23984['enumerable']});}return _0x422cea;},s=(_0x42a761,_0x547aaa,_0x10b3a6)=>(_0x10b3a6=_0x42a761==null?{}:e(i(_0x42a761)),o(_0x547aaa||!_0x42a761||!_0x42a761['__esModule']?t(_0x10b3a6,'default',{'value':_0x42a761,'enumerable':!0x0}):_0x10b3a6,_0x42a761));let c=require('node:util'),l=require('libsql');l=s(l,0x1);let u=require('@univerjs-pro/collaboration-service'),d=require('@univerjs/protocol');var f='worktree',p=0x1,m=['collaboration_worktrees','collaboration_worktree_units','collaboration_worktree_changesets','collaboration_worktree_unit_seeds','collaboration_worktree_unit_merge_artifacts'],h=0x1388,g='__univerCollaborationBinary',_=new Set([d['UniverType']['UNIVER_SHEET'],d['UniverType']['UNIVER_DOC'],d['UniverType']['UNIVER_SLIDE'],d['UniverType']['UNIVER_BOARD'],d['UniverType']['UNIVER_BASE']]),v=class{['_database'];['_disposed']=!0x1;constructor(_0xf0dd3b){b(_0xf0dd3b),this['_database']=new l['default'](_0xf0dd3b['filename'],{'timeout':_0xf0dd3b['busyTimeoutMs']??h});try{this['_database']['exec']('PRAGMA\x20foreign_keys\x20=\x20ON;'),this['_database']['exec']('PRAGMA\x20busy_timeout\x20=\x20'+(_0xf0dd3b['busyTimeoutMs']??h)+';'),this['_initializeSchema']();}catch(_0x329f4e){throw this['_database']['close'](),_0x329f4e;}}async['getWorktree'](_0x44bc06,_0x1cb6a4){return this['_assertOpen'](),this['_getAggregate'](_0x1cb6a4);}async['getWorktreeUnit'](_0x598a9b,_0x52107e,_0x5444e1){this['_assertOpen']();let _0x537e78=this['_getUnitRow'](_0x52107e,_0x5444e1);return _0x537e78?y(_0x537e78):null;}async['getDraftChangesets'](_0x1fdf6a,_0xcebcd2,_0x2d7609,_0x23557a){this['_assertOpen'](),D(_0x23557a);let _0x38a034=this['_getUnitRow'](_0xcebcd2,_0x2d7609);if(!_0x38a034)return{'changesets':[],'latestRevision':0x0};let _0x2041a5=_0x23557a['to']===0x0?_0x38a034['draft_head_revision']:Math['min'](_0x23557a['to'],_0x38a034['draft_head_revision']);return{'changesets':this['_database']['prepare']('SELECT\x20payload_json\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_worktree_changesets\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20AND\x20revision\x20>\x20?\x20AND\x20revision\x20<=\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20revision\x20ASC')['all'](_0xcebcd2,_0x2d7609,_0x23557a['from'],_0x2041a5)['map'](({payload_json:_0x5804cb})=>L(_0x5804cb)),'latestRevision':_0x38a034['draft_head_revision']};}async['getDraftSubmission'](_0x20dba5,_0x10e380,_0x50f13e,_0x25e931,_0x4bbb4c){this['_assertOpen']();let _0x4a068f=this['_database']['prepare']('SELECT\x20payload_json\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_worktree_changesets\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?\x20AND\x20sid\x20=\x20?\x20AND\x20req_id\x20=\x20?')['get'](_0x10e380,_0x50f13e,_0x25e931,_0x4bbb4c);return _0x4a068f?L(_0x4a068f['payload_json']):null;}async['getUnitSeed'](_0x1b171e,_0x132890,_0x3f6fac){return this['_assertOpen'](),this['_getUnitSeed'](_0x132890,_0x3f6fac);}async['getUnitMergeArtifact'](_0x38e1cd,_0x5116ca,_0x198a61){return this['_assertOpen'](),this['_getUnitMergeArtifact'](_0x5116ca,_0x198a61);}async['createWorktree'](_0x6ac00,_0x2af5ac){return this['_assertOpen'](),x(_0x2af5ac),this['_transaction'](()=>{let _0x14c708=this['_getAggregate'](_0x2af5ac['record']['worktreeID']);if(_0x14c708)return{'status':'already-exists','aggregate':_0x14c708};this['_database']['prepare']('INSERT\x20INTO\x20collaboration_worktrees\x20(worktree_id,\x20sid,\x20status)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(?,\x20?,\x20\x27draft\x27)')['run'](_0x2af5ac['record']['worktreeID'],_0x2af5ac['record']['sid']);let _0x41665f=this['_database']['prepare']('INSERT\x20INTO\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(worktree_id,\x20unit_id,\x20unit_order,\x20type,\x20source,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20baseline_trunk_revision,\x20draft_head_revision)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20\x27trunk\x27,\x20?,\x20?)');return _0x2af5ac['units']['forEach']((_0x1b71e5,_0x34773f)=>{_0x41665f['run'](_0x1b71e5['worktreeID'],_0x1b71e5['unitID'],_0x34773f,_0x1b71e5['type'],_0x1b71e5['baselineTrunkRevision'],_0x1b71e5['draftHeadRevision']);}),{'status':'created','aggregate':this['_requireAggregate'](_0x2af5ac['record']['worktreeID'])};});}async['addUnit'](_0x15c1a1,_0x9a9e67){return this['_assertOpen'](),w(_0x9a9e67['unit']),this['_transaction'](()=>{let {unit:_0x2d2c7b}=_0x9a9e67,_0x4e93f2=this['_getWorktreeRow'](_0x2d2c7b['worktreeID']);if(!_0x4e93f2)return{'status':'not-found'};if(this['_getUnitRow'](_0x2d2c7b['worktreeID'],_0x2d2c7b['unitID']))return{'status':'already-exists','aggregate':this['_requireAggregate'](_0x2d2c7b['worktreeID'])};if(_0x4e93f2['status']!=='draft')return{'status':'status-mismatch','aggregate':this['_requireAggregate'](_0x2d2c7b['worktreeID'])};S(_0x2d2c7b);let _0x48f47b=this['_database']['prepare']('SELECT\x20COALESCE(MAX(unit_order),\x20-1)\x20+\x201\x20AS\x20next_order\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?')['get'](_0x2d2c7b['worktreeID']);return this['_database']['prepare']('INSERT\x20INTO\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(worktree_id,\x20unit_id,\x20unit_order,\x20type,\x20source,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20baseline_trunk_revision,\x20draft_head_revision)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20\x27trunk\x27,\x20?,\x20?)')['run'](_0x2d2c7b['worktreeID'],_0x2d2c7b['unitID'],_0x48f47b['next_order'],_0x2d2c7b['type'],_0x2d2c7b['baselineTrunkRevision'],_0x2d2c7b['draftHeadRevision']),{'status':'added','aggregate':this['_requireAggregate'](_0x2d2c7b['worktreeID'])};});}async['createUnit'](_0x2bf5a9,_0x1f31da){return this['_assertOpen'](),C(_0x1f31da['unit'],_0x1f31da['seed']),this['_transaction'](()=>{let {unit:_0x362e23,seed:_0x3928ed}=_0x1f31da,_0x565bd7=this['_getWorktreeRow'](_0x362e23['worktreeID']);if(!_0x565bd7)return{'status':'not-found'};let _0x101f41=this['_getUnitRow'](_0x362e23['worktreeID'],_0x362e23['unitID']);if(_0x101f41){let _0x302a24=this['_getUnitSeed'](_0x362e23['worktreeID'],_0x362e23['unitID']);return{'status':_0x101f41['source']==='worktree'&&_0x101f41['type']===_0x362e23['type']&&_0x302a24!==null&&I(_0x302a24)===I(_0x3928ed)?'already-created':'unit-exists','aggregate':this['_requireAggregate'](_0x362e23['worktreeID'])};}if(_0x565bd7['status']!=='draft')return{'status':'status-mismatch','aggregate':this['_requireAggregate'](_0x362e23['worktreeID'])};let _0x3e43b5=this['_database']['prepare']('SELECT\x20COALESCE(MAX(unit_order),\x20-1)\x20+\x201\x20AS\x20next_order\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?')['get'](_0x362e23['worktreeID']);return this['_database']['prepare']('INSERT\x20INTO\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(worktree_id,\x20unit_id,\x20unit_order,\x20type,\x20source,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20baseline_trunk_revision,\x20draft_head_revision)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20\x27worktree\x27,\x201,\x201)')['run'](_0x362e23['worktreeID'],_0x362e23['unitID'],_0x3e43b5['next_order'],_0x362e23['type']),this['_database']['prepare']('INSERT\x20INTO\x20collaboration_worktree_unit_seeds\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(worktree_id,\x20unit_id,\x20snapshot_json,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sheet_blocks_json)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(?,\x20?,\x20?,\x20?)')['run'](_0x362e23['worktreeID'],_0x362e23['unitID'],I(_0x3928ed['snapshot']),_0x3928ed['sheetBlocks']===void 0x0?null:I(_0x3928ed['sheetBlocks'])),{'status':'created','aggregate':this['_requireAggregate'](_0x362e23['worktreeID'])};});}async['saveUnitMergeArtifact'](_0x1cf7fa,_0x4f5aee){return this['_assertOpen'](),this['_transaction'](()=>{let _0x2df021=this['_getWorktreeRow'](_0x4f5aee['worktreeID']),_0x4c9052=this['_getUnitRow'](_0x4f5aee['worktreeID'],_0x4f5aee['unitID']);if(!_0x2df021||!_0x4c9052)return{'status':'not-found'};let _0x42a4ff=y(_0x4c9052);if(_0x2df021['status']!=='merging'||_0x42a4ff['source']!=='worktree'||_0x42a4ff['readyDraftHeadRevision']!==_0x4f5aee['artifact']['readyDraftHeadRevision']||A(_0x42a4ff))return{'status':'stale-merge'};let _0x5d967e=this['_getUnitMergeArtifact'](_0x4f5aee['worktreeID'],_0x4f5aee['unitID']);return _0x5d967e?{'status':'already-saved','artifact':_0x5d967e}:(k(_0x42a4ff,_0x4f5aee['artifact']),this['_database']['prepare']('INSERT\x20INTO\x20collaboration_worktree_unit_merge_artifacts\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(worktree_id,\x20unit_id,\x20ready_draft_head_revision,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20snapshot_json,\x20sheet_blocks_json)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20?)')['run'](_0x4f5aee['worktreeID'],_0x4f5aee['unitID'],_0x4f5aee['artifact']['readyDraftHeadRevision'],I(_0x4f5aee['artifact']['unit']['snapshot']),_0x4f5aee['artifact']['unit']['sheetBlocks']===void 0x0?null:I(_0x4f5aee['artifact']['unit']['sheetBlocks'])),{'status':'saved','artifact':L(I(_0x4f5aee['artifact']))});});}async['commitDraftChangeset'](_0x2709cd,_0x250c10){return this['_assertOpen'](),T(_0x250c10['changeset']),this['_transaction'](()=>{let {worktreeID:_0x3ded36,expectedHeadRevision:_0x4255ad,changeset:_0xa830fa}=_0x250c10,_0x52414a=this['_database']['prepare']('SELECT\x20payload_json\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_worktree_changesets\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?\x20AND\x20sid\x20=\x20?\x20AND\x20req_id\x20=\x20?')['get'](_0x3ded36,_0xa830fa['unitID'],_0xa830fa['sid'],_0xa830fa['reqId']);if(_0x52414a)return{'status':'already-committed','changeset':L(_0x52414a['payload_json'])};let _0x10dccc=this['_getWorktreeRow'](_0x3ded36),_0x24a5ca=this['_getUnitRow'](_0x3ded36,_0xa830fa['unitID']);if(!_0x10dccc||!_0x24a5ca)return{'status':'not-found'};if(_0x10dccc['status']!=='draft')return{'status':'not-editable','worktreeStatus':M(_0x10dccc['status'])};let _0x56f641=y(_0x24a5ca);if(A(_0x56f641))return{'status':'unit-frozen'};if(_0x56f641['draftHeadRevision']!==_0x4255ad)return{'status':'revision-mismatch','actualHeadRevision':_0x56f641['draftHeadRevision']};if(E(_0x56f641,_0x250c10),this['_database']['prepare']('INSERT\x20INTO\x20collaboration_worktree_changesets\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(worktree_id,\x20unit_id,\x20revision,\x20base_revision,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sid,\x20req_id,\x20payload_json)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?)')['run'](_0x3ded36,_0xa830fa['unitID'],_0xa830fa['revision'],_0xa830fa['baseRev'],_0xa830fa['sid'],_0xa830fa['reqId'],I(_0xa830fa)),this['_database']['prepare']('UPDATE\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SET\x20draft_head_revision\x20=\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20AND\x20draft_head_revision\x20=\x20?')['run'](_0xa830fa['revision'],_0x3ded36,_0xa830fa['unitID'],_0x4255ad)['changes']!==0x1)throw new u['CollabError']('INTERNAL_ERROR','SQLite\x20draft\x20head\x20changed\x20inside\x20a\x20write\x20transaction');return{'status':'committed','changeset':L(I(_0xa830fa)),'headRevision':_0xa830fa['revision']};});}async['markReady'](_0x5cf757,_0x17161c){return this['_assertOpen'](),this['_transaction'](()=>{let _0xcc5b24=this['_getWorktreeRow'](_0x17161c);if(!_0xcc5b24)return{'status':'not-found'};if(_0xcc5b24['status']==='ready')return{'status':'already-in-target','aggregate':this['_requireAggregate'](_0x17161c)};if(_0xcc5b24['status']!=='draft')return{'status':'status-mismatch','aggregate':this['_requireAggregate'](_0x17161c)};for(let _0xa3a299 of this['_getUnitRows'](_0x17161c))A(y(_0xa3a299))||(this['_database']['prepare']('UPDATE\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SET\x20ready_draft_head_revision\x20=\x20draft_head_revision\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?')['run'](_0x17161c,_0xa3a299['unit_id']),this['_database']['prepare']('DELETE\x20FROM\x20collaboration_worktree_unit_merge_artifacts\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?')['run'](_0x17161c,_0xa3a299['unit_id']));return this['_updateStatus'](_0x17161c,'ready'),{'status':'transitioned','previousStatus':'draft','aggregate':this['_requireAggregate'](_0x17161c)};});}async['reopenWorktree'](_0x3c6ee6,_0x11c7f1){return this['_assertOpen'](),this['_transaction'](()=>{let _0x320a61=this['_getWorktreeRow'](_0x11c7f1);if(!_0x320a61)return{'status':'not-found'};if(_0x320a61['status']==='draft')return{'status':'already-in-target','aggregate':this['_requireAggregate'](_0x11c7f1)};if(_0x320a61['status']!=='ready')return{'status':'status-mismatch','aggregate':this['_requireAggregate'](_0x11c7f1)};for(let _0x39dcb4 of this['_getUnitRows'](_0x11c7f1))A(y(_0x39dcb4))||(this['_database']['prepare']('UPDATE\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SET\x20ready_draft_head_revision\x20=\x20NULL,\x20merge_result_json\x20=\x20NULL\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?')['run'](_0x11c7f1,_0x39dcb4['unit_id']),this['_database']['prepare']('DELETE\x20FROM\x20collaboration_worktree_unit_merge_artifacts\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?')['run'](_0x11c7f1,_0x39dcb4['unit_id']));return this['_updateStatus'](_0x11c7f1,'draft'),{'status':'transitioned','previousStatus':'ready','aggregate':this['_requireAggregate'](_0x11c7f1)};});}async['discardWorktree'](_0x339b24,_0x54de84){return this['_assertOpen'](),this['_transaction'](()=>{let _0x5e3310=this['_getWorktreeRow'](_0x54de84);if(!_0x5e3310)return{'status':'not-found'};if(_0x5e3310['status']==='discarded')return{'status':'already-in-target','aggregate':this['_requireAggregate'](_0x54de84)};if(_0x5e3310['status']!=='draft'&&_0x5e3310['status']!=='ready')return{'status':'status-mismatch','aggregate':this['_requireAggregate'](_0x54de84)};let _0x4b261f=M(_0x5e3310['status']);return this['_updateStatus'](_0x54de84,'discarded'),{'status':'transitioned','previousStatus':_0x4b261f,'aggregate':this['_requireAggregate'](_0x54de84)};});}async['startOrResumeMerge'](_0x3ec29b,_0x422604){return this['_assertOpen'](),this['_transaction'](()=>{let _0x2a75cf=this['_getWorktreeRow'](_0x422604);return _0x2a75cf?_0x2a75cf['status']==='merged'?{'status':'already-merged','aggregate':this['_requireAggregate'](_0x422604)}:_0x2a75cf['status']==='merging'?{'status':'resumed','aggregate':this['_requireAggregate'](_0x422604)}:_0x2a75cf['status']==='ready'?(this['_updateStatus'](_0x422604,'merging'),{'status':'started','aggregate':this['_requireAggregate'](_0x422604)}):{'status':'status-mismatch','aggregate':this['_requireAggregate'](_0x422604)}:{'status':'not-found'};});}async['recordUnitMergeResult'](_0x46fa03,_0x281569){return this['_assertOpen'](),O(_0x281569['mergeResult']),this['_transaction'](()=>{let _0x2df36c=this['_getWorktreeRow'](_0x281569['worktreeID']),_0x11d2ca=this['_getUnitRow'](_0x281569['worktreeID'],_0x281569['unitID']);if(!_0x2df36c||!_0x11d2ca)return{'status':'not-found'};let _0x97fdae=y(_0x11d2ca);if(_0x2df36c['status']!=='merging'||_0x97fdae['readyDraftHeadRevision']!==_0x281569['readyDraftHeadRevision'])return{'status':'stale-merge'};let _0x423214=_0x97fdae['mergeResult'];return _0x423214&&(0x0,c['isDeepStrictEqual'])(_0x423214,_0x281569['mergeResult'])?{'status':'already-recorded','aggregate':this['_requireAggregate'](_0x281569['worktreeID'])}:_0x423214&&j(_0x423214)?{'status':'stale-merge'}:(this['_database']['prepare']('UPDATE\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SET\x20merge_result_json\x20=\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?')['run'](I(_0x281569['mergeResult']),_0x281569['worktreeID'],_0x281569['unitID']),{'status':'recorded','aggregate':this['_requireAggregate'](_0x281569['worktreeID'])});});}async['finishMerge'](_0x467c0b,_0x1c2a6f){return this['_assertOpen'](),this['_transaction'](()=>{let _0x4d779b=this['_getWorktreeRow'](_0x1c2a6f);if(!_0x4d779b)return{'status':'not-found'};if(_0x4d779b['status']==='merged')return{'status':'already-in-target','aggregate':this['_requireAggregate'](_0x1c2a6f)};if(_0x4d779b['status']!=='merging')return{'status':'status-mismatch','aggregate':this['_requireAggregate'](_0x1c2a6f)};let _0x9856bc=this['_getUnitRows'](_0x1c2a6f)['every'](_0x57d2bc=>A(y(_0x57d2bc)));return this['_updateStatus'](_0x1c2a6f,_0x9856bc?'merged':'ready'),{'status':'transitioned','previousStatus':'merging','aggregate':this['_requireAggregate'](_0x1c2a6f)};});}async['dispose'](){this['_disposed']||(this['_disposed']=!0x0,this['_database']['close']());}['_initializeSchema'](){this['_transaction'](()=>{if(!this['_hasTable']('collaboration_schema_versions')){if(this['_hasAnyOwnedTable']())throw F('SQLite\x20Worktree\x20tables\x20exist\x20without\x20a\x20schema\x20version');this['_database']['exec']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20collaboration_schema_versions\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20component\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20version\x20INTEGER\x20NOT\x20NULL\x20CHECK\x20(version\x20>=\x201)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20');}let _0xdcbb0d=this['_database']['prepare']('SELECT\x20version\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_schema_versions\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20component\x20=\x20?')['get'](f);if(_0xdcbb0d){if(_0xdcbb0d['version']!==p)throw F('SQLite\x20Worktree\x20schema\x20version\x20'+_0xdcbb0d['version']+'\x20is\x20not\x20supported');let _0x5374df=m['filter'](_0x59a94c=>!this['_hasTable'](_0x59a94c));if(_0x5374df['length']>0x0)throw F('SQLite\x20Worktree\x20schema\x20v1\x20is\x20incomplete:\x20missing\x20'+_0x5374df['join'](',\x20'));return;}if(this['_hasAnyOwnedTable']())throw F('SQLite\x20Worktree\x20tables\x20exist\x20without\x20a\x20schema\x20version');this['_database']['exec']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20collaboration_worktrees\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20worktree_id\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sid\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status\x20TEXT\x20NOT\x20NULL\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20CHECK\x20(status\x20IN\x20(\x27draft\x27,\x20\x27ready\x27,\x20\x27merging\x27,\x20\x27merged\x27,\x20\x27discarded\x27))\x0a\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20collaboration_worktree_units\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20worktree_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20unit_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20unit_order\x20INTEGER\x20NOT\x20NULL\x20CHECK\x20(unit_order\x20>=\x200),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type\x20INTEGER\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20source\x20TEXT\x20NOT\x20NULL\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20CHECK\x20(source\x20IN\x20(\x27trunk\x27,\x20\x27worktree\x27)),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20baseline_trunk_revision\x20INTEGER\x20NOT\x20NULL\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20CHECK\x20(baseline_trunk_revision\x20>=\x201),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20draft_head_revision\x20INTEGER\x20NOT\x20NULL\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20CHECK\x20(draft_head_revision\x20>=\x20baseline_trunk_revision),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ready_draft_head_revision\x20INTEGER,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20merge_result_json\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20PRIMARY\x20KEY\x20(worktree_id,\x20unit_id),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20UNIQUE\x20(worktree_id,\x20unit_order),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(worktree_id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20REFERENCES\x20collaboration_worktrees(worktree_id)\x20ON\x20DELETE\x20CASCADE\x0a\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20collaboration_worktree_changesets\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20worktree_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20unit_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20revision\x20INTEGER\x20NOT\x20NULL\x20CHECK\x20(revision\x20>=\x202),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20base_revision\x20INTEGER\x20NOT\x20NULL\x20CHECK\x20(base_revision\x20>=\x201),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sid\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20req_id\x20INTEGER\x20NOT\x20NULL\x20CHECK\x20(req_id\x20>=\x201),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20payload_json\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20PRIMARY\x20KEY\x20(worktree_id,\x20unit_id,\x20revision),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20UNIQUE\x20(worktree_id,\x20unit_id,\x20sid,\x20req_id),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(worktree_id,\x20unit_id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20REFERENCES\x20collaboration_worktree_units(worktree_id,\x20unit_id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20DELETE\x20CASCADE\x0a\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20INDEX\x20collaboration_worktree_changesets_revision\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20collaboration_worktree_changesets(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20worktree_id,\x20unit_id,\x20revision\x20ASC\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20collaboration_worktree_unit_seeds\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20worktree_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20unit_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20snapshot_json\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sheet_blocks_json\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resources_json\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20PRIMARY\x20KEY\x20(worktree_id,\x20unit_id),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(worktree_id,\x20unit_id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20REFERENCES\x20collaboration_worktree_units(worktree_id,\x20unit_id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20DELETE\x20CASCADE\x0a\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20collaboration_worktree_unit_merge_artifacts\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20worktree_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20unit_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ready_draft_head_revision\x20INTEGER\x20NOT\x20NULL\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20CHECK\x20(ready_draft_head_revision\x20>=\x201),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20snapshot_json\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sheet_blocks_json\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resources_json\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20PRIMARY\x20KEY\x20(worktree_id,\x20unit_id),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(worktree_id,\x20unit_id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20REFERENCES\x20collaboration_worktree_units(worktree_id,\x20unit_id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20DELETE\x20CASCADE\x0a\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20collaboration_schema_versions\x20(component,\x20version)\x0a\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(\x27worktree\x27,\x201);\x0a\x20\x20\x20\x20\x20\x20');});}['_hasTable'](_0x30ef23){return!!this['_database']['prepare']('SELECT\x201\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20sqlite_schema\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20type\x20=\x20\x27table\x27\x20AND\x20name\x20=\x20?')['get'](_0x30ef23);}['_hasAnyOwnedTable'](){return m['some'](_0x3a4331=>this['_hasTable'](_0x3a4331));}['_getWorktreeRow'](_0x3e06eb){return this['_database']['prepare']('SELECT\x20worktree_id,\x20sid,\x20status\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_worktrees\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?')['get'](_0x3e06eb)??null;}['_getUnitRow'](_0x29e1c0,_0x5509cf){return this['_database']['prepare']('SELECT\x20worktree_id,\x20unit_id,\x20type,\x20source,\x20baseline_trunk_revision,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20draft_head_revision,\x20ready_draft_head_revision,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20merge_result_json\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?')['get'](_0x29e1c0,_0x5509cf)??null;}['_getUnitRows'](_0x4178a2){return this['_database']['prepare']('SELECT\x20worktree_id,\x20unit_id,\x20type,\x20source,\x20baseline_trunk_revision,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20draft_head_revision,\x20ready_draft_head_revision,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20merge_result_json\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20unit_order\x20ASC')['all'](_0x4178a2);}['_getUnitSeed'](_0x376dba,_0x44cf73){let _0x5411cf=this['_database']['prepare']('SELECT\x20snapshot_json,\x20sheet_blocks_json\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_worktree_unit_seeds\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?')['get'](_0x376dba,_0x44cf73);return _0x5411cf?{'snapshot':L(_0x5411cf['snapshot_json']),..._0x5411cf['sheet_blocks_json']===null?{}:{'sheetBlocks':L(_0x5411cf['sheet_blocks_json'])}}:null;}['_getUnitMergeArtifact'](_0x3bd254,_0x1a8518){let _0x2ee88a=this['_database']['prepare']('SELECT\x20ready_draft_head_revision,\x20snapshot_json,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sheet_blocks_json\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_worktree_unit_merge_artifacts\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?')['get'](_0x3bd254,_0x1a8518);return _0x2ee88a?{'readyDraftHeadRevision':_0x2ee88a['ready_draft_head_revision'],'unit':{'snapshot':L(_0x2ee88a['snapshot_json']),..._0x2ee88a['sheet_blocks_json']===null?{}:{'sheetBlocks':L(_0x2ee88a['sheet_blocks_json'])}}}:null;}['_getAggregate'](_0x289479){let _0x141e49=this['_getWorktreeRow'](_0x289479);return _0x141e49?{'worktree':{'worktreeID':_0x141e49['worktree_id'],'sid':_0x141e49['sid'],'status':M(_0x141e49['status'])},'units':this['_getUnitRows'](_0x289479)['map'](y)}:null;}['_requireAggregate'](_0x39645d){let _0xda88f8=this['_getAggregate'](_0x39645d);if(!_0xda88f8)throw new u['CollabError']('INTERNAL_ERROR','SQLite\x20Worktree\x20disappeared\x20inside\x20a\x20write\x20transaction');return _0xda88f8;}['_updateStatus'](_0x351b4a,_0x1e57e3){if(this['_database']['prepare']('UPDATE\x20collaboration_worktrees\x20SET\x20status\x20=\x20?\x20WHERE\x20worktree_id\x20=\x20?')['run'](_0x1e57e3,_0x351b4a)['changes']!==0x1)throw new u['CollabError']('INTERNAL_ERROR','SQLite\x20Worktree\x20status\x20update\x20did\x20not\x20affect\x20one\x20record');}['_transaction'](_0x14483f){this['_database']['exec']('BEGIN\x20IMMEDIATE;');try{let _0x1703af=_0x14483f();return this['_database']['exec']('COMMIT;'),_0x1703af;}catch(_0x22b7d7){throw this['_database']['inTransaction']&&this['_database']['exec']('ROLLBACK;'),_0x22b7d7;}}['_assertOpen'](){if(this['_disposed'])throw new u['CollabError']('INTERNAL_ERROR','SQLite\x20Worktree\x20Database\x20Adapter\x20is\x20disposed');}};function y(_0x3cf342){let _0x13cf0c=N(_0x3cf342['source']);return{'worktreeID':_0x3cf342['worktree_id'],'unitID':_0x3cf342['unit_id'],'type':_0x3cf342['type'],'source':_0x13cf0c,..._0x13cf0c==='trunk'?{'baselineTrunkRevision':_0x3cf342['baseline_trunk_revision']}:{},'draftHeadRevision':_0x3cf342['draft_head_revision'],..._0x3cf342['ready_draft_head_revision']===null?{}:{'readyDraftHeadRevision':_0x3cf342['ready_draft_head_revision']},..._0x3cf342['merge_result_json']===null?{}:{'mergeResult':L(_0x3cf342['merge_result_json'])}};}function b(_0x44d9c){if(!_0x44d9c['filename'])throw P('SQLite\x20filename\x20is\x20required');if(_0x44d9c['busyTimeoutMs']!==void 0x0&&(!Number['isSafeInteger'](_0x44d9c['busyTimeoutMs'])||_0x44d9c['busyTimeoutMs']<0x0))throw P('SQLite\x20busyTimeoutMs\x20must\x20be\x20a\x20non-negative\x20integer');}function x(_0x259878){if(!_0x259878['record']['worktreeID']||!_0x259878['record']['sid']||_0x259878['record']['status']!=='draft')throw P('New\x20Worktree\x20must\x20be\x20a\x20draft\x20with\x20identity');let _0x44e7ab=new Set();for(let _0x355721 of _0x259878['units']){if(_0x355721['worktreeID']!==_0x259878['record']['worktreeID']||_0x44e7ab['has'](_0x355721['unitID']))throw P('Initial\x20Worktree\x20Units\x20must\x20be\x20unique\x20and\x20share\x20identity');_0x44e7ab['add'](_0x355721['unitID']),S(_0x355721);}}function S(_0x17f3ef){if(w(_0x17f3ef),_0x17f3ef['source']!=='trunk'||!_['has'](_0x17f3ef['type'])||!Number['isSafeInteger'](_0x17f3ef['baselineTrunkRevision'])||_0x17f3ef['baselineTrunkRevision']<0x1||_0x17f3ef['draftHeadRevision']!==_0x17f3ef['baselineTrunkRevision']||_0x17f3ef['readyDraftHeadRevision']!==void 0x0||_0x17f3ef['mergeResult']!==void 0x0)throw P('New\x20Worktree\x20Unit\x20must\x20start\x20at\x20its\x20trunk\x20baseline');}function C(_0x569a73,_0x1e29bb){if(w(_0x569a73),_0x569a73['source']!=='worktree'||_0x569a73['baselineTrunkRevision']!==void 0x0||!_['has'](_0x569a73['type'])||_0x569a73['draftHeadRevision']!==0x1||_0x569a73['readyDraftHeadRevision']!==void 0x0||_0x569a73['mergeResult']!==void 0x0||_0x1e29bb['snapshot']['unitID']!==_0x569a73['unitID']||_0x1e29bb['snapshot']['type']!==_0x569a73['type']||_0x1e29bb['snapshot']['rev']!==0x1)throw P('Worktree-created\x20Unit\x20must\x20start\x20from\x20its\x20revision\x201\x20seed');}function w(_0x50f267){if(!_0x50f267['worktreeID']||!_0x50f267['unitID'])throw P('Worktree\x20and\x20Unit\x20identity\x20are\x20required');}function T(_0x54f4e8){if(!_0x54f4e8['sid']||!Number['isSafeInteger'](_0x54f4e8['reqId'])||_0x54f4e8['reqId']<0x1)throw P('Changeset\x20sid\x20and\x20positive\x20integer\x20reqId\x20are\x20required');}function E(_0x5ad833,_0x444034){let {changeset:_0x5305b4,expectedHeadRevision:_0x4392c3}=_0x444034;if(_0x5305b4['type']!==_0x5ad833['type']||_0x5305b4['baseRev']!==_0x4392c3||_0x5305b4['revision']!==_0x4392c3+0x1)throw P('Draft\x20changeset\x20must\x20match\x20Unit\x20type\x20and\x20expected\x20revision');}function D(_0x275082){if(!Number['isSafeInteger'](_0x275082['from'])||!Number['isSafeInteger'](_0x275082['to'])||_0x275082['from']<0x0||_0x275082['to']<0x0)throw P('Draft\x20revision\x20range\x20cannot\x20be\x20negative');}function O(_0x53511d){if(_0x53511d['status']==='merged'){if(!Number['isSafeInteger'](_0x53511d['trunkRevision'])||_0x53511d['trunkRevision']<0x1)throw P('Merged\x20result\x20requires\x20a\x20trunk\x20revision');return;}if(_0x53511d['status']!=='unchanged'&&(!_0x53511d['error']['code']||!_0x53511d['error']['message']||typeof _0x53511d['error']['retryable']!='boolean'))throw P('Merge\x20error\x20must\x20be\x20stable\x20and\x20serializable');}function k(_0x15b5c0,_0x14ce1f){if(_0x14ce1f['unit']['snapshot']['unitID']!==_0x15b5c0['unitID']||_0x14ce1f['unit']['snapshot']['type']!==_0x15b5c0['type']||_0x14ce1f['unit']['snapshot']['rev']!==0x1)throw P('Worktree\x20Unit\x20merge\x20artifact\x20must\x20be\x20a\x20revision\x201\x20snapshot');}function A(_0x57b346){return j(_0x57b346['mergeResult']);}function j(_0x4ca694){return _0x4ca694?.['status']==='merged'||_0x4ca694?.['status']==='unchanged';}function M(_0x5e81c7){if(_0x5e81c7==='draft'||_0x5e81c7==='ready'||_0x5e81c7==='merging'||_0x5e81c7==='merged'||_0x5e81c7==='discarded')return _0x5e81c7;throw new u['CollabError']('INTERNAL_ERROR','SQLite\x20contains\x20invalid\x20Worktree\x20status\x20'+_0x5e81c7);}function N(_0x71f252){if(_0x71f252==='trunk'||_0x71f252==='worktree')return _0x71f252;throw new u['CollabError']('INTERNAL_ERROR','SQLite\x20contains\x20invalid\x20Worktree\x20Unit\x20source\x20'+_0x71f252);}function P(_0x2b5647){return new u['CollabError']('INVALID_REQUEST',_0x2b5647);}function F(_0x1fa5e4){return new u['CollabError']('INTERNAL_ERROR',_0x1fa5e4);}function I(_0x1cb368){return JSON['stringify'](_0x1cb368,(_0x39b4a4,_0x5ce7f7)=>_0x5ce7f7 instanceof Uint8Array?{[g]:Buffer['from'](_0x5ce7f7)['toString']('base64')}:_0x5ce7f7);}function L(_0x17877f){return JSON['parse'](_0x17877f,(_0x5a386f,_0x4a6e2f)=>R(_0x4a6e2f)?Uint8Array['from'](Buffer['from'](_0x4a6e2f[g],'base64')):_0x4a6e2f);}function R(_0xdc2a95){return typeof _0xdc2a95=='object'&&!!_0xdc2a95&&Object['keys'](_0xdc2a95)['length']===0x1&&typeof _0xdc2a95[g]=='string';}exports['SQLiteWorktreeDatabaseAdapter']=v;
1
+ Object['defineProperty'](exports,Symbol['toStringTag'],{'value':'Module'});var e=Object['create'],t=Object['defineProperty'],n=Object['getOwnPropertyDescriptor'],r=Object['getOwnPropertyNames'],i=Object['getPrototypeOf'],a=Object['prototype']['hasOwnProperty'],o=(_0x9a370f,_0x384452,_0x394264,_0x306757)=>{if(_0x384452&&typeof _0x384452=='object'||typeof _0x384452=='function'){for(var _0x27856c=r(_0x384452),_0x1e1d73=0x0,_0x1d84d6=_0x27856c['length'],_0x5e2171;_0x1e1d73<_0x1d84d6;_0x1e1d73++)_0x5e2171=_0x27856c[_0x1e1d73],!a['call'](_0x9a370f,_0x5e2171)&&_0x5e2171!==_0x394264&&t(_0x9a370f,_0x5e2171,{'get':(_0x3bb618=>_0x384452[_0x3bb618])['bind'](null,_0x5e2171),'enumerable':!(_0x306757=n(_0x384452,_0x5e2171))||_0x306757['enumerable']});}return _0x9a370f;},s=(_0x2c0b19,_0x50113b,_0x56a383)=>(_0x56a383=_0x2c0b19==null?{}:e(i(_0x2c0b19)),o(_0x50113b||!_0x2c0b19||!_0x2c0b19['__esModule']?t(_0x56a383,'default',{'value':_0x2c0b19,'enumerable':!0x0}):_0x56a383,_0x2c0b19));let c=require('node:util'),l=require('libsql');l=s(l,0x1);let u=require('@univerjs-pro/collaboration-service'),d=require('@univerjs/protocol');var f='worktree',p=0x3,m=['collaboration_worktrees','collaboration_worktree_units','collaboration_worktree_changesets','collaboration_worktree_unit_seeds','collaboration_worktree_unit_merge_artifacts'],h=0x1388,g='__univerCollaborationBinary',_=new Set([d['UniverType']['UNIVER_SHEET'],d['UniverType']['UNIVER_DOC'],d['UniverType']['UNIVER_SLIDE'],d['UniverType']['UNIVER_BOARD'],d['UniverType']['UNIVER_BASE']]),v=class{['_database'];['_disposed']=!0x1;constructor(_0x300be9){b(_0x300be9),this['_database']=new l['default'](_0x300be9['filename'],{'timeout':_0x300be9['busyTimeoutMs']??h});try{this['_database']['exec']('PRAGMA\x20foreign_keys\x20=\x20ON;'),this['_database']['exec']('PRAGMA\x20busy_timeout\x20=\x20'+(_0x300be9['busyTimeoutMs']??h)+';'),this['_initializeSchema']();}catch(_0x3db261){throw this['_database']['close'](),_0x3db261;}}async['getWorktree'](_0x31ee57,_0x467163){return this['_assertOpen'](),this['_getAggregate'](_0x467163);}async['getWorktreeUnit'](_0x55472c,_0x24742d,_0xd99ac9){this['_assertOpen']();let _0x1f6ecd=this['_getUnitRow'](_0x24742d,_0xd99ac9);return _0x1f6ecd?y(_0x1f6ecd):null;}async['getDraftChangesets'](_0x51c429,_0x49b3ef,_0x3f610c,_0x2d59d4){this['_assertOpen'](),T(_0x2d59d4);let _0x1d114f=this['_database']['prepare']('SELECT\x20changesets.payload_json\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_worktree_units\x20AS\x20units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20LEFT\x20JOIN\x20collaboration_worktree_changesets\x20AS\x20changesets\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20changesets.worktree_id\x20=\x20units.worktree_id\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20AND\x20changesets.unit_id\x20=\x20units.unit_id\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20AND\x20changesets.revision\x20>\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2d59d4['to']===void 0x0?'':'AND\x20changesets.revision\x20<=\x20?')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20units.worktree_id\x20=\x20?\x20AND\x20units.unit_id\x20=\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20changesets.revision\x20ASC')['all'](_0x2d59d4['from'],..._0x2d59d4['to']===void 0x0?[]:[_0x2d59d4['to']],_0x49b3ef,_0x3f610c);return _0x1d114f['length']===0x0?null:_0x1d114f['flatMap'](({payload_json:_0x548967})=>_0x548967?[F(_0x548967)]:[]);}async['getUnitSeed'](_0x43e352,_0x1e4cc0,_0x516235){return this['_assertOpen'](),this['_getUnitSeed'](_0x1e4cc0,_0x516235);}async['getUnitMergeArtifact'](_0x3812a9,_0x223792,_0x4401fc){return this['_assertOpen'](),this['_getUnitMergeArtifact'](_0x223792,_0x4401fc);}async['createWorktree'](_0x75a192,_0x35efef){return this['_assertOpen'](),x(_0x35efef),this['_transaction'](()=>{let _0x4900ad=this['_getAggregate'](_0x35efef['record']['worktreeID']);if(_0x4900ad)return{'status':'already-exists','aggregate':_0x4900ad};this['_database']['prepare']('INSERT\x20INTO\x20collaboration_worktrees\x20(worktree_id,\x20sid,\x20status)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(?,\x20?,\x20\x27draft\x27)')['run'](_0x35efef['record']['worktreeID'],_0x35efef['record']['sid']);let _0x339115=this['_database']['prepare']('INSERT\x20INTO\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(worktree_id,\x20unit_id,\x20unit_order,\x20type,\x20source,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20baseline_trunk_revision,\x20draft_head_revision,\x20creator_id,\x20created_at_ms)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20\x27trunk\x27,\x20?,\x20?,\x20?,\x20?)');return _0x35efef['units']['forEach']((_0x44e20a,_0x51df54)=>{_0x339115['run'](_0x44e20a['worktreeID'],_0x44e20a['unitID'],_0x51df54,_0x44e20a['type'],_0x44e20a['baselineTrunkRevision'],_0x44e20a['draftHeadRevision'],_0x44e20a['creatorID'],_0x44e20a['createdAt']);}),{'status':'created','aggregate':this['_requireAggregate'](_0x35efef['record']['worktreeID'])};});}async['addUnit'](_0x2e91d,_0x2aebf3){return this['_assertOpen'](),w(_0x2aebf3['unit']),this['_transaction'](()=>{let {unit:_0x56d525}=_0x2aebf3,_0x98e442=this['_getWorktreeRow'](_0x56d525['worktreeID']);if(!_0x98e442)return{'status':'not-found'};if(this['_getUnitRow'](_0x56d525['worktreeID'],_0x56d525['unitID']))return{'status':'already-exists','aggregate':this['_requireAggregate'](_0x56d525['worktreeID'])};if(_0x98e442['status']!=='draft')return{'status':'status-mismatch','aggregate':this['_requireAggregate'](_0x56d525['worktreeID'])};S(_0x56d525);let _0x36b6ee=this['_database']['prepare']('SELECT\x20COALESCE(MAX(unit_order),\x20-1)\x20+\x201\x20AS\x20next_order\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?')['get'](_0x56d525['worktreeID']);return this['_database']['prepare']('INSERT\x20INTO\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(worktree_id,\x20unit_id,\x20unit_order,\x20type,\x20source,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20baseline_trunk_revision,\x20draft_head_revision,\x20creator_id,\x20created_at_ms)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20\x27trunk\x27,\x20?,\x20?,\x20?,\x20?)')['run'](_0x56d525['worktreeID'],_0x56d525['unitID'],_0x36b6ee['next_order'],_0x56d525['type'],_0x56d525['baselineTrunkRevision'],_0x56d525['draftHeadRevision'],_0x56d525['creatorID'],_0x56d525['createdAt']),{'status':'added','aggregate':this['_requireAggregate'](_0x56d525['worktreeID'])};});}async['createUnit'](_0x3eab64,_0x2c50f9){return this['_assertOpen'](),C(_0x2c50f9['unit'],_0x2c50f9['seed']),this['_transaction'](()=>{let {unit:_0x121287,seed:_0x3a728b}=_0x2c50f9,_0x13e069=this['_getWorktreeRow'](_0x121287['worktreeID']);if(!_0x13e069)return{'status':'not-found'};let _0x154157=this['_getUnitRow'](_0x121287['worktreeID'],_0x121287['unitID']);if(_0x154157){let _0x487052=this['_getUnitSeed'](_0x121287['worktreeID'],_0x121287['unitID']);return{'status':_0x154157['source']==='worktree'&&_0x154157['type']===_0x121287['type']&&_0x487052!==null&&P(_0x487052)===P(_0x3a728b)?'already-created':'unit-exists','aggregate':this['_requireAggregate'](_0x121287['worktreeID'])};}if(_0x13e069['status']!=='draft')return{'status':'status-mismatch','aggregate':this['_requireAggregate'](_0x121287['worktreeID'])};let _0x10072a=this['_database']['prepare']('SELECT\x20COALESCE(MAX(unit_order),\x20-1)\x20+\x201\x20AS\x20next_order\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?')['get'](_0x121287['worktreeID']);return this['_database']['prepare']('INSERT\x20INTO\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(worktree_id,\x20unit_id,\x20unit_order,\x20type,\x20source,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20baseline_trunk_revision,\x20draft_head_revision,\x20creator_id,\x20created_at_ms)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20\x27worktree\x27,\x201,\x201,\x20?,\x20?)')['run'](_0x121287['worktreeID'],_0x121287['unitID'],_0x10072a['next_order'],_0x121287['type'],_0x121287['creatorID'],_0x121287['createdAt']),this['_database']['prepare']('INSERT\x20INTO\x20collaboration_worktree_unit_seeds\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(worktree_id,\x20unit_id,\x20snapshot_json,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sheet_blocks_json)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(?,\x20?,\x20?,\x20?)')['run'](_0x121287['worktreeID'],_0x121287['unitID'],P(_0x3a728b['snapshot']),_0x3a728b['sheetBlocks']===void 0x0?null:P(_0x3a728b['sheetBlocks'])),{'status':'created','aggregate':this['_requireAggregate'](_0x121287['worktreeID'])};});}async['saveUnitMergeArtifact'](_0x1c2d7f,_0x542cbc){return this['_assertOpen'](),this['_transaction'](()=>{let _0x2f154d=this['_getWorktreeRow'](_0x542cbc['worktreeID']),_0x13fa97=this['_getUnitRow'](_0x542cbc['worktreeID'],_0x542cbc['unitID']);if(!_0x2f154d||!_0x13fa97)return{'status':'not-found'};let _0xf099f7=y(_0x13fa97);if(_0x2f154d['status']!=='merging'||_0xf099f7['source']!=='worktree'||_0xf099f7['readyDraftHeadRevision']!==_0x542cbc['artifact']['readyDraftHeadRevision']||O(_0xf099f7))return{'status':'stale-merge'};let _0x1e56ea=this['_getUnitMergeArtifact'](_0x542cbc['worktreeID'],_0x542cbc['unitID']);return _0x1e56ea?{'status':'already-saved','artifact':_0x1e56ea}:(D(_0xf099f7,_0x542cbc['artifact']),this['_database']['prepare']('INSERT\x20INTO\x20collaboration_worktree_unit_merge_artifacts\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(worktree_id,\x20unit_id,\x20ready_draft_head_revision,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20snapshot_json,\x20sheet_blocks_json)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20?)')['run'](_0x542cbc['worktreeID'],_0x542cbc['unitID'],_0x542cbc['artifact']['readyDraftHeadRevision'],P(_0x542cbc['artifact']['unit']['snapshot']),_0x542cbc['artifact']['unit']['sheetBlocks']===void 0x0?null:P(_0x542cbc['artifact']['unit']['sheetBlocks'])),{'status':'saved','artifact':F(P(_0x542cbc['artifact']))});});}async['setUnitRemoved'](_0x48a6be,_0x2d30de){return this['_assertOpen'](),this['_transaction'](()=>{let _0x4d4e48=this['_getWorktreeRow'](_0x2d30de['worktreeID']),_0x4e3e96=this['_getUnitRow'](_0x2d30de['worktreeID'],_0x2d30de['unitID']);return!_0x4d4e48||!_0x4e3e96?{'status':'not-found'}:_0x4d4e48['status']!=='draft'||O(y(_0x4e3e96))?{'status':'not-editable','aggregate':this['_requireAggregate'](_0x2d30de['worktreeID'])}:_0x4e3e96['removed']===0x1===_0x2d30de['removed']?{'status':'unchanged','aggregate':this['_requireAggregate'](_0x2d30de['worktreeID'])}:(this['_database']['prepare']('UPDATE\x20collaboration_worktree_units\x20SET\x20removed\x20=\x20?\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?')['run'](+!!_0x2d30de['removed'],_0x2d30de['worktreeID'],_0x2d30de['unitID']),{'status':'updated','aggregate':this['_requireAggregate'](_0x2d30de['worktreeID'])});});}async['commitDraftChangeset'](_0x969456,_0x55f68f){return this['_assertOpen'](),this['_transaction'](()=>{let {worktreeID:_0x363b59,changeset:_0x54c4ad}=_0x55f68f,_0x44d865=this['_getWorktreeRow'](_0x363b59),_0x1e8b6c=this['_getUnitRow'](_0x363b59,_0x54c4ad['unitID']);if(!_0x44d865||!_0x1e8b6c)return{'status':'not-found'};if(_0x44d865['status']!=='draft')return{'status':'not-editable','worktreeStatus':A(_0x44d865['status'])};let _0x2d064f=y(_0x1e8b6c);if(_0x2d064f['removed']||O(_0x2d064f))return{'status':'unit-frozen'};if(_0x2d064f['draftHeadRevision']!==_0x54c4ad['revision']-0x1)return{'status':'revision-mismatch','actualHeadRevision':_0x2d064f['draftHeadRevision']};let _0x1f089b=Date['now'](),_0x4eb12c=P({..._0x54c4ad,'createTime':Math['floor'](_0x1f089b/0x3e8)});if(this['_database']['prepare']('INSERT\x20INTO\x20collaboration_worktree_changesets\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(worktree_id,\x20unit_id,\x20revision,\x20base_revision,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sid,\x20req_id,\x20created_at_ms,\x20payload_json)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?)')['run'](_0x363b59,_0x54c4ad['unitID'],_0x54c4ad['revision'],_0x54c4ad['baseRev'],_0x54c4ad['sid'],_0x54c4ad['reqId'],_0x1f089b,_0x4eb12c),this['_database']['prepare']('UPDATE\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SET\x20draft_head_revision\x20=\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20AND\x20draft_head_revision\x20=\x20?')['run'](_0x54c4ad['revision'],_0x363b59,_0x54c4ad['unitID'],_0x54c4ad['revision']-0x1)['changes']!==0x1)throw new u['CollabError']('INTERNAL_ERROR','SQLite\x20draft\x20head\x20changed\x20inside\x20a\x20write\x20transaction');return{'status':'committed','changeset':F(_0x4eb12c),'headRevision':_0x54c4ad['revision']};});}async['markReady'](_0xa1bdd,_0x4c7bcf){return this['_assertOpen'](),this['_transaction'](()=>{let _0x26f56b=this['_getWorktreeRow'](_0x4c7bcf);if(!_0x26f56b)return{'status':'not-found'};if(_0x26f56b['status']==='ready')return{'status':'already-in-target','aggregate':this['_requireAggregate'](_0x4c7bcf)};if(_0x26f56b['status']!=='draft')return{'status':'status-mismatch','aggregate':this['_requireAggregate'](_0x4c7bcf)};for(let _0x2c951b of this['_getUnitRows'](_0x4c7bcf))O(y(_0x2c951b))||(this['_database']['prepare']('UPDATE\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SET\x20ready_draft_head_revision\x20=\x20draft_head_revision\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?')['run'](_0x4c7bcf,_0x2c951b['unit_id']),this['_database']['prepare']('DELETE\x20FROM\x20collaboration_worktree_unit_merge_artifacts\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?')['run'](_0x4c7bcf,_0x2c951b['unit_id']));return this['_updateStatus'](_0x4c7bcf,'ready'),{'status':'transitioned','previousStatus':'draft','aggregate':this['_requireAggregate'](_0x4c7bcf)};});}async['reopenWorktree'](_0xb510b9,_0x260a14){return this['_assertOpen'](),this['_transaction'](()=>{let _0x1f4aaa=this['_getWorktreeRow'](_0x260a14);if(!_0x1f4aaa)return{'status':'not-found'};if(_0x1f4aaa['status']==='draft')return{'status':'already-in-target','aggregate':this['_requireAggregate'](_0x260a14)};if(_0x1f4aaa['status']!=='ready')return{'status':'status-mismatch','aggregate':this['_requireAggregate'](_0x260a14)};for(let _0x3d6dcc of this['_getUnitRows'](_0x260a14))O(y(_0x3d6dcc))||(this['_database']['prepare']('UPDATE\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SET\x20ready_draft_head_revision\x20=\x20NULL,\x20merge_result_json\x20=\x20NULL\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?')['run'](_0x260a14,_0x3d6dcc['unit_id']),this['_database']['prepare']('DELETE\x20FROM\x20collaboration_worktree_unit_merge_artifacts\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?')['run'](_0x260a14,_0x3d6dcc['unit_id']));return this['_updateStatus'](_0x260a14,'draft'),{'status':'transitioned','previousStatus':'ready','aggregate':this['_requireAggregate'](_0x260a14)};});}async['discardWorktree'](_0x9a6e24,_0x2426ef){return this['_assertOpen'](),this['_transaction'](()=>{let _0x18f2ef=this['_getWorktreeRow'](_0x2426ef);if(!_0x18f2ef)return{'status':'not-found'};if(_0x18f2ef['status']==='discarded')return{'status':'already-in-target','aggregate':this['_requireAggregate'](_0x2426ef)};if(_0x18f2ef['status']!=='draft'&&_0x18f2ef['status']!=='ready')return{'status':'status-mismatch','aggregate':this['_requireAggregate'](_0x2426ef)};let _0x490b67=A(_0x18f2ef['status']);return this['_updateStatus'](_0x2426ef,'discarded'),{'status':'transitioned','previousStatus':_0x490b67,'aggregate':this['_requireAggregate'](_0x2426ef)};});}async['startOrResumeMerge'](_0x507f31,_0x26dd1c){return this['_assertOpen'](),this['_transaction'](()=>{let _0x5cc755=this['_getWorktreeRow'](_0x26dd1c);return _0x5cc755?_0x5cc755['status']==='merged'?{'status':'already-merged','aggregate':this['_requireAggregate'](_0x26dd1c)}:_0x5cc755['status']==='merging'?{'status':'resumed','aggregate':this['_requireAggregate'](_0x26dd1c)}:_0x5cc755['status']==='ready'?(this['_updateStatus'](_0x26dd1c,'merging'),{'status':'started','aggregate':this['_requireAggregate'](_0x26dd1c)}):{'status':'status-mismatch','aggregate':this['_requireAggregate'](_0x26dd1c)}:{'status':'not-found'};});}async['recordUnitMergeResult'](_0x51cac6,_0xf6f87d){return this['_assertOpen'](),E(_0xf6f87d['mergeResult']),this['_transaction'](()=>{let _0x2cbc65=this['_getWorktreeRow'](_0xf6f87d['worktreeID']),_0x34d51c=this['_getUnitRow'](_0xf6f87d['worktreeID'],_0xf6f87d['unitID']);if(!_0x2cbc65||!_0x34d51c)return{'status':'not-found'};let _0xe5e97c=y(_0x34d51c);if(_0x2cbc65['status']!=='merging'||_0xe5e97c['readyDraftHeadRevision']!==_0xf6f87d['readyDraftHeadRevision'])return{'status':'stale-merge'};if(_0xf6f87d['mergeResult']['status']==='removed'&&!_0xe5e97c['removed']||_0xe5e97c['removed']&&(_0xf6f87d['mergeResult']['status']==='merged'||_0xf6f87d['mergeResult']['status']==='unchanged'))throw new u['CollabError']('INVALID_REQUEST','Merge\x20result\x20does\x20not\x20match\x20frozen\x20Unit\x20removal\x20intent');let _0x29fa6b=_0xe5e97c['mergeResult'];return _0x29fa6b&&(0x0,c['isDeepStrictEqual'])(_0x29fa6b,_0xf6f87d['mergeResult'])?{'status':'already-recorded','aggregate':this['_requireAggregate'](_0xf6f87d['worktreeID'])}:_0x29fa6b&&k(_0x29fa6b)?{'status':'stale-merge'}:(this['_database']['prepare']('UPDATE\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SET\x20merge_result_json\x20=\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?')['run'](P(_0xf6f87d['mergeResult']),_0xf6f87d['worktreeID'],_0xf6f87d['unitID']),{'status':'recorded','aggregate':this['_requireAggregate'](_0xf6f87d['worktreeID'])});});}async['finishMerge'](_0x11741f,_0x4fd29e){return this['_assertOpen'](),this['_transaction'](()=>{let _0x328eb5=this['_getWorktreeRow'](_0x4fd29e);if(!_0x328eb5)return{'status':'not-found'};if(_0x328eb5['status']==='merged')return{'status':'already-in-target','aggregate':this['_requireAggregate'](_0x4fd29e)};if(_0x328eb5['status']!=='merging')return{'status':'status-mismatch','aggregate':this['_requireAggregate'](_0x4fd29e)};let _0x100080=this['_getUnitRows'](_0x4fd29e)['every'](_0x677a8a=>O(y(_0x677a8a)));return this['_updateStatus'](_0x4fd29e,_0x100080?'merged':'ready'),{'status':'transitioned','previousStatus':'merging','aggregate':this['_requireAggregate'](_0x4fd29e)};});}async['dispose'](){this['_disposed']||(this['_disposed']=!0x0,this['_database']['close']());}['_initializeSchema'](){this['_transaction'](()=>{if(!this['_hasTable']('collaboration_schema_versions')){if(this['_hasAnyOwnedTable']())throw N('SQLite\x20Worktree\x20tables\x20exist\x20without\x20a\x20schema\x20version');this['_database']['exec']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20collaboration_schema_versions\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20component\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20version\x20INTEGER\x20NOT\x20NULL\x20CHECK\x20(version\x20>=\x201)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20');}let _0x2014ee=this['_database']['prepare']('SELECT\x20version\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_schema_versions\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20component\x20=\x20?')['get'](f);if(_0x2014ee){if(_0x2014ee['version']!==p)throw N('SQLite\x20Worktree\x20schema\x20version\x20'+_0x2014ee['version']+'\x20is\x20not\x20supported;\x20run\x20the\x20explicit\x20versioned\x20migrations\x20first');let _0x9e2983=m['filter'](_0x3bfc4e=>!this['_hasTable'](_0x3bfc4e));if(_0x9e2983['length']>0x0)throw N('SQLite\x20Worktree\x20schema\x20v'+_0x2014ee['version']+'\x20is\x20incomplete:\x20missing\x20'+_0x9e2983['join'](',\x20'));if(!this['_database']['prepare']('PRAGMA\x20table_info(collaboration_worktree_changesets)')['all']()['some'](_0x2f4a98=>_0x2f4a98['name']==='created_at_ms'&&_0x2f4a98['notnull']===0x1))throw N('Changeset\x20schema\x20requires\x20NOT\x20NULL\x20created_at_ms');let _0x46a341=this['_database']['prepare']('PRAGMA\x20table_info(collaboration_worktree_units)')['all']();if(!['removed','creator_id','created_at_ms']['every'](_0x4391cf=>_0x46a341['some'](_0x41d5b9=>_0x41d5b9['name']===_0x4391cf&&_0x41d5b9['notnull']===0x1)))throw N('SQLite\x20Worktree\x20schema\x20v3\x20is\x20missing\x20required\x20Unit\x20columns');return;}if(this['_hasAnyOwnedTable']())throw N('SQLite\x20Worktree\x20tables\x20exist\x20without\x20a\x20schema\x20version');this['_database']['exec']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20collaboration_worktrees\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20worktree_id\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sid\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status\x20TEXT\x20NOT\x20NULL\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20CHECK\x20(status\x20IN\x20(\x27draft\x27,\x20\x27ready\x27,\x20\x27merging\x27,\x20\x27merged\x27,\x20\x27discarded\x27))\x0a\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20collaboration_worktree_units\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20removed\x20INTEGER\x20NOT\x20NULL\x20DEFAULT\x200\x20CHECK\x20(removed\x20IN\x20(0,\x201)),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20worktree_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20unit_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20unit_order\x20INTEGER\x20NOT\x20NULL\x20CHECK\x20(unit_order\x20>=\x200),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type\x20INTEGER\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20source\x20TEXT\x20NOT\x20NULL\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20CHECK\x20(source\x20IN\x20(\x27trunk\x27,\x20\x27worktree\x27)),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20baseline_trunk_revision\x20INTEGER\x20NOT\x20NULL\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20CHECK\x20(baseline_trunk_revision\x20>=\x201),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20draft_head_revision\x20INTEGER\x20NOT\x20NULL\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20CHECK\x20(draft_head_revision\x20>=\x20baseline_trunk_revision),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ready_draft_head_revision\x20INTEGER,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20merge_result_json\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20creator_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20created_at_ms\x20INTEGER\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20PRIMARY\x20KEY\x20(worktree_id,\x20unit_id),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20UNIQUE\x20(worktree_id,\x20unit_order),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(worktree_id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20REFERENCES\x20collaboration_worktrees(worktree_id)\x20ON\x20DELETE\x20CASCADE\x0a\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20collaboration_worktree_changesets\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20worktree_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20unit_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20revision\x20INTEGER\x20NOT\x20NULL\x20CHECK\x20(revision\x20>=\x202),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20base_revision\x20INTEGER\x20NOT\x20NULL\x20CHECK\x20(base_revision\x20>=\x201),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sid\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20req_id\x20INTEGER\x20NOT\x20NULL\x20CHECK\x20(req_id\x20>=\x201),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20created_at_ms\x20INTEGER\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20payload_json\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20PRIMARY\x20KEY\x20(worktree_id,\x20unit_id,\x20revision),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20UNIQUE\x20(worktree_id,\x20unit_id,\x20sid,\x20req_id),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(worktree_id,\x20unit_id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20REFERENCES\x20collaboration_worktree_units(worktree_id,\x20unit_id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20DELETE\x20CASCADE\x0a\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20INDEX\x20collaboration_worktree_changesets_revision\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20collaboration_worktree_changesets(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20worktree_id,\x20unit_id,\x20revision\x20ASC\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20collaboration_worktree_unit_seeds\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20worktree_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20unit_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20snapshot_json\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sheet_blocks_json\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resources_json\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20PRIMARY\x20KEY\x20(worktree_id,\x20unit_id),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(worktree_id,\x20unit_id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20REFERENCES\x20collaboration_worktree_units(worktree_id,\x20unit_id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20DELETE\x20CASCADE\x0a\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20collaboration_worktree_unit_merge_artifacts\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20worktree_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20unit_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ready_draft_head_revision\x20INTEGER\x20NOT\x20NULL\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20CHECK\x20(ready_draft_head_revision\x20>=\x201),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20snapshot_json\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sheet_blocks_json\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resources_json\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20PRIMARY\x20KEY\x20(worktree_id,\x20unit_id),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(worktree_id,\x20unit_id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20REFERENCES\x20collaboration_worktree_units(worktree_id,\x20unit_id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20DELETE\x20CASCADE\x0a\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20collaboration_schema_versions\x20(component,\x20version)\x0a\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(\x27worktree\x27,\x20'+p+');\x0a\x20\x20\x20\x20\x20\x20');});}['_hasTable'](_0x3a8e50){return!!this['_database']['prepare']('SELECT\x201\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20sqlite_schema\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20type\x20=\x20\x27table\x27\x20AND\x20name\x20=\x20?')['get'](_0x3a8e50);}['_hasAnyOwnedTable'](){return m['some'](_0x256e1d=>this['_hasTable'](_0x256e1d));}['_getWorktreeRow'](_0x204cca){return this['_database']['prepare']('SELECT\x20worktree_id,\x20sid,\x20status\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_worktrees\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?')['get'](_0x204cca)??null;}['_getUnitRow'](_0xca03ee,_0x3b26cc){return this['_database']['prepare']('SELECT\x20worktree_id,\x20unit_id,\x20type,\x20source,\x20baseline_trunk_revision,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20draft_head_revision,\x20ready_draft_head_revision,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20creator_id,\x20created_at_ms,\x20removed,\x20merge_result_json\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?')['get'](_0xca03ee,_0x3b26cc)??null;}['_getUnitRows'](_0x1bdc42){return this['_database']['prepare']('SELECT\x20worktree_id,\x20unit_id,\x20type,\x20source,\x20baseline_trunk_revision,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20draft_head_revision,\x20ready_draft_head_revision,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20creator_id,\x20created_at_ms,\x20removed,\x20merge_result_json\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_worktree_units\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20unit_order\x20ASC')['all'](_0x1bdc42);}['_getUnitSeed'](_0x3923ae,_0x5ae831){let _0x520e7e=this['_database']['prepare']('SELECT\x20snapshot_json,\x20sheet_blocks_json\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_worktree_unit_seeds\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?')['get'](_0x3923ae,_0x5ae831);return _0x520e7e?{'snapshot':F(_0x520e7e['snapshot_json']),..._0x520e7e['sheet_blocks_json']===null?{}:{'sheetBlocks':F(_0x520e7e['sheet_blocks_json'])}}:null;}['_getUnitMergeArtifact'](_0x19a186,_0x47ca71){let _0x215c6f=this['_database']['prepare']('SELECT\x20ready_draft_head_revision,\x20snapshot_json,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sheet_blocks_json\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_worktree_unit_merge_artifacts\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20worktree_id\x20=\x20?\x20AND\x20unit_id\x20=\x20?')['get'](_0x19a186,_0x47ca71);return _0x215c6f?{'readyDraftHeadRevision':_0x215c6f['ready_draft_head_revision'],'unit':{'snapshot':F(_0x215c6f['snapshot_json']),..._0x215c6f['sheet_blocks_json']===null?{}:{'sheetBlocks':F(_0x215c6f['sheet_blocks_json'])}}}:null;}['_getAggregate'](_0x511bf6){let _0x178512=this['_getWorktreeRow'](_0x511bf6);return _0x178512?{'worktree':{'worktreeID':_0x178512['worktree_id'],'sid':_0x178512['sid'],'status':A(_0x178512['status'])},'units':this['_getUnitRows'](_0x511bf6)['map'](y)}:null;}['_requireAggregate'](_0x5b42ff){let _0x5ccb44=this['_getAggregate'](_0x5b42ff);if(!_0x5ccb44)throw new u['CollabError']('INTERNAL_ERROR','SQLite\x20Worktree\x20disappeared\x20inside\x20a\x20write\x20transaction');return _0x5ccb44;}['_updateStatus'](_0x4bfb00,_0x346fc8){if(this['_database']['prepare']('UPDATE\x20collaboration_worktrees\x20SET\x20status\x20=\x20?\x20WHERE\x20worktree_id\x20=\x20?')['run'](_0x346fc8,_0x4bfb00)['changes']!==0x1)throw new u['CollabError']('INTERNAL_ERROR','SQLite\x20Worktree\x20status\x20update\x20did\x20not\x20affect\x20one\x20record');}['_transaction'](_0x19e5f2){this['_database']['exec']('BEGIN\x20IMMEDIATE;');try{let _0x1b2f65=_0x19e5f2();return this['_database']['exec']('COMMIT;'),_0x1b2f65;}catch(_0x48841f){throw this['_database']['inTransaction']&&this['_database']['exec']('ROLLBACK;'),_0x48841f;}}['_assertOpen'](){if(this['_disposed'])throw new u['CollabError']('INTERNAL_ERROR','SQLite\x20Worktree\x20Database\x20Adapter\x20is\x20disposed');}};function y(_0x51f286){let _0x43eec2=j(_0x51f286['source']);return{'worktreeID':_0x51f286['worktree_id'],'unitID':_0x51f286['unit_id'],'type':_0x51f286['type'],'source':_0x43eec2,..._0x43eec2==='trunk'?{'baselineTrunkRevision':_0x51f286['baseline_trunk_revision']}:{},'draftHeadRevision':_0x51f286['draft_head_revision'],..._0x51f286['ready_draft_head_revision']===null?{}:{'readyDraftHeadRevision':_0x51f286['ready_draft_head_revision']},'creatorID':_0x51f286['creator_id'],'createdAt':_0x51f286['created_at_ms'],..._0x51f286['removed']===0x1?{'removed':!0x0}:{},..._0x51f286['merge_result_json']===null?{}:{'mergeResult':F(_0x51f286['merge_result_json'])}};}function b(_0x3982f9){if(!_0x3982f9['filename'])throw M('SQLite\x20filename\x20is\x20required');if(_0x3982f9['busyTimeoutMs']!==void 0x0&&(!Number['isSafeInteger'](_0x3982f9['busyTimeoutMs'])||_0x3982f9['busyTimeoutMs']<0x0))throw M('SQLite\x20busyTimeoutMs\x20must\x20be\x20a\x20non-negative\x20integer');}function x(_0x54df6f){if(!_0x54df6f['record']['worktreeID']||!_0x54df6f['record']['sid']||_0x54df6f['record']['status']!=='draft')throw M('New\x20Worktree\x20must\x20be\x20a\x20draft\x20with\x20identity');let _0x25122a=new Set();for(let _0x598ec6 of _0x54df6f['units']){if(_0x598ec6['worktreeID']!==_0x54df6f['record']['worktreeID']||_0x25122a['has'](_0x598ec6['unitID']))throw M('Initial\x20Worktree\x20Units\x20must\x20be\x20unique\x20and\x20share\x20identity');_0x25122a['add'](_0x598ec6['unitID']),S(_0x598ec6);}}function S(_0x5a3ded){if(w(_0x5a3ded),_0x5a3ded['source']!=='trunk'||!_['has'](_0x5a3ded['type'])||!Number['isSafeInteger'](_0x5a3ded['baselineTrunkRevision'])||_0x5a3ded['baselineTrunkRevision']<0x1||_0x5a3ded['draftHeadRevision']!==_0x5a3ded['baselineTrunkRevision']||_0x5a3ded['readyDraftHeadRevision']!==void 0x0||_0x5a3ded['mergeResult']!==void 0x0)throw M('New\x20Worktree\x20Unit\x20must\x20start\x20at\x20its\x20trunk\x20baseline');}function C(_0x4d3441,_0x57618b){if(w(_0x4d3441),_0x4d3441['source']!=='worktree'||_0x4d3441['baselineTrunkRevision']!==void 0x0||!_['has'](_0x4d3441['type'])||_0x4d3441['draftHeadRevision']!==0x1||_0x4d3441['readyDraftHeadRevision']!==void 0x0||_0x4d3441['mergeResult']!==void 0x0||_0x57618b['snapshot']['unitID']!==_0x4d3441['unitID']||_0x57618b['snapshot']['type']!==_0x4d3441['type']||_0x57618b['snapshot']['rev']!==0x1)throw M('Worktree-created\x20Unit\x20must\x20start\x20from\x20its\x20revision\x201\x20seed');}function w(_0x4b0ab0){if(typeof _0x4b0ab0['creatorID']!='string'||_0x4b0ab0['creatorID']['length']===0x0||!Number['isSafeInteger'](_0x4b0ab0['createdAt'])||_0x4b0ab0['createdAt']<0x0)throw M('Unit\x20creation\x20requires\x20creatorID\x20and\x20createdAt\x20in\x20Unix\x20milliseconds');if(!_0x4b0ab0['worktreeID']||!_0x4b0ab0['unitID'])throw M('Worktree\x20and\x20Unit\x20identity\x20are\x20required');}function T(_0x23fb22){if(!Number['isSafeInteger'](_0x23fb22['from'])||_0x23fb22['from']<0x0||_0x23fb22['to']!==void 0x0&&(!Number['isSafeInteger'](_0x23fb22['to'])||_0x23fb22['to']<0x0))throw M('Draft\x20revision\x20range\x20cannot\x20be\x20negative');}function E(_0x2091cb){if(_0x2091cb['status']==='merged'){if(!Number['isSafeInteger'](_0x2091cb['trunkRevision'])||_0x2091cb['trunkRevision']<0x1)throw M('Merged\x20result\x20requires\x20a\x20trunk\x20revision');return;}if(!(_0x2091cb['status']==='unchanged'||_0x2091cb['status']==='removed')&&(!_0x2091cb['error']['code']||!_0x2091cb['error']['message']||typeof _0x2091cb['error']['retryable']!='boolean'))throw M('Merge\x20error\x20must\x20be\x20stable\x20and\x20serializable');}function D(_0x16a24d,_0x153e44){if(_0x153e44['unit']['snapshot']['unitID']!==_0x16a24d['unitID']||_0x153e44['unit']['snapshot']['type']!==_0x16a24d['type']||_0x153e44['unit']['snapshot']['rev']!==0x1)throw M('Worktree\x20Unit\x20merge\x20artifact\x20must\x20be\x20a\x20revision\x201\x20snapshot');}function O(_0x317043){return k(_0x317043['mergeResult']);}function k(_0x11924c){return _0x11924c?.['status']==='merged'||_0x11924c?.['status']==='unchanged'||_0x11924c?.['status']==='removed';}function A(_0x34641f){if(_0x34641f==='draft'||_0x34641f==='ready'||_0x34641f==='merging'||_0x34641f==='merged'||_0x34641f==='discarded')return _0x34641f;throw new u['CollabError']('INTERNAL_ERROR','SQLite\x20contains\x20invalid\x20Worktree\x20status\x20'+_0x34641f);}function j(_0x45a831){if(_0x45a831==='trunk'||_0x45a831==='worktree')return _0x45a831;throw new u['CollabError']('INTERNAL_ERROR','SQLite\x20contains\x20invalid\x20Worktree\x20Unit\x20source\x20'+_0x45a831);}function M(_0x4ae2da){return new u['CollabError']('INVALID_REQUEST',_0x4ae2da);}function N(_0x13dd86){return new u['CollabError']('INTERNAL_ERROR',_0x13dd86);}function P(_0x4945f3){return JSON['stringify'](_0x4945f3,function(_0x41b6e8,_0x2c9f7e){let _0x425ddc=this[_0x41b6e8];return _0x425ddc instanceof Uint8Array?{[g]:Buffer['from'](_0x425ddc)['toString']('base64')}:_0x2c9f7e;});}function F(_0x31e62e){return JSON['parse'](_0x31e62e,(_0x117938,_0x1e7a5a)=>I(_0x1e7a5a)?Uint8Array['from'](Buffer['from'](_0x1e7a5a[g],'base64')):_0x1e7a5a);}function I(_0x22bbe2){return typeof _0x22bbe2=='object'&&!!_0x22bbe2&&Object['keys'](_0x22bbe2)['length']===0x1&&typeof _0x22bbe2[g]=='string';}function L(_0x302862){let _0x5dcd1d=new l['default'](_0x302862['filename'],{'fileMustExist':!0x0}),_0x281a27=!0x1;try{if(_0x5dcd1d['exec']('BEGIN\x20IMMEDIATE;'),_0x281a27=!0x0,_0x5dcd1d['prepare']('SELECT\x20version\x20FROM\x20collaboration_schema_versions\x20WHERE\x20component\x20=\x20\x27worktree\x27')['get']()?.['version']!==0x1)throw new u['CollabError']('INVALID_REQUEST','Worktree\x20v1-to-v2\x20migration\x20requires\x20schema\x20version\x201');_0x5dcd1d['exec']('\x0a\x20\x20\x20\x20\x20\x20ALTER\x20TABLE\x20collaboration_worktree_units\x20ADD\x20COLUMN\x20removed\x20INTEGER\x20NOT\x20NULL\x20DEFAULT\x200\x20CHECK\x20(removed\x20IN\x20(0,\x201));\x0a\x20\x20\x20\x20\x20\x20UPDATE\x20collaboration_schema_versions\x20SET\x20version\x20=\x202\x20WHERE\x20component\x20=\x20\x27worktree\x27;\x0a\x20\x20\x20\x20\x20\x20COMMIT;\x0a\x20\x20\x20\x20'),_0x281a27=!0x1;}finally{try{_0x281a27&&_0x5dcd1d['exec']('ROLLBACK;');}finally{_0x5dcd1d['close']();}}}async function R(_0x32e6a6){let _0x3a699c=Date['now'](),_0x2b5ebc=new l['default'](_0x32e6a6['filename'],{'fileMustExist':!0x0}),_0x250c21=!0x1;try{if(_0x2b5ebc['exec']('PRAGMA\x20foreign_keys\x20=\x20OFF;\x20PRAGMA\x20legacy_alter_table\x20=\x20ON;\x20BEGIN\x20IMMEDIATE;'),_0x250c21=!0x0,_0x2b5ebc['prepare']('SELECT\x20version\x20FROM\x20collaboration_schema_versions\x20WHERE\x20component\x20=\x20\x27worktree\x27')['get']()?.['version']!==0x2)throw new u['CollabError']('INVALID_REQUEST','Worktree\x20v2-to-v3\x20migration\x20requires\x20schema\x20version\x202');for(let _0x1575d2 of['collaboration_worktrees','collaboration_worktree_changesets','collaboration_worktree_unit_seeds','collaboration_worktree_unit_merge_artifacts'])_0x2b5ebc['prepare']('SELECT\x201\x20FROM\x20'+_0x1575d2+'\x20LIMIT\x200')['all']();let _0x24d33c=_0x2b5ebc['prepare']('SELECT\x201\x20FROM\x20sqlite_schema\x20WHERE\x20type\x20=\x20\x27table\x27\x20AND\x20name\x20=\x20\x27collaboration_history_revisions\x27')['get']()?_0x2b5ebc['prepare']('SELECT\x20user_id,\x20committed_at\x20FROM\x20collaboration_history_revisions\x20WHERE\x20unit_id\x20=\x20?\x20AND\x20revision\x20=\x20?'):void 0x0,_0x42a0fa=(_0x42351d,_0x585ee0)=>_0x24d33c?.['get'](_0x42351d,_0x585ee0),_0x334819=_0x2b5ebc['prepare']('PRAGMA\x20table_info(collaboration_worktree_units)')['all']();if(!_0x334819['some'](_0xbf3105=>_0xbf3105['name']==='removed')||_0x334819['some'](_0x53e827=>['creator_id','created_at_ms']['includes'](_0x53e827['name'])))throw new u['CollabError']('INVALID_REQUEST','Unexpected\x20Worktree\x20v2\x20Unit\x20schema');let _0x26cf78=_0x2b5ebc['prepare']('SELECT\x20sql\x20FROM\x20sqlite_schema\x20WHERE\x20type\x20=\x20\x27table\x27\x20AND\x20name\x20=\x20\x27collaboration_worktree_units\x27')['get'](),_0x1f2fe2=_0x2b5ebc['prepare']('SELECT\x20sql\x20FROM\x20sqlite_schema\x20WHERE\x20tbl_name\x20=\x20\x27collaboration_worktree_units\x27\x20AND\x20type\x20IN\x20(\x27index\x27,\x20\x27trigger\x27)\x20AND\x20sql\x20IS\x20NOT\x20NULL')['all']();_0x2b5ebc['exec']('CREATE\x20TABLE\x20collaboration_worktree_units_v3\x20(\x0a\x20\x20\x20\x20\x20\x20creator_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20created_at_ms\x20INTEGER\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20'+_0x26cf78['sql']['slice'](_0x26cf78['sql']['indexOf']('(')+0x1));let _0x4fc259=_0x2b5ebc['prepare']('SELECT\x20*\x20FROM\x20collaboration_worktree_units\x20ORDER\x20BY\x20worktree_id,\x20unit_id')['all'](),_0x2acbce=_0x334819['map'](_0x932aa=>'\x22'+_0x932aa['name']['replaceAll']('\x22','\x22\x22')+'\x22')['join'](',\x20'),_0x44a05a=_0x2b5ebc['prepare']('INSERT\x20INTO\x20collaboration_worktree_units_v3\x20('+_0x2acbce+',\x20creator_id,\x20created_at_ms)\x20VALUES\x20('+_0x334819['map'](()=>'?')['join'](',\x20')+',\x20?,\x20?)');for(let _0x5006fc of _0x4fc259){let _0x52df41=!_0x32e6a6['resolveUnitCreation']&&_0x5006fc['source']==='trunk'?_0x42a0fa(_0x5006fc['unit_id'],0x1):void 0x0,_0x5e447a=_0x32e6a6['resolveUnitCreation']?await _0x32e6a6['resolveUnitCreation'](_0x5006fc['worktree_id'],_0x5006fc['unit_id']):{'creatorID':_0x52df41?.['user_id']||'anonymous','createdAt':z(_0x52df41?.['committed_at'])?_0x52df41['committed_at']:_0x3a699c};if(!_0x5e447a||typeof _0x5e447a['creatorID']!='string'||_0x5e447a['creatorID']['length']===0x0||!Number['isSafeInteger'](_0x5e447a['createdAt'])||_0x5e447a['createdAt']<0x0)throw new u['CollabError']('INVALID_REQUEST','Missing\x20or\x20invalid\x20creation\x20facts\x20for\x20Worktree\x20'+_0x5006fc['worktree_id']+'\x20Unit\x20'+_0x5006fc['unit_id']);_0x44a05a['run'](..._0x334819['map'](_0x1ec062=>_0x5006fc[_0x1ec062['name']]),_0x5e447a['creatorID'],_0x5e447a['createdAt']);}_0x2b5ebc['exec']('DROP\x20TABLE\x20collaboration_worktree_units;\x20ALTER\x20TABLE\x20collaboration_worktree_units_v3\x20RENAME\x20TO\x20collaboration_worktree_units;');for(let _0x596962 of _0x1f2fe2)_0x2b5ebc['exec'](_0x596962['sql']);let _0x92c351=_0x2b5ebc['prepare']('SELECT\x20sql\x20FROM\x20sqlite_schema\x20WHERE\x20type\x20=\x20\x27table\x27\x20AND\x20name\x20=\x20\x27collaboration_worktree_changesets\x27')['get'](),_0xbeb491=_0x2b5ebc['prepare']('PRAGMA\x20table_info(collaboration_worktree_changesets)')['all']();if(_0xbeb491['some'](_0x54adf9=>_0x54adf9['name']==='created_at_ms'))throw new u['CollabError']('INVALID_REQUEST','Unexpected\x20changeset\x20creation-time\x20column\x20in\x20legacy\x20schema');let _0x91b7fc=_0x2b5ebc['prepare']('SELECT\x20sql\x20FROM\x20sqlite_schema\x20WHERE\x20tbl_name\x20=\x20\x27collaboration_worktree_changesets\x27\x20AND\x20type\x20IN\x20(\x27index\x27,\x20\x27trigger\x27)\x20AND\x20sql\x20IS\x20NOT\x20NULL')['all']();_0x2b5ebc['exec']('CREATE\x20TABLE\x20collaboration_worktree_changesets_new\x20(\x0a\x20\x20\x20\x20\x20\x20created_at_ms\x20INTEGER\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20'+_0x92c351['sql']['slice'](_0x92c351['sql']['indexOf']('(')+0x1));let _0x5a3934=_0x2b5ebc['prepare']('SELECT\x20*\x20FROM\x20collaboration_worktree_changesets\x20ORDER\x20BY\x20worktree_id,\x20unit_id,\x20revision')['all'](),_0xacc573=_0xbeb491['map'](_0xee6b9c=>'\x22'+_0xee6b9c['name']['replaceAll']('\x22','\x22\x22')+'\x22')['join'](',\x20'),_0x3deedb=_0x2b5ebc['prepare']('INSERT\x20INTO\x20collaboration_worktree_changesets_new\x20('+_0xacc573+',\x20created_at_ms)\x20VALUES\x20('+_0xbeb491['map'](()=>'?')['join'](',\x20')+',\x20?)');for(let _0x1e5527 of _0x5a3934){let _0x408270=JSON['parse'](_0x1e5527['payload_json']),_0x31c235=typeof _0x408270['createTime']=='number'?_0x408270['createTime']*0x3e8:void 0x0,_0x3eaa65=_0x32e6a6['resolveChangesetCreatedAt']?await _0x32e6a6['resolveChangesetCreatedAt'](_0x1e5527['worktree_id'],_0x1e5527['unit_id'],_0x1e5527['revision']):z(_0x31c235)?_0x31c235:_0x3a699c;if(!Number['isSafeInteger'](_0x3eaa65)||_0x3eaa65<0x0)throw new u['CollabError']('INVALID_REQUEST','Missing\x20or\x20invalid\x20changeset\x20time\x20for\x20Unit\x20'+_0x1e5527['unit_id']+'\x20revision\x20'+_0x1e5527['revision']);_0x408270['createTime']=Math['floor'](_0x3eaa65/0x3e8),_0x3deedb['run'](..._0xbeb491['map'](_0x30d08a=>_0x30d08a['name']==='payload_json'?JSON['stringify'](_0x408270):_0x1e5527[_0x30d08a['name']]),_0x3eaa65);}_0x2b5ebc['exec']('DROP\x20TABLE\x20collaboration_worktree_changesets;\x20ALTER\x20TABLE\x20collaboration_worktree_changesets_new\x20RENAME\x20TO\x20collaboration_worktree_changesets;');for(let _0x383ef0 of _0x91b7fc)_0x2b5ebc['exec'](_0x383ef0['sql']);if(_0x2b5ebc['prepare']('PRAGMA\x20foreign_key_check')['all']()['length'])throw new u['CollabError']('INVALID_REQUEST','Foreign\x20key\x20validation\x20failed\x20during\x20Worktree\x20migration');_0x2b5ebc['exec']('UPDATE\x20collaboration_schema_versions\x20SET\x20version\x20=\x203\x20WHERE\x20component\x20=\x20\x27worktree\x27;\x20COMMIT;'),_0x250c21=!0x1;}finally{try{_0x250c21&&_0x2b5ebc['exec']('ROLLBACK;');}finally{_0x2b5ebc['close']();}}}function z(_0x413c11){return typeof _0x413c11=='number'&&Number['isSafeInteger'](_0x413c11)&&_0x413c11>=0x0;}exports['SQLiteWorktreeDatabaseAdapter']=v,exports['migrateSQLiteWorktreeV1ToV2']=L,exports['migrateSQLiteWorktreeV2ToV3']=R;
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, UnitRecord } 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/sqlite-worktree-database-adapter.d.ts
@@ -13,14 +13,14 @@ declare class SQLiteWorktreeDatabaseAdapter implements IWorktreeDatabaseAdapter
13
13
  constructor(options: SQLiteWorktreeDatabaseAdapterOptions);
14
14
  getWorktree(_context: DatabaseContext, worktreeID: string): Promise<WorktreeAggregateRecord | null>;
15
15
  getWorktreeUnit(_context: DatabaseContext, worktreeID: string, unitID: string): Promise<WorktreeUnitRecord | null>;
16
- getDraftChangesets(_context: DatabaseContext, worktreeID: string, unitID: string, range: WorktreeRevisionRange): Promise<ChangesetRange>;
17
- getDraftSubmission(_context: DatabaseContext, worktreeID: string, unitID: string, sid: string, reqId: number): Promise<IChangeset | null>;
16
+ getDraftChangesets(_context: DatabaseContext, worktreeID: string, unitID: string, range: WorktreeRevisionRange): Promise<readonly IChangeset[] | null>;
18
17
  getUnitSeed(_context: DatabaseContext, worktreeID: string, unitID: string): Promise<WorktreeUnitSeed | null>;
19
18
  getUnitMergeArtifact(_context: DatabaseContext, worktreeID: string, unitID: string): Promise<WorktreeUnitMergeArtifact | null>;
20
19
  createWorktree(_context: DatabaseContext, input: CreateWorktreeDatabaseInput): Promise<CreateWorktreeDatabaseResult>;
21
20
  addUnit(_context: DatabaseContext, input: AddWorktreeUnitDatabaseInput): Promise<AddWorktreeUnitDatabaseResult>;
22
21
  createUnit(_context: DatabaseContext, input: CreateWorktreeUnitDatabaseInput): Promise<CreateWorktreeUnitDatabaseResult>;
23
22
  saveUnitMergeArtifact(_context: DatabaseContext, input: SaveWorktreeUnitMergeArtifactInput): Promise<SaveWorktreeUnitMergeArtifactResult>;
23
+ setUnitRemoved(_context: DatabaseContext, input: SetWorktreeUnitRemovedDatabaseInput): Promise<SetWorktreeUnitRemovedResult>;
24
24
  commitDraftChangeset(_context: DatabaseContext, input: CommitWorktreeChangesetInput): Promise<CommitWorktreeChangesetResult>;
25
25
  markReady(_context: DatabaseContext, worktreeID: string): Promise<WorktreeTransitionResult>;
26
26
  reopenWorktree(_context: DatabaseContext, worktreeID: string): Promise<WorktreeTransitionResult>;
@@ -44,4 +44,17 @@ declare class SQLiteWorktreeDatabaseAdapter implements IWorktreeDatabaseAdapter
44
44
  private _assertOpen;
45
45
  }
46
46
  //#endregion
47
- export { SQLiteWorktreeDatabaseAdapter, type SQLiteWorktreeDatabaseAdapterOptions };
47
+ //#region src/migrations/v1-to-v2.d.ts
48
+ declare function migrateSQLiteWorktreeV1ToV2(options: {
49
+ readonly filename: string;
50
+ }): void;
51
+ //#endregion
52
+ //#region src/migrations/v2-to-v3.d.ts
53
+ interface SQLiteWorktreeV2ToV3MigrationOptions {
54
+ readonly filename: string;
55
+ readonly resolveUnitCreation?: (worktreeID: string, unitID: string) => Pick<UnitRecord, "creatorID" | "createdAt"> | Promise<Pick<UnitRecord, "creatorID" | "createdAt">>;
56
+ readonly resolveChangesetCreatedAt?: (worktreeID: string, unitID: string, revision: number) => number | Promise<number>;
57
+ }
58
+ declare function migrateSQLiteWorktreeV2ToV3(options: SQLiteWorktreeV2ToV3MigrationOptions): Promise<void>;
59
+ //#endregion
60
+ export { SQLiteWorktreeDatabaseAdapter, type SQLiteWorktreeDatabaseAdapterOptions, type SQLiteWorktreeV2ToV3MigrationOptions, migrateSQLiteWorktreeV1ToV2, migrateSQLiteWorktreeV2ToV3 };
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- function _0x1255(_0x13355e,_0x16ac9b){_0x13355e=_0x13355e-0x15c;const _0x258f47=_0x258f();let _0x1255e5=_0x258f47[_0x13355e];return _0x1255e5;}function _0x258f(){const _0x2dbfab=['3932260rrOrcB','957268xXojhH','9564sCLZYI','21WTDHZw','SQLiteWorktreeDatabaseAdapter','654962fiDXpw','627184HzlEgG','252538INzVaU','2UnrjHt','570678pGKPQm','5JFrXxf','9YLNeht'];_0x258f=function(){return _0x2dbfab;};return _0x258f();}const _0x1c118e=_0x1255;(function(_0x4b4a88,_0x14906c){const _0xacd713=_0x1255,_0x4fa707=_0x4b4a88();while(!![]){try{const _0x3922ef=parseInt(_0xacd713(0x161))/0x1+-parseInt(_0xacd713(0x162))/0x2*(-parseInt(_0xacd713(0x15c))/0x3)+-parseInt(_0xacd713(0x167))/0x4+-parseInt(_0xacd713(0x164))/0x5*(-parseInt(_0xacd713(0x163))/0x6)+parseInt(_0xacd713(0x15d))/0x7*(-parseInt(_0xacd713(0x160))/0x8)+-parseInt(_0xacd713(0x165))/0x9*(-parseInt(_0xacd713(0x166))/0xa)+-parseInt(_0xacd713(0x15f))/0xb;if(_0x3922ef===_0x14906c)break;else _0x4fa707['push'](_0x4fa707['shift']());}catch(_0x5aee34){_0x4fa707['push'](_0x4fa707['shift']());}}}(_0x258f,0x3345c));import _0x1c4f6a from'./index.cjs';const facadeExport0=_0x1c4f6a[_0x1c118e(0x15e)];export{facadeExport0 as SQLiteWorktreeDatabaseAdapter};
1
+ const _0x3a8ab6=_0x5255;function _0x41ca(){const _0x1d59a5=['36094949XrKXyJ','576637lmgkoq','9gxhGOM','3333210aUWuMD','748626QGlXXg','migrateSQLiteWorktreeV1ToV2','2xfQYtB','4696120UaUcGJ','136tGwzZq','SQLiteWorktreeDatabaseAdapter','migrateSQLiteWorktreeV2ToV3','19335iKMqci','7siIHfp','10002750vewvOI'];_0x41ca=function(){return _0x1d59a5;};return _0x41ca();}(function(_0xee0710,_0x13ce64){const _0x3ff978=_0x5255,_0x390c21=_0xee0710();while(!![]){try{const _0x3d29fe=parseInt(_0x3ff978(0x19e))/0x1*(-parseInt(_0x3ff978(0x195))/0x2)+parseInt(_0x3ff978(0x19a))/0x3*(parseInt(_0x3ff978(0x197))/0x4)+-parseInt(_0x3ff978(0x192))/0x5+parseInt(_0x3ff978(0x193))/0x6*(-parseInt(_0x3ff978(0x19b))/0x7)+-parseInt(_0x3ff978(0x196))/0x8+-parseInt(_0x3ff978(0x19f))/0x9*(parseInt(_0x3ff978(0x19c))/0xa)+parseInt(_0x3ff978(0x19d))/0xb;if(_0x3d29fe===_0x13ce64)break;else _0x390c21['push'](_0x390c21['shift']());}catch(_0x45b20b){_0x390c21['push'](_0x390c21['shift']());}}}(_0x41ca,0x8517d));import _0x12fa3a from'./index.cjs';const facadeExport0=_0x12fa3a[_0x3a8ab6(0x198)],facadeExport1=_0x12fa3a[_0x3a8ab6(0x194)],facadeExport2=_0x12fa3a[_0x3a8ab6(0x199)];function _0x5255(_0x96310e,_0x350b3d){_0x96310e=_0x96310e-0x192;const _0x41cada=_0x41ca();let _0x5255e8=_0x41cada[_0x96310e];return _0x5255e8;}export{facadeExport0 as SQLiteWorktreeDatabaseAdapter,facadeExport1 as migrateSQLiteWorktreeV1ToV2,facadeExport2 as migrateSQLiteWorktreeV2ToV3};
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "engines": {
5
5
  "node": ">=22"
6
6
  },
7
- "version": "1.0.0-insiders.20260808-70eefdd",
7
+ "version": "1.0.0",
8
8
  "main": "./dist/index.cjs",
9
9
  "module": "./dist/index.mjs",
10
10
  "types": "./dist/index.d.ts",
@@ -19,12 +19,9 @@
19
19
  "dist"
20
20
  ],
21
21
  "dependencies": {
22
- "@univerjs-pro/collaboration-service": "1.0.0-insiders.20260808-70eefdd",
23
- "@univerjs-pro/collaboration-worktree-service": "1.0.0-insiders.20260808-70eefdd",
24
- "@univerjs/protocol": "1.0.0-insiders.20260808-70eefdd",
22
+ "@univerjs-pro/collaboration-service": "1.0.0",
23
+ "@univerjs-pro/collaboration-worktree-service": "1.0.0",
24
+ "@univerjs/protocol": "1.0.0",
25
25
  "libsql": "^0.5.29"
26
- },
27
- "publishConfig": {
28
- "access": "public"
29
26
  }
30
- }
27
+ }