@univerjs-pro/collaboration-history-database-sqlite 1.0.0-beta.2
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 +39 -0
- package/README.zh-CN.md +44 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.mjs +1 -0
- package/package.json +26 -0
package/README.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# @univerjs-pro/collaboration-history-database-sqlite
|
|
2
|
+
|
|
3
|
+
English | [简体中文](./README.zh-CN.md)
|
|
4
|
+
|
|
5
|
+
A persistent SQLite `IHistoryDatabaseAdapter` for `@univerjs-pro/collaboration-history-service`. It uses the stable synchronous `libsql` API, supports Node.js 22 and later, and can share a database file with the core, Comment, and Worktree SQLite Adapters.
|
|
6
|
+
|
|
7
|
+
## Installation and usage
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pnpm add \
|
|
11
|
+
@univerjs-pro/collaboration-history-service \
|
|
12
|
+
@univerjs-pro/collaboration-history-database-sqlite
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
const historyDatabase = new SQLiteHistoryDatabaseAdapter({
|
|
17
|
+
filename: './data/collaboration.sqlite',
|
|
18
|
+
busyTimeoutMs: 5_000,
|
|
19
|
+
});
|
|
20
|
+
const historyService = new UniverHistoryService({
|
|
21
|
+
collabService,
|
|
22
|
+
dbAdapter: historyDatabase,
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
historyService.attach(collabService);
|
|
26
|
+
|
|
27
|
+
await historyService.dispose();
|
|
28
|
+
await historyDatabase.dispose();
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The caller must create the database parent directory in advance and dispose the Adapter after stopping the Service.
|
|
32
|
+
|
|
33
|
+
## Storage contract
|
|
34
|
+
|
|
35
|
+
- History data uses `collaboration_history_revisions`.
|
|
36
|
+
- Schema version `('history', 1)` is stored in shared `collaboration_schema_versions`; `PRAGMA user_version` is not used.
|
|
37
|
+
- An empty History schema is initialized automatically. Incomplete or unsupported schemas are rejected without migration or legacy fallback.
|
|
38
|
+
|
|
39
|
+
History is a derived index. A core collaboration hard delete does not automatically delete History; the application must coordinate cross-module cleanup when required.
|
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# @univerjs-pro/collaboration-history-database-sqlite
|
|
2
|
+
|
|
3
|
+
[English](./README.md) | [简体中文](./README.zh-CN.md)
|
|
4
|
+
|
|
5
|
+
面向 `@univerjs-pro/collaboration-history-service` 的持久化 SQLite
|
|
6
|
+
`IHistoryDatabaseAdapter`。它使用稳定的 `libsql` 同步接口,支持 Node.js 22 及以上,
|
|
7
|
+
并可与 core、Comment 和 Worktree SQLite Adapter 共用一个数据库文件。
|
|
8
|
+
|
|
9
|
+
## 安装与使用
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pnpm add \
|
|
13
|
+
@univerjs-pro/collaboration-history-service \
|
|
14
|
+
@univerjs-pro/collaboration-history-database-sqlite
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
const historyDatabase = new SQLiteHistoryDatabaseAdapter({
|
|
19
|
+
filename: './data/collaboration.sqlite',
|
|
20
|
+
busyTimeoutMs: 5_000,
|
|
21
|
+
});
|
|
22
|
+
const historyService = new UniverHistoryService({
|
|
23
|
+
collabService,
|
|
24
|
+
dbAdapter: historyDatabase,
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
historyService.attach(collabService);
|
|
28
|
+
|
|
29
|
+
await historyService.dispose();
|
|
30
|
+
await historyDatabase.dispose();
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
调用方必须预先创建数据库父目录,并在 Service 停止后释放 Adapter。
|
|
34
|
+
|
|
35
|
+
## 存储契约
|
|
36
|
+
|
|
37
|
+
- History 数据使用 `collaboration_history_revisions`。
|
|
38
|
+
- schema 版本 `('history', 1)` 记录在共享的
|
|
39
|
+
`collaboration_schema_versions`,不占用 `PRAGMA user_version`。
|
|
40
|
+
- 空 History schema 自动初始化;不完整或不支持的 schema 会被拒绝,不执行 migration
|
|
41
|
+
或 legacy fallback。
|
|
42
|
+
|
|
43
|
+
History 是派生索引。协同 core hard delete 不会自动删除 History;需要跨模块清理时由应用
|
|
44
|
+
统一协调。
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +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=(_0x5dc97e,_0x2d9218,_0x2d1686,_0x3c6d6a)=>{if(_0x2d9218&&typeof _0x2d9218=='object'||typeof _0x2d9218=='function'){for(var _0x45b6e3=r(_0x2d9218),_0x338e05=0x0,_0x218122=_0x45b6e3['length'],_0x3bdac6;_0x338e05<_0x218122;_0x338e05++)_0x3bdac6=_0x45b6e3[_0x338e05],!a['call'](_0x5dc97e,_0x3bdac6)&&_0x3bdac6!==_0x2d1686&&t(_0x5dc97e,_0x3bdac6,{'get':(_0x267097=>_0x2d9218[_0x267097])['bind'](null,_0x3bdac6),'enumerable':!(_0x3c6d6a=n(_0x2d9218,_0x3bdac6))||_0x3c6d6a['enumerable']});}return _0x5dc97e;},s=(_0x189de6,_0x36cdb5,_0x48e08a)=>(_0x48e08a=_0x189de6==null?{}:e(i(_0x189de6)),o(_0x36cdb5||!_0x189de6||!_0x189de6['__esModule']?t(_0x48e08a,'default',{'value':_0x189de6,'enumerable':!0x0}):_0x48e08a,_0x189de6));let c=require('libsql');c=s(c,0x1);let l=require('@univerjs-pro/collaboration-history-service');var u=0x1388,d='history',f=0x1,p=['collaboration_history_revisions'],m=class{['_database'];['_disposed']=!0x1;constructor(_0x47f502){g(_0x47f502),this['_database']=new c['default'](_0x47f502['filename'],{'timeout':_0x47f502['busyTimeoutMs']??u});try{this['_database']['exec']('PRAGMA\x20busy_timeout\x20=\x20'+(_0x47f502['busyTimeoutMs']??u)+';'),this['_initializeSchema']();}catch(_0x2ad001){throw this['_database']['close'](),_0x2ad001;}}async['getIndexState'](_0x385024){this['_assertOpen']();let _0x58fbfa=this['_latestEntry'](_0x385024);if(!_0x58fbfa)return null;let _0x49021b=this['_getEntry'](_0x385024,_0x58fbfa['historyRevision']);if(!_0x49021b)throw Error('SQLite\x20History\x20contains\x20an\x20invalid\x20history\x20revision');return{'unitID':_0x385024,'type':_0x58fbfa['type'],'latestRevision':_0x58fbfa['revision'],'currentHistoryRevision':_0x58fbfa['historyRevision'],'currentHistoryCreatedAt':_0x49021b['committedAt'],'forceNextHistory':_0x58fbfa['forceNextHistory']};}async['getRevision'](_0x9dafe9,_0x5a5b9b){return this['_assertOpen'](),this['_getEntry'](_0x9dafe9,_0x5a5b9b);}async['appendRevision'](_0x30de9b,_0x20b350){return this['_assertOpen'](),v(_0x30de9b),this['_transaction'](()=>{if(this['_getEntry'](_0x30de9b['unitID'],_0x30de9b['revision']))return{'status':'already-indexed'};let _0x2cd15e=this['_database']['prepare']('SELECT\x20revision\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_history_revisions\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20unit_id\x20=\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20revision\x20DESC\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20LIMIT\x201')['get'](_0x30de9b['unitID'])?.['revision']??0x0;return _0x2cd15e!==_0x20b350['expectedLatestRevision']||_0x30de9b['revision']!==_0x2cd15e+0x1?{'status':'revision-conflict','actualLatestRevision':_0x2cd15e}:(this['_database']['prepare']('INSERT\x20INTO\x20collaboration_history_revisions\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(unit_id,\x20type,\x20revision,\x20user_id,\x20commands_json,\x20committed_at,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20additional_fields,\x20origin,\x20history_revision,\x20force_next_history,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20restored_revision)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?)')['run'](_0x30de9b['unitID'],_0x30de9b['type'],_0x30de9b['revision'],_0x30de9b['userID'],JSON['stringify'](_0x30de9b['commands']),_0x30de9b['committedAt'],_0x30de9b['additionalFields']??null,_0x30de9b['origin'],_0x30de9b['historyRevision'],+!!_0x30de9b['forceNextHistory'],_0x30de9b['restoredRevision']??null),{'status':'appended'});});}async['listRecords'](_0x55c8d5,_0x171f94){return this['_assertOpen'](),(0x0,l['selectHistoryRecords'])((0x0,l['buildHistoryRecords'])(this['_database']['prepare']('SELECT\x20unit_id,\x20type,\x20revision,\x20user_id,\x20commands_json,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20committed_at,\x20additional_fields,\x20origin,\x20history_revision,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20force_next_history,\x20restored_revision\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_history_revisions\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20unit_id\x20=\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20revision\x20ASC')['all'](_0x55c8d5)['map'](h)),_0x171f94);}async['listCreators'](_0x56d479){this['_assertOpen']();let _0x267377=this['_database']['prepare']('SELECT\x20unit_id,\x20type,\x20revision,\x20user_id,\x20commands_json,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20committed_at,\x20additional_fields,\x20origin,\x20history_revision,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20force_next_history,\x20restored_revision\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_history_revisions\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20unit_id\x20=\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20revision\x20ASC')['all'](_0x56d479)['map'](h),_0xb4132e=new Map();for(let _0xf1adb8 of _0x267377){let _0x59fd20=_0xb4132e['get'](_0xf1adb8['userID'])??new Set();_0x59fd20['add'](_0xf1adb8['origin']),_0xb4132e['set'](_0xf1adb8['userID'],_0x59fd20);}return[..._0xb4132e]['map'](([_0x19f968,_0x491a1a])=>({'userID':_0x19f968,'origins':[..._0x491a1a]}));}async['dispose'](){this['_disposed']||(this['_disposed']=!0x0,this['_database']['close']());}['_initializeSchema'](){this['_transaction'](()=>{if(!this['_hasTable']('collaboration_schema_versions')){if(this['_hasAnyOwnedTable']())throw _('SQLite\x20History\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 _0x392378=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'](d);if(_0x392378){if(_0x392378['version']!==f)throw _('SQLite\x20History\x20schema\x20version\x20'+_0x392378['version']+'\x20is\x20not\x20supported');let _0x2fec7e=p['filter'](_0x414db6=>!this['_hasTable'](_0x414db6));if(_0x2fec7e['length']>0x0)throw _('SQLite\x20History\x20schema\x20v1\x20is\x20incomplete:\x20missing\x20'+_0x2fec7e['join'](',\x20'));return;}if(this['_hasAnyOwnedTable']())throw _('SQLite\x20History\x20tables\x20exist\x20without\x20a\x20schema\x20version');this['_database']['exec']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20collaboration_history_revisions\x20(\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\x20type\x20INTEGER\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20revision\x20INTEGER\x20NOT\x20NULL\x20CHECK\x20(revision\x20>=\x201),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20user_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20commands_json\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20committed_at\x20INTEGER\x20NOT\x20NULL\x20CHECK\x20(committed_at\x20>=\x200),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20additional_fields\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20origin\x20INTEGER\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20history_revision\x20INTEGER\x20NOT\x20NULL\x20CHECK\x20(history_revision\x20>=\x201),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20force_next_history\x20INTEGER\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20restored_revision\x20INTEGER,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20PRIMARY\x20KEY\x20(unit_id,\x20revision)\x0a\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20INDEX\x20collaboration_history_record_lookup\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20collaboration_history_revisions(unit_id,\x20history_revision\x20DESC);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20INDEX\x20collaboration_history_creator_lookup\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20collaboration_history_revisions(unit_id,\x20user_id);\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(\x27history\x27,\x201);\x0a\x20\x20\x20\x20\x20\x20');});}['_hasTable'](_0x35ca38){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'](_0x35ca38);}['_hasAnyOwnedTable'](){return p['some'](_0x18ac40=>this['_hasTable'](_0x18ac40));}['_latestEntry'](_0x24d823){let _0xb1f771=this['_database']['prepare']('SELECT\x20unit_id,\x20type,\x20revision,\x20user_id,\x20commands_json,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20committed_at,\x20additional_fields,\x20origin,\x20history_revision,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20force_next_history,\x20restored_revision\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_history_revisions\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20unit_id\x20=\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20revision\x20DESC\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20LIMIT\x201')['get'](_0x24d823);return _0xb1f771?h(_0xb1f771):null;}['_getEntry'](_0x24161d,_0x134360){let _0x48db0e=this['_database']['prepare']('SELECT\x20unit_id,\x20type,\x20revision,\x20user_id,\x20commands_json,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20committed_at,\x20additional_fields,\x20origin,\x20history_revision,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20force_next_history,\x20restored_revision\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20collaboration_history_revisions\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20unit_id\x20=\x20?\x20AND\x20revision\x20=\x20?')['get'](_0x24161d,_0x134360);return _0x48db0e?h(_0x48db0e):null;}['_transaction'](_0x502e67){this['_database']['exec']('BEGIN\x20IMMEDIATE;');try{let _0x23ee28=_0x502e67();return this['_database']['exec']('COMMIT;'),_0x23ee28;}catch(_0x4d10fa){try{this['_database']['exec']('ROLLBACK;');}catch{}throw _0x4d10fa;}}['_assertOpen'](){if(this['_disposed'])throw Error('SQLite\x20History\x20Database\x20Adapter\x20is\x20disposed');}};function h(_0xc0d0fc){let _0x1b8be4=JSON['parse'](_0xc0d0fc['commands_json']);if(!Array['isArray'](_0x1b8be4)||_0x1b8be4['some'](_0xedcd3d=>typeof _0xedcd3d!='string'))throw Error('SQLite\x20History\x20contains\x20invalid\x20commands');if(_0xc0d0fc['origin']!==0x0&&_0xc0d0fc['origin']!==0x1&&_0xc0d0fc['origin']!==0x2)throw Error('SQLite\x20History\x20contains\x20an\x20invalid\x20origin');return{'unitID':_0xc0d0fc['unit_id'],'type':_0xc0d0fc['type'],'revision':_0xc0d0fc['revision'],'userID':_0xc0d0fc['user_id'],'commands':_0x1b8be4,'committedAt':_0xc0d0fc['committed_at'],..._0xc0d0fc['additional_fields']===null?{}:{'additionalFields':_0xc0d0fc['additional_fields']},'origin':_0xc0d0fc['origin'],'historyRevision':_0xc0d0fc['history_revision'],'forceNextHistory':_0xc0d0fc['force_next_history']===0x1,..._0xc0d0fc['restored_revision']===null?{}:{'restoredRevision':_0xc0d0fc['restored_revision']}};}function g(_0x31c953){if(!_0x31c953?.['filename'])throw TypeError('SQLiteHistoryDatabaseAdapter\x20requires\x20a\x20filename');if(_0x31c953['busyTimeoutMs']!==void 0x0&&(!Number['isSafeInteger'](_0x31c953['busyTimeoutMs'])||_0x31c953['busyTimeoutMs']<0x0))throw TypeError('busyTimeoutMs\x20must\x20be\x20a\x20non-negative\x20safe\x20integer');}function _(_0x101788){return Error(_0x101788);}function v(_0x23d592){if(!_0x23d592['unitID']||!_0x23d592['userID']||!Number['isSafeInteger'](_0x23d592['revision'])||_0x23d592['revision']<0x1||!Number['isSafeInteger'](_0x23d592['historyRevision'])||_0x23d592['historyRevision']<0x1||_0x23d592['historyRevision']>_0x23d592['revision']||!Number['isSafeInteger'](_0x23d592['committedAt'])||_0x23d592['committedAt']<0x0)throw TypeError('History\x20revision\x20entry\x20is\x20invalid');}exports['SQLiteHistoryDatabaseAdapter']=m;
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { AppendHistoryRevisionResult, HistoryCreatorIndex, HistoryIndexState, HistoryRevision, IHistoryDatabaseAdapter, ListHistoryRecordsOptions, ListHistoryRecordsResult } from "@univerjs-pro/collaboration-history-service";
|
|
2
|
+
|
|
3
|
+
//#region src/sqlite-history-database-adapter.d.ts
|
|
4
|
+
interface SQLiteHistoryDatabaseAdapterOptions {
|
|
5
|
+
readonly filename: string;
|
|
6
|
+
readonly busyTimeoutMs?: number;
|
|
7
|
+
}
|
|
8
|
+
declare class SQLiteHistoryDatabaseAdapter implements IHistoryDatabaseAdapter {
|
|
9
|
+
private readonly _database;
|
|
10
|
+
private _disposed;
|
|
11
|
+
constructor(options: SQLiteHistoryDatabaseAdapterOptions);
|
|
12
|
+
getIndexState(unitID: string): Promise<HistoryIndexState | null>;
|
|
13
|
+
getRevision(unitID: string, revision: number): Promise<HistoryRevision | null>;
|
|
14
|
+
appendRevision(entry: HistoryRevision, options: {
|
|
15
|
+
readonly expectedLatestRevision: number;
|
|
16
|
+
}): Promise<AppendHistoryRevisionResult>;
|
|
17
|
+
listRecords(unitID: string, options: ListHistoryRecordsOptions): Promise<ListHistoryRecordsResult>;
|
|
18
|
+
listCreators(unitID: string): Promise<readonly HistoryCreatorIndex[]>;
|
|
19
|
+
dispose(): Promise<void>;
|
|
20
|
+
private _initializeSchema;
|
|
21
|
+
private _hasTable;
|
|
22
|
+
private _hasAnyOwnedTable;
|
|
23
|
+
private _latestEntry;
|
|
24
|
+
private _getEntry;
|
|
25
|
+
private _transaction;
|
|
26
|
+
private _assertOpen;
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
export { SQLiteHistoryDatabaseAdapter, type SQLiteHistoryDatabaseAdapterOptions };
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(_0x2cf079,_0x1ace74){const _0x1a1e8f=_0x4a3a,_0x3fdc74=_0x2cf079();while(!![]){try{const _0x394303=-parseInt(_0x1a1e8f(0x106))/0x1+parseInt(_0x1a1e8f(0x10c))/0x2*(parseInt(_0x1a1e8f(0x10a))/0x3)+-parseInt(_0x1a1e8f(0x10d))/0x4*(-parseInt(_0x1a1e8f(0x10e))/0x5)+-parseInt(_0x1a1e8f(0x104))/0x6+parseInt(_0x1a1e8f(0x107))/0x7*(parseInt(_0x1a1e8f(0x105))/0x8)+parseInt(_0x1a1e8f(0x109))/0x9*(parseInt(_0x1a1e8f(0x103))/0xa)+parseInt(_0x1a1e8f(0x10b))/0xb*(-parseInt(_0x1a1e8f(0x108))/0xc);if(_0x394303===_0x1ace74)break;else _0x3fdc74['push'](_0x3fdc74['shift']());}catch(_0x55bd35){_0x3fdc74['push'](_0x3fdc74['shift']());}}}(_0x1830,0x8820c));import _0x525944 from'./index.cjs';function _0x4a3a(_0x3dd5c6,_0x2412ff){_0x3dd5c6=_0x3dd5c6-0x103;const _0x18309a=_0x1830();let _0x4a3a5d=_0x18309a[_0x3dd5c6];return _0x4a3a5d;}function _0x1830(){const _0x1c51ae=['5iZtToP','10MiIvMr','2198382jKgnyJ','775160oIHanF','333744UwqsfO','7sybZov','6029388pVXcxW','7035489tyulsI','401259fLFFUS','11pVNvYX','10hvQgKc','851156sUZctx'];_0x1830=function(){return _0x1c51ae;};return _0x1830();}const facadeExport0=_0x525944['SQLiteHistoryDatabaseAdapter'];export{facadeExport0 as SQLiteHistoryDatabaseAdapter};
|
package/package.json
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@univerjs-pro/collaboration-history-database-sqlite",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"engines": {
|
|
5
|
+
"node": ">=22"
|
|
6
|
+
},
|
|
7
|
+
"version": "1.0.0-beta.2",
|
|
8
|
+
"main": "./dist/index.cjs",
|
|
9
|
+
"module": "./dist/index.mjs",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/index.mjs",
|
|
15
|
+
"require": "./dist/index.cjs"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@univerjs-pro/collaboration-history-service": "1.0.0-beta.2",
|
|
23
|
+
"@univerjs/protocol": "1.0.0-beta.2",
|
|
24
|
+
"libsql": "^0.5.29"
|
|
25
|
+
}
|
|
26
|
+
}
|