@aiao/rxdb-plugin-history 0.0.0-stage → 0.0.28
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/LICENSE +21 -0
- package/README.md +70 -2
- package/dist/HistoryManager.d.ts +87 -0
- package/dist/HistoryManager.d.ts.map +1 -0
- package/dist/VersionManager.d.ts +243 -0
- package/dist/VersionManager.d.ts.map +1 -0
- package/dist/create-branch.d.ts +35 -0
- package/dist/create-branch.d.ts.map +1 -0
- package/dist/detached-event-error.d.ts +28 -0
- package/dist/detached-event-error.d.ts.map +1 -0
- package/dist/find-switch-branch-step.d.ts +94 -0
- package/dist/find-switch-branch-step.d.ts.map +1 -0
- package/dist/history-filters.d.ts +78 -0
- package/dist/history-filters.d.ts.map +1 -0
- package/dist/history-item-builder.d.ts +25 -0
- package/dist/history-item-builder.d.ts.map +1 -0
- package/dist/history-scope-api.d.ts +41 -0
- package/dist/history-scope-api.d.ts.map +1 -0
- package/dist/history-undo-session.types.d.ts +32 -0
- package/dist/history-undo-session.types.d.ts.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1565 -0
- package/dist/merge-branch.d.ts +22 -0
- package/dist/merge-branch.d.ts.map +1 -0
- package/dist/plugin.d.ts +58 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/pullable-count.d.ts +37 -0
- package/dist/pullable-count.d.ts.map +1 -0
- package/dist/push-inflight.d.ts +60 -0
- package/dist/push-inflight.d.ts.map +1 -0
- package/dist/redo-stack.d.ts +56 -0
- package/dist/redo-stack.d.ts.map +1 -0
- package/dist/remove-branch.d.ts +16 -0
- package/dist/remove-branch.d.ts.map +1 -0
- package/dist/restore-entity.d.ts +15 -0
- package/dist/restore-entity.d.ts.map +1 -0
- package/dist/scope-selection.d.ts +56 -0
- package/dist/scope-selection.d.ts.map +1 -0
- package/dist/switch-branch-actions.d.ts +87 -0
- package/dist/switch-branch-actions.d.ts.map +1 -0
- package/dist/sync-history-bridge.d.ts +87 -0
- package/dist/sync-history-bridge.d.ts.map +1 -0
- package/dist/undo-redo-apply.d.ts +47 -0
- package/dist/undo-redo-apply.d.ts.map +1 -0
- package/dist/version-manager.utils.d.ts +30 -0
- package/dist/version-manager.utils.d.ts.map +1 -0
- package/package.json +59 -3
- package/src/HistoryManager.ts +800 -0
- package/src/VersionManager.ts +617 -0
- package/src/create-branch.ts +178 -0
- package/src/detached-event-error.ts +43 -0
- package/src/find-switch-branch-step.ts +313 -0
- package/src/history-filters.ts +157 -0
- package/src/history-item-builder.ts +101 -0
- package/src/history-scope-api.ts +189 -0
- package/src/history-undo-session.types.ts +37 -0
- package/src/index.ts +61 -0
- package/src/merge-branch.ts +192 -0
- package/src/plugin.ts +93 -0
- package/src/pullable-count.ts +67 -0
- package/src/push-inflight.ts +91 -0
- package/src/redo-stack.ts +79 -0
- package/src/remove-branch.ts +100 -0
- package/src/restore-entity.ts +124 -0
- package/src/scope-selection.ts +133 -0
- package/src/switch-branch-actions.ts +319 -0
- package/src/sync-history-bridge.ts +131 -0
- package/src/undo-redo-apply.ts +270 -0
- package/src/version-manager.utils.ts +43 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { HistoryItem, HistoryScope } from '@aiao/rxdb';
|
|
2
|
+
/**
|
|
3
|
+
* 生成 repository 的缓存键(纯函数)
|
|
4
|
+
*
|
|
5
|
+
* @param repository - 带 namespace / entity 的仓储标识
|
|
6
|
+
* @returns 'namespace:entity' 形式的缓存键
|
|
7
|
+
*
|
|
8
|
+
* @internal 供 HistoryManager 与同文件的过滤函数使用
|
|
9
|
+
*/
|
|
10
|
+
export declare const getRepositoryKey: (repository: {
|
|
11
|
+
namespace: string;
|
|
12
|
+
entity: string;
|
|
13
|
+
}) => string;
|
|
14
|
+
/**
|
|
15
|
+
* 合成「每个仓库推到哪了」的水位线映射:已提交的 `RxDBSync` 水位线与正在飞的认领取较大者。
|
|
16
|
+
*
|
|
17
|
+
* @param repoSyncs - 当前分支下的 `RxDBSync` 行
|
|
18
|
+
* @param inFlight - `PushInFlightRegistry.snapshot()`,`namespace:entity` -> 正在飞的最大 change id
|
|
19
|
+
* @returns `namespace:entity` -> 该仓库「视同已推」的最大 change id
|
|
20
|
+
*
|
|
21
|
+
* @remarks
|
|
22
|
+
* `undoHistories$` 与 `fetchLatestHistories` 两条路径都要这份映射,此前各写一份循环。
|
|
23
|
+
* 两份必须逐字一致:一边认在飞、另一边不认,反应式的「可撤销」列表就会和真正执行撤销时
|
|
24
|
+
* 的判定分家 —— UI 上还亮着的那一项点下去什么也不会发生,或者更糟,真的撤销了一条
|
|
25
|
+
* 已经在飞的变更。
|
|
26
|
+
*
|
|
27
|
+
* 取最大值而不是「有在飞就用在飞」:上一轮推到 30、这一轮只在飞到 20 时,
|
|
28
|
+
* 水位线不许倒退。
|
|
29
|
+
*
|
|
30
|
+
* 在飞认领先进 map,因此**没有** `RxDBSync` 行的仓库也报得出来:`RxDBSync` 行由
|
|
31
|
+
* `planRepositoryPush` 现建,行还没落到本次查询的结果集里时,认领仍然必须生效。
|
|
32
|
+
*/
|
|
33
|
+
export declare function buildLastPushedMap(repoSyncs: readonly {
|
|
34
|
+
namespace: string;
|
|
35
|
+
entity: string;
|
|
36
|
+
lastPushedChangeId: number | null;
|
|
37
|
+
}[], inFlight: ReadonlyMap<string, number>): Map<string, number>;
|
|
38
|
+
/**
|
|
39
|
+
* 按作用域过滤历史记录(纯函数)
|
|
40
|
+
*
|
|
41
|
+
* @param histories - 原始历史记录数组
|
|
42
|
+
* @param scope - 作用域配置
|
|
43
|
+
* @returns 过滤后的历史记录数组
|
|
44
|
+
*
|
|
45
|
+
* @internal 供 HistoryManager 和单元测试使用
|
|
46
|
+
*/
|
|
47
|
+
export declare function filterHistoriesByScope(histories: HistoryItem[], scope: HistoryScope): HistoryItem[];
|
|
48
|
+
/**
|
|
49
|
+
* 过滤出可撤销的历史记录(纯函数)
|
|
50
|
+
*
|
|
51
|
+
* @param histories - 原始历史记录数组
|
|
52
|
+
* @param lastPushedMap - namespace:entity -> lastPushedChangeId 的 repository 级水位线映射
|
|
53
|
+
* @param undoBoundaryChangeId - 同步清空后的永久撤销边界
|
|
54
|
+
* @param undoBoundaryCreatedAfter - 无数字 change id 时使用的严格时间边界
|
|
55
|
+
* @returns 可撤销的历史记录数组
|
|
56
|
+
*
|
|
57
|
+
* @remarks
|
|
58
|
+
* undoHistories$(UI 展示)与 undo()(实际执行)共用同一套规则,
|
|
59
|
+
* 保证 UI 上看不到的历史不会被 undo() 撤销:
|
|
60
|
+
* 1. history.reverted == false(按 updatedAt 水位合并持久态与本地态,未被撤销)
|
|
61
|
+
* 2. remoteId == null(只有本地创建的变更才能撤销)
|
|
62
|
+
* 3. id > 该 repository 的 lastPushedChangeId(未推送到远程;按 repository 独立判断)
|
|
63
|
+
* 4. id > undoBoundaryChangeId(同步清空前的历史永久不可撤销)
|
|
64
|
+
* 5. createdAt > undoBoundaryCreatedAfter(无数字 id 时保守隔离旧 session)
|
|
65
|
+
*
|
|
66
|
+
* @internal 供 HistoryManager 和单元测试使用
|
|
67
|
+
*/
|
|
68
|
+
export declare function filterUndoableHistories(histories: HistoryItem[], lastPushedMap: Map<string, number>, undoBoundaryChangeId?: number, undoBoundaryCreatedAfter?: Date | null): HistoryItem[];
|
|
69
|
+
/**
|
|
70
|
+
* 生成作用域缓存键(纯函数)
|
|
71
|
+
*
|
|
72
|
+
* @param scope - 作用域配置
|
|
73
|
+
* @returns 缓存键字符串:'database' | 'namespace:entity' | 'namespace:entity:id'
|
|
74
|
+
*
|
|
75
|
+
* @internal 供 HistoryManager 和单元测试使用
|
|
76
|
+
*/
|
|
77
|
+
export declare function getScopeKey(scope: HistoryScope): string;
|
|
78
|
+
//# sourceMappingURL=history-filters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-filters.d.ts","sourceRoot":"","sources":["../src/history-filters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAA4B,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3F;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAAI,YAAY;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KAAG,MACrC,CAAC;AAEjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,EAC9F,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAYrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,YAAY,GAAG,WAAW,EAAE,CA2BnG;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,WAAW,EAAE,EACxB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,oBAAoB,SAAI,EACxB,wBAAwB,GAAE,IAAI,GAAG,IAAW,GAC3C,WAAW,EAAE,CAcf;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAQvD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { HistoryItem, RxDBChange } from '@aiao/rxdb';
|
|
2
|
+
/**
|
|
3
|
+
* 生成历史项的描述文本
|
|
4
|
+
*
|
|
5
|
+
* 规则:
|
|
6
|
+
* - 单条 INSERT/UPDATE/DELETE → 「创建 Foo」「更新 Foo」「删除 Foo」
|
|
7
|
+
* - 事务(多条变更)→ 「事务: 创建2条, 更新3条」
|
|
8
|
+
*/
|
|
9
|
+
export declare function generateHistoryDescription(changes: RxDBChange[]): string;
|
|
10
|
+
/**
|
|
11
|
+
* 从一组同事务的变更构造单个 HistoryItem
|
|
12
|
+
*
|
|
13
|
+
* @param changes - 属于同一事务的变更记录(至少一条)
|
|
14
|
+
* @returns 结构化的历史项,包含描述、类型、状态等信息
|
|
15
|
+
*/
|
|
16
|
+
export declare function createHistoryItem(changes: RxDBChange[]): HistoryItem;
|
|
17
|
+
/**
|
|
18
|
+
* 把按 id 降序排列的变更列表,转换为按事务分组的 HistoryItem 数组
|
|
19
|
+
*
|
|
20
|
+
* 转换逻辑:
|
|
21
|
+
* - 相同 transactionId 的连续变更合并为一个 HistoryItem
|
|
22
|
+
* - 无 transactionId 的变更单独成为一个 HistoryItem
|
|
23
|
+
*/
|
|
24
|
+
export declare function convertChangesToHistories(changes: RxDBChange[]): HistoryItem[];
|
|
25
|
+
//# sourceMappingURL=history-item-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-item-builder.d.ts","sourceRoot":"","sources":["../src/history-item-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,WAAW,EAAE,UAAU,EAAQ,MAAM,YAAY,CAAC;AAErF;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAsBxE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,WAAW,CA0BpE;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CA0B9E"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { EntityType, HistoryItem, HistoryScope, HistoryScopeAPI } from '@aiao/rxdb';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { ActiveUndoSession, UndoBoundary, UndoSession } from './history-undo-session.types.js';
|
|
4
|
+
/**
|
|
5
|
+
* `history()` 工厂所需的可变状态与委托。
|
|
6
|
+
*
|
|
7
|
+
* `history_cache` / `history_ref_counts` 是类持有的同一份 Map,sibling 的 set/delete 必须写回。
|
|
8
|
+
*/
|
|
9
|
+
export interface HistoryScopeApiHost {
|
|
10
|
+
readonly history_cache: Map<string, HistoryScopeAPI>;
|
|
11
|
+
readonly history_ref_counts: Map<string, number>;
|
|
12
|
+
readonly histories$: Observable<HistoryItem[]>;
|
|
13
|
+
readonly undoHistories$: Observable<HistoryItem[]>;
|
|
14
|
+
readonly redoHistories$: Observable<HistoryItem[]>;
|
|
15
|
+
readonly undoSession$: {
|
|
16
|
+
readonly value: UndoSession;
|
|
17
|
+
};
|
|
18
|
+
runSerialized<T>(task: () => Promise<T>): Promise<T>;
|
|
19
|
+
fetchLatestHistories(boundary: UndoBoundary): Promise<{
|
|
20
|
+
histories: HistoryItem[];
|
|
21
|
+
lastPushedMap: Map<string, number>;
|
|
22
|
+
}>;
|
|
23
|
+
isUndoSessionCurrent(session: ActiveUndoSession): boolean;
|
|
24
|
+
selectWholeTransactions(histories: HistoryItem[], scope: HistoryScope, step: number): HistoryItem[];
|
|
25
|
+
applyUndoRedoHistories(operation: 'undo' | 'redo', histories: HistoryItem[], undoSession?: ActiveUndoSession): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 解析 `history()` 入参:无参 → database;显式 HistoryScope;否则 EntityType / 实例。
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolveHistoryScope<T extends EntityType>(options?: T | InstanceType<T> | HistoryScope): HistoryScope;
|
|
31
|
+
/**
|
|
32
|
+
* 创建(或从缓存取出)特定作用域的历史 API。
|
|
33
|
+
*
|
|
34
|
+
* @remarks
|
|
35
|
+
* 引用计数由 wrapObservable 对称管理(addRef / cleanup 成对出现),不再挂 finalize。
|
|
36
|
+
* 缓存条目的生死跟着引用计数走:第一个订阅者出现时入表,最后一个退订时摘掉。
|
|
37
|
+
* 因此「只调方法不订阅」的用法不产生任何常驻状态 —— 它拿到的是个短命对象,
|
|
38
|
+
* 用完即由 GC 回收。
|
|
39
|
+
*/
|
|
40
|
+
export declare function createHistoryScopeApi<T extends EntityType>(host: HistoryScopeApiHost, options?: T | InstanceType<T> | HistoryScope): HistoryScopeAPI;
|
|
41
|
+
//# sourceMappingURL=history-scope-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-scope-api.d.ts","sourceRoot":"","sources":["../src/history-scope-api.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,eAAe,EAErB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAuB,UAAU,EAAe,MAAM,MAAM,CAAC;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACpG;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACrD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/C,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IACnD,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IACnD,QAAQ,CAAC,YAAY,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;KAAE,CAAC;IACvD,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACrD,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC;QACpD,SAAS,EAAE,WAAW,EAAE,CAAC;QACzB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACpC,CAAC,CAAC;IACH,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC;IAC1D,uBAAuB,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IACpG,sBAAsB,CACpB,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,SAAS,EAAE,WAAW,EAAE,EACxB,WAAW,CAAC,EAAE,iBAAiB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,YAAY,CAuBpH;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,UAAU,EACxD,IAAI,EAAE,mBAAmB,EACzB,OAAO,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,GAC3C,eAAe,CA+GjB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* undo session 类型:按分支隔离的撤销边界。
|
|
3
|
+
*
|
|
4
|
+
* @internal 供 {@link HistoryManager} 与 undo/redo sibling 共用
|
|
5
|
+
*/
|
|
6
|
+
/** 同步清空后的永久撤销边界 */
|
|
7
|
+
export type UndoBoundary = Readonly<{
|
|
8
|
+
changeId: number;
|
|
9
|
+
createdAfter: Date | null;
|
|
10
|
+
}>;
|
|
11
|
+
/** 当前可撤销的 session */
|
|
12
|
+
export type ActiveUndoSession = Readonly<{
|
|
13
|
+
generation: number;
|
|
14
|
+
state: 'active';
|
|
15
|
+
boundary: UndoBoundary;
|
|
16
|
+
}>;
|
|
17
|
+
/** 同步后已清空、等待本地新写入再恢复的 session */
|
|
18
|
+
export type ClearedUndoSession = Readonly<{
|
|
19
|
+
generation: number;
|
|
20
|
+
state: 'cleared';
|
|
21
|
+
boundary: UndoBoundary;
|
|
22
|
+
clearedAt: Date;
|
|
23
|
+
}>;
|
|
24
|
+
export type UndoSession = ActiveUndoSession | ClearedUndoSession;
|
|
25
|
+
/** 本地写入事件携带的 session 归属信息 */
|
|
26
|
+
export type UndoSessionEvent = Readonly<{
|
|
27
|
+
generation: number | null;
|
|
28
|
+
recordAt: Date | null;
|
|
29
|
+
}>;
|
|
30
|
+
/** 未发生过清空时的默认边界 */
|
|
31
|
+
export declare const INITIAL_UNDO_BOUNDARY: UndoBoundary;
|
|
32
|
+
//# sourceMappingURL=history-undo-session.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-undo-session.types.d.ts","sourceRoot":"","sources":["../src/history-undo-session.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,mBAAmB;AACnB,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;CAC3B,CAAC,CAAC;AAEH,qBAAqB;AACrB,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,YAAY,CAAC;CACxB,CAAC,CAAC;AAEH,iCAAiC;AACjC,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;AAEjE,6BAA6B;AAC7B,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;CACvB,CAAC,CAAC;AAEH,mBAAmB;AACnB,eAAO,MAAM,qBAAqB,EAAE,YAAkD,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* `@aiao/rxdb-plugin-history` —— 历史、撤销重做与分支。
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* 核心 `@aiao/rxdb` 只保留**原语**:三张系统表({@link RxDBBranch} / `RxDBChange` /
|
|
7
|
+
* `RxDBSync`)、变更编解码、冲突模型与同步资格判定。原因是这些东西并不属于历史子系统 ——
|
|
8
|
+
* 变更日志触发器直接写 `branchId`,`RxDBChange.branch` 会生成真实的
|
|
9
|
+
* `REFERENCES rxdb$rxdb_branch(id)` 外键,整条响应式增量链路都跑在 `rxdb_change` 上。
|
|
10
|
+
*
|
|
11
|
+
* 搬进本包的是**消费者**:读历史、撤销重做、建/切/合/删分支。
|
|
12
|
+
*
|
|
13
|
+
* 推拉同步的调度**不在这里**。US-025 阶段 D 之后它住在 `@aiao/rxdb-plugin-sync`:
|
|
14
|
+
* `rxdb.syncManager.push()` / `.pull()` / `.sync()`。那个插件 `inject: ['plugin:history']`,
|
|
15
|
+
* 反向则没有依赖——本包不认识同步包。
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { rxDBPluginHistory } from '@aiao/rxdb-plugin-history';
|
|
20
|
+
*
|
|
21
|
+
* rxdb.use(rxDBPluginHistory);
|
|
22
|
+
* await rxdb.connect();
|
|
23
|
+
*
|
|
24
|
+
* // 撤销重做走作用域 API:无参 = 整库,传实体类 = 该仓储,传实例 = 该行
|
|
25
|
+
* await rxdb.versionManager.history().undo();
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export * from './plugin.js';
|
|
29
|
+
export { RxDBCrossScopeTransactionError } from './scope-selection.js';
|
|
30
|
+
export type { VersionManager } from './VersionManager.js';
|
|
31
|
+
export { isIgnorableDetachedVersionEventError } from './detached-event-error.js';
|
|
32
|
+
export { PushInFlightRegistry } from './push-inflight.js';
|
|
33
|
+
export type { PushInFlightSession } from './push-inflight.js';
|
|
34
|
+
export type { SyncHistoryBridge } from './sync-history-bridge.js';
|
|
35
|
+
export { find_branch_path_to_root, find_switch_branch_step } from './find-switch-branch-step.js';
|
|
36
|
+
export type { SwitchBranchStep } from './find-switch-branch-step.js';
|
|
37
|
+
export { compute_switch_branch_actions, get_branch_max_change } from './switch-branch-actions.js';
|
|
38
|
+
export type { SwitchBranchActionReaders } from './switch-branch-actions.js';
|
|
39
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,cAAc,aAAa,CAAC;AAG5B,OAAO,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AAEtE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAQ1D,OAAO,EAAE,oCAAoC,EAAE,MAAM,2BAA2B,CAAC;AAGjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAYlE,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACjG,YAAY,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAClG,YAAY,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC"}
|