@aiao/rxdb 0.0.6 → 0.0.7
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/dist/RxDB.d.ts +116 -18
- package/dist/RxDB.d.ts.map +1 -1
- package/dist/entity/@TreeEntity.d.ts.map +1 -1
- package/dist/entity/EntityBase.d.ts +58 -10
- package/dist/entity/EntityBase.d.ts.map +1 -1
- package/dist/entity/EntityManager.d.ts +16 -5
- package/dist/entity/EntityManager.d.ts.map +1 -1
- package/dist/entity/EntityStatus.d.ts +145 -87
- package/dist/entity/EntityStatus.d.ts.map +1 -1
- package/dist/entity/EntityStatus.interface.d.ts +59 -0
- package/dist/entity/EntityStatus.interface.d.ts.map +1 -0
- package/dist/entity/TreeEntityBase.d.ts +31 -4
- package/dist/entity/TreeEntityBase.d.ts.map +1 -1
- package/dist/entity/entity.interface.d.ts +16 -15
- package/dist/entity/entity.interface.d.ts.map +1 -1
- package/dist/entity/entity.utils.d.ts +21 -0
- package/dist/entity/entity.utils.d.ts.map +1 -1
- package/dist/entity/many_to_many_entity.d.ts.map +1 -1
- package/dist/entity/metadata-options.interface.d.ts +276 -39
- package/dist/entity/metadata-options.interface.d.ts.map +1 -1
- package/dist/entity/{transition-metadata.d.ts → metadata-transition.d.ts} +1 -1
- package/dist/entity/metadata-transition.d.ts.map +1 -0
- package/dist/entity/metadata.interface.d.ts +6 -0
- package/dist/entity/metadata.interface.d.ts.map +1 -1
- package/dist/entity/metadata_cascade_default.d.ts +54 -0
- package/dist/entity/metadata_cascade_default.d.ts.map +1 -0
- package/dist/entity/proxy.d.ts.map +1 -1
- package/dist/entity/relation_helper.d.ts.map +1 -1
- package/dist/entity/tree-entity.interface.d.ts +5 -0
- package/dist/entity/tree-entity.interface.d.ts.map +1 -0
- package/dist/gateway/RxDBTabsGateway.d.ts +52 -0
- package/dist/gateway/RxDBTabsGateway.d.ts.map +1 -0
- package/dist/gateway/gateway.interface.d.ts +43 -0
- package/dist/gateway/gateway.interface.d.ts.map +1 -0
- package/dist/index.d.ts +17 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5786 -1897
- package/dist/query/entity_type_dependencies.d.ts +3 -2
- package/dist/query/entity_type_dependencies.d.ts.map +1 -1
- package/dist/query/merge-update-basic.d.ts +30 -0
- package/dist/query/merge-update-basic.d.ts.map +1 -0
- package/dist/query/merge-update-tree.d.ts +86 -0
- package/dist/query/merge-update-tree.d.ts.map +1 -0
- package/dist/query/merge-update.utils.d.ts +52 -0
- package/dist/query/merge-update.utils.d.ts.map +1 -0
- package/dist/query/merge_create.d.ts +2 -2
- package/dist/query/merge_create.d.ts.map +1 -1
- package/dist/query/merge_remove.d.ts +2 -15
- package/dist/query/merge_remove.d.ts.map +1 -1
- package/dist/query/merge_update.d.ts +2 -2
- package/dist/query/merge_update.d.ts.map +1 -1
- package/dist/query/need_refresh_create.d.ts +4 -4
- package/dist/query/need_refresh_create.d.ts.map +1 -1
- package/dist/query/need_refresh_remove.d.ts +2 -2
- package/dist/query/need_refresh_remove.d.ts.map +1 -1
- package/dist/query/need_refresh_update.d.ts +4 -4
- package/dist/query/need_refresh_update.d.ts.map +1 -1
- package/dist/query/query-matching.utils.d.ts +18 -2
- package/dist/query/query-matching.utils.d.ts.map +1 -1
- package/dist/query/query-relation.utils.d.ts +44 -0
- package/dist/query/query-relation.utils.d.ts.map +1 -0
- package/dist/query/query-rules-builder.d.ts +68 -0
- package/dist/query/query-rules-builder.d.ts.map +1 -0
- package/dist/query/query-tree.utils.d.ts +54 -0
- package/dist/query/query-tree.utils.d.ts.map +1 -0
- package/dist/repository/QueryManager.d.ts +23 -1
- package/dist/repository/QueryManager.d.ts.map +1 -1
- package/dist/repository/QueryTask.d.ts +42 -5
- package/dist/repository/QueryTask.d.ts.map +1 -1
- package/dist/repository/Repository.d.ts +24 -35
- package/dist/repository/Repository.d.ts.map +1 -1
- package/dist/repository/RepositoryBase.d.ts +5 -3
- package/dist/repository/RepositoryBase.d.ts.map +1 -1
- package/dist/repository/TreeRepository.d.ts +28 -1
- package/dist/repository/TreeRepository.d.ts.map +1 -1
- package/dist/repository/fingerprint.utils.d.ts +28 -0
- package/dist/repository/fingerprint.utils.d.ts.map +1 -0
- package/dist/repository/query-options.interface.d.ts +50 -19
- package/dist/repository/query-options.interface.d.ts.map +1 -1
- package/dist/repository/query.interface.d.ts +70 -25
- package/dist/repository/query.interface.d.ts.map +1 -1
- package/dist/repository/relation-query.interface.d.ts +19 -0
- package/dist/repository/relation-query.interface.d.ts.map +1 -1
- package/dist/repository/repository.interface.d.ts +5 -8
- package/dist/repository/repository.interface.d.ts.map +1 -1
- package/dist/repository/tree-repository.interface.d.ts +29 -2
- package/dist/repository/tree-repository.interface.d.ts.map +1 -1
- package/dist/rxdb-adapter.d.ts +96 -14
- package/dist/rxdb-adapter.d.ts.map +1 -1
- package/dist/rxdb-events.d.ts +309 -172
- package/dist/rxdb-events.d.ts.map +1 -1
- package/dist/rxdb-plugin.d.ts +2 -2
- package/dist/rxdb-plugin.d.ts.map +1 -1
- package/dist/rxdb-utils.d.ts +15 -8
- package/dist/rxdb-utils.d.ts.map +1 -1
- package/dist/rxdb.interface.d.ts +4 -0
- package/dist/rxdb.interface.d.ts.map +1 -1
- package/dist/rxdb.private.d.ts +5 -0
- package/dist/rxdb.private.d.ts.map +1 -1
- package/dist/schema/SchemaManager.d.ts +1 -0
- package/dist/schema/SchemaManager.d.ts.map +1 -1
- package/dist/system/branch.d.ts +124 -7
- package/dist/system/branch.d.ts.map +1 -1
- package/dist/system/change.d.ts +605 -30
- package/dist/system/change.d.ts.map +1 -1
- package/dist/system/migration.d.ts +61 -11
- package/dist/system/migration.d.ts.map +1 -1
- package/dist/system/repository-sync.d.ts +95 -0
- package/dist/system/repository-sync.d.ts.map +1 -0
- package/dist/system/system.interface.d.ts +25 -0
- package/dist/system/system.interface.d.ts.map +1 -0
- package/dist/system/types.d.ts +233 -120
- package/dist/system/types.d.ts.map +1 -1
- package/dist/system/types.local.d.ts +156 -0
- package/dist/system/types.local.d.ts.map +1 -0
- package/dist/system/types.remote.d.ts +103 -0
- package/dist/system/types.remote.d.ts.map +1 -0
- package/dist/version/HistoryManager.d.ts +238 -0
- package/dist/version/HistoryManager.d.ts.map +1 -0
- package/dist/version/LWWConflictResolver.d.ts +41 -0
- package/dist/version/LWWConflictResolver.d.ts.map +1 -0
- package/dist/version/VersionManager.d.ts +407 -0
- package/dist/version/VersionManager.d.ts.map +1 -0
- package/dist/version/VersionManager.interface.d.ts +428 -0
- package/dist/version/VersionManager.interface.d.ts.map +1 -0
- package/dist/version/VersionManager.utils.d.ts +14 -0
- package/dist/version/VersionManager.utils.d.ts.map +1 -0
- package/dist/version/bulk-sync.d.ts +97 -0
- package/dist/version/bulk-sync.d.ts.map +1 -0
- package/dist/version/check-repository-updates.d.ts +53 -0
- package/dist/version/check-repository-updates.d.ts.map +1 -0
- package/dist/version/compact-changes.d.ts +45 -0
- package/dist/version/compact-changes.d.ts.map +1 -0
- package/dist/version/conflict.d.ts +75 -0
- package/dist/version/conflict.d.ts.map +1 -0
- package/dist/version/create_branch.d.ts +13 -0
- package/dist/version/create_branch.d.ts.map +1 -0
- package/dist/version/dependency-graph.d.ts +132 -0
- package/dist/version/dependency-graph.d.ts.map +1 -0
- package/dist/version/find_switch_branch_step.d.ts +53 -0
- package/dist/version/find_switch_branch_step.d.ts.map +1 -0
- package/dist/version/get-all-repository-sync-status.d.ts +58 -0
- package/dist/version/get-all-repository-sync-status.d.ts.map +1 -0
- package/dist/version/get-repository-sync-status.d.ts +74 -0
- package/dist/version/get-repository-sync-status.d.ts.map +1 -0
- package/dist/version/pull-repository.d.ts +99 -0
- package/dist/version/pull-repository.d.ts.map +1 -0
- package/dist/version/pull.d.ts +11 -0
- package/dist/version/pull.d.ts.map +1 -0
- package/dist/version/push-repository.d.ts +93 -0
- package/dist/version/push-repository.d.ts.map +1 -0
- package/dist/version/push.d.ts +11 -0
- package/dist/version/push.d.ts.map +1 -0
- package/dist/version/remove_branch.d.ts +8 -0
- package/dist/version/remove_branch.d.ts.map +1 -0
- package/dist/version/switch_branch_actions.d.ts +17 -0
- package/dist/version/switch_branch_actions.d.ts.map +1 -0
- package/dist/version/sync-repository.d.ts +57 -0
- package/dist/version/sync-repository.d.ts.map +1 -0
- package/dist/version/sync-type-utils.d.ts +145 -0
- package/dist/version/sync-type-utils.d.ts.map +1 -0
- package/dist/version/topological-sort.d.ts +70 -0
- package/dist/version/topological-sort.d.ts.map +1 -0
- package/dist/version/version.utils.d.ts +4 -0
- package/dist/version/version.utils.d.ts.map +1 -0
- package/package.json +4 -4
- package/README.md +0 -1
- package/dist/entity/@GraphEntity.d.ts +0 -8
- package/dist/entity/@GraphEntity.d.ts.map +0 -1
- package/dist/entity/GraphEntityBase.d.ts +0 -10
- package/dist/entity/GraphEntityBase.d.ts.map +0 -1
- package/dist/entity/graph_edge_entity.d.ts +0 -5
- package/dist/entity/graph_edge_entity.d.ts.map +0 -1
- package/dist/entity/transition-metadata.d.ts.map +0 -1
- package/dist/system/VersionManager.d.ts +0 -35
- package/dist/system/VersionManager.d.ts.map +0 -1
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { RxDBChange } from '../system/change.js';
|
|
2
|
+
/**
|
|
3
|
+
* 冲突信息
|
|
4
|
+
*
|
|
5
|
+
* 当本地未同步的变更与远程变更针对同一实体时产生冲突
|
|
6
|
+
*/
|
|
7
|
+
export interface Conflict {
|
|
8
|
+
/**
|
|
9
|
+
* 实体键:`${namespace}:${entity}:${entityId}`
|
|
10
|
+
*/
|
|
11
|
+
entityKey: string;
|
|
12
|
+
/**
|
|
13
|
+
* 本地变更
|
|
14
|
+
*/
|
|
15
|
+
local: RxDBChange;
|
|
16
|
+
/**
|
|
17
|
+
* 远程变更
|
|
18
|
+
*/
|
|
19
|
+
remote: RxDBChange;
|
|
20
|
+
/**
|
|
21
|
+
* 共同祖先数据(用于三方合并,可选)
|
|
22
|
+
*/
|
|
23
|
+
base?: Record<string, unknown>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 冲突解决结果
|
|
27
|
+
*/
|
|
28
|
+
export type ConflictResolution = {
|
|
29
|
+
type: 'KEEP_LOCAL';
|
|
30
|
+
} | {
|
|
31
|
+
type: 'KEEP_REMOTE';
|
|
32
|
+
} | {
|
|
33
|
+
type: 'MERGE';
|
|
34
|
+
merged: Record<string, unknown>;
|
|
35
|
+
} | {
|
|
36
|
+
type: 'DEFER';
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* 冲突解决器接口
|
|
40
|
+
*
|
|
41
|
+
* 可自定义实现,支持:
|
|
42
|
+
* - Last-Write-Wins(默认)
|
|
43
|
+
* - 字段级三方合并(类似 Git)
|
|
44
|
+
* - 交互式 UI 选择
|
|
45
|
+
*
|
|
46
|
+
* @example 自定义解决器
|
|
47
|
+
* ```typescript
|
|
48
|
+
* class MyResolver implements ConflictResolver {
|
|
49
|
+
* async resolve(conflict: Conflict): Promise<ConflictResolution> {
|
|
50
|
+
* // 显示 UI 让用户选择
|
|
51
|
+
* const choice = await showConflictDialog(conflict);
|
|
52
|
+
* return choice;
|
|
53
|
+
* }
|
|
54
|
+
* }
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export interface ConflictResolver {
|
|
58
|
+
/**
|
|
59
|
+
* 解决单个冲突
|
|
60
|
+
*
|
|
61
|
+
* @param conflict - 冲突信息
|
|
62
|
+
* @returns 冲突解决结果
|
|
63
|
+
*/
|
|
64
|
+
resolve(conflict: Conflict): Promise<ConflictResolution>;
|
|
65
|
+
/**
|
|
66
|
+
* 批量解决冲突(可选优化)
|
|
67
|
+
*
|
|
68
|
+
* 默认实现会逐个调用 resolve()
|
|
69
|
+
*
|
|
70
|
+
* @param conflicts - 冲突列表
|
|
71
|
+
* @returns 解决结果列表
|
|
72
|
+
*/
|
|
73
|
+
resolveAll?(conflicts: Conflict[]): Promise<ConflictResolution[]>;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=conflict.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflict.d.ts","sourceRoot":"","sources":["../../src/version/conflict.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,EAAE,UAAU,CAAC;IAElB;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;IAEnB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtB;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEzD;;;;;;;OAOG;IACH,UAAU,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;CACnE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { RxDBBranch } from '../system/branch.js';
|
|
2
|
+
import { RxDBChange } from '../system/change.js';
|
|
3
|
+
import { VersionManager } from './VersionManager.js';
|
|
4
|
+
/**
|
|
5
|
+
* 创建一个新分支
|
|
6
|
+
* @param version
|
|
7
|
+
* @param branchId
|
|
8
|
+
* @param fromChangeId
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
export declare const create_branch: (version: VersionManager, branchId: string, fromChangeId?: number) => Promise<RxDBBranch>;
|
|
12
|
+
export declare const get_current_branch_last_change: (version: VersionManager, currentBranchId?: string) => Promise<RxDBChange>;
|
|
13
|
+
//# sourceMappingURL=create_branch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create_branch.d.ts","sourceRoot":"","sources":["../../src/version/create_branch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAU,SAAS,cAAc,EAAE,UAAU,MAAM,EAAE,eAAe,MAAM,wBA4DnG,CAAC;AAGF,eAAO,MAAM,8BAA8B,GAAU,SAAS,cAAc,EAAE,kBAAkB,MAAM,wBAqBrG,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { EntityMetadata } from '../entity/metadata.interface.js';
|
|
2
|
+
/**
|
|
3
|
+
* Repository 标识符
|
|
4
|
+
*/
|
|
5
|
+
export interface RepositoryIdentifier {
|
|
6
|
+
/**
|
|
7
|
+
* 实体命名空间
|
|
8
|
+
* @example "public"
|
|
9
|
+
*/
|
|
10
|
+
namespace: string;
|
|
11
|
+
/**
|
|
12
|
+
* 实体名称
|
|
13
|
+
* @example "Todo"
|
|
14
|
+
*/
|
|
15
|
+
entity: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Repository 依赖关系
|
|
19
|
+
*/
|
|
20
|
+
export interface RepositoryDependency {
|
|
21
|
+
/**
|
|
22
|
+
* 当前 repository
|
|
23
|
+
*/
|
|
24
|
+
repository: RepositoryIdentifier;
|
|
25
|
+
/**
|
|
26
|
+
* 依赖的 repository(外键指向的实体)
|
|
27
|
+
* Pull 时必须先同步这些实体
|
|
28
|
+
*/
|
|
29
|
+
dependsOn: RepositoryIdentifier[];
|
|
30
|
+
/**
|
|
31
|
+
* 被依赖的 repository(指向当前实体的外键)
|
|
32
|
+
* Push 时必须等待这些实体同步完成
|
|
33
|
+
*/
|
|
34
|
+
requiredBy: RepositoryIdentifier[];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 依赖图
|
|
38
|
+
* Key: `{namespace}:{entity}`
|
|
39
|
+
*/
|
|
40
|
+
export type DependencyGraph = Map<string, RepositoryDependency>;
|
|
41
|
+
/**
|
|
42
|
+
* 构建依赖图
|
|
43
|
+
*
|
|
44
|
+
* @param entities - 实体元数据数组
|
|
45
|
+
* @returns 依赖图
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* const entities = entityManager.getEntities();
|
|
50
|
+
* const graph = buildDependencyGraph(entities);
|
|
51
|
+
*
|
|
52
|
+
* // 查询 Todo 的依赖
|
|
53
|
+
* const todoDep = graph.get('public:Todo');
|
|
54
|
+
* console.log(todoDep.dependsOn); // [{ namespace: 'public', entity: 'User' }]
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare function buildDependencyGraph(entities: EntityMetadata[]): DependencyGraph;
|
|
58
|
+
/**
|
|
59
|
+
* 检测循环依赖
|
|
60
|
+
*
|
|
61
|
+
* 注意:自引用(self-reference)不算循环依赖,因为树形结构是合法的
|
|
62
|
+
* 例如:RxDBBranch -> RxDBBranch (parent-child 关系)
|
|
63
|
+
*
|
|
64
|
+
* @param graph - 依赖图
|
|
65
|
+
* @throws {RxDBError} 如果检测到循环依赖
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```ts
|
|
69
|
+
* // 抛出错误示例:
|
|
70
|
+
* // User -> Profile -> User (循环依赖)
|
|
71
|
+
* detectCycles(graph); // 抛出 RxDBError
|
|
72
|
+
*
|
|
73
|
+
* // 允许的情况:
|
|
74
|
+
* // RxDBBranch -> RxDBBranch (自引用,树形结构)
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export declare function detectCycles(graph: DependencyGraph): void;
|
|
78
|
+
/**
|
|
79
|
+
* 获取 repository 的所有依赖(包括间接依赖)
|
|
80
|
+
*
|
|
81
|
+
* 注意:自引用会被跳过,避免无限递归
|
|
82
|
+
*
|
|
83
|
+
* @param namespace - 命名空间
|
|
84
|
+
* @param entity - 实体名称
|
|
85
|
+
* @param graph - 依赖图
|
|
86
|
+
* @returns 所有依赖的 repository(拓扑排序,父在前)
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```ts
|
|
90
|
+
* // Comment -> Todo -> User
|
|
91
|
+
* const deps = getAllDependencies('public', 'Comment', graph);
|
|
92
|
+
* // 返回: [User, Todo, Comment]
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export declare function getAllDependencies(namespace: string, entity: string, graph: DependencyGraph): RepositoryIdentifier[];
|
|
96
|
+
/**
|
|
97
|
+
* 获取 repository 的所有被依赖方(包括间接被依赖)
|
|
98
|
+
*
|
|
99
|
+
* 注意:自引用会被跳过,避免无限递归
|
|
100
|
+
*
|
|
101
|
+
* @param namespace - 命名空间
|
|
102
|
+
* @param entity - 实体名称
|
|
103
|
+
* @param graph - 依赖图
|
|
104
|
+
* @returns 所有被依赖的 repository(拓扑排序,子在前)
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```ts
|
|
108
|
+
* // User <- Todo <- Comment
|
|
109
|
+
* const requiredBy = getAllRequiredBy('public', 'User', graph);
|
|
110
|
+
* // 返回: [Comment, Todo, User]
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
export declare function getAllRequiredBy(namespace: string, entity: string, graph: DependencyGraph): RepositoryIdentifier[];
|
|
114
|
+
/**
|
|
115
|
+
* 获取 repository 的直接父实体(一层依赖)
|
|
116
|
+
*
|
|
117
|
+
* @param namespace - 命名空间
|
|
118
|
+
* @param entity - 实体名称
|
|
119
|
+
* @param graph - 依赖图
|
|
120
|
+
* @returns 直接父实体列表
|
|
121
|
+
*/
|
|
122
|
+
export declare function getDirectParents(namespace: string, entity: string, graph: DependencyGraph): RepositoryIdentifier[];
|
|
123
|
+
/**
|
|
124
|
+
* 获取 repository 的直接子实体(一层被依赖)
|
|
125
|
+
*
|
|
126
|
+
* @param namespace - 命名空间
|
|
127
|
+
* @param entity - 实体名称
|
|
128
|
+
* @param graph - 依赖图
|
|
129
|
+
* @returns 直接子实体列表
|
|
130
|
+
*/
|
|
131
|
+
export declare function getDirectChildren(namespace: string, entity: string, graph: DependencyGraph): RepositoryIdentifier[];
|
|
132
|
+
//# sourceMappingURL=dependency-graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-graph.d.ts","sourceRoot":"","sources":["../../src/version/dependency-graph.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAGtE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,UAAU,EAAE,oBAAoB,CAAC;IAEjC;;;OAGG;IACH,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAElC;;;OAGG;IACH,UAAU,EAAE,oBAAoB,EAAE,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;AAEhE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,eAAe,CA8ChF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAyCzD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,oBAAoB,EAAE,CAmCpH;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,oBAAoB,EAAE,CAmClH;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,oBAAoB,EAAE,CAOlH;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,oBAAoB,EAAE,CAOnH"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { RxDBBranch } from '../system/branch.js';
|
|
2
|
+
/**
|
|
3
|
+
* 分支切换步骤
|
|
4
|
+
*/
|
|
5
|
+
export interface SwitchBranchStep {
|
|
6
|
+
/**
|
|
7
|
+
* 分支对象
|
|
8
|
+
*/
|
|
9
|
+
branch: RxDBBranch;
|
|
10
|
+
/**
|
|
11
|
+
* 开始变更 ID
|
|
12
|
+
*/
|
|
13
|
+
fromChangeId: number;
|
|
14
|
+
/**
|
|
15
|
+
* 目标变更 ID
|
|
16
|
+
*/
|
|
17
|
+
toChangeId: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 查找分支切换路径的参数
|
|
21
|
+
*/
|
|
22
|
+
export interface FindBranchPathOptions {
|
|
23
|
+
/**
|
|
24
|
+
* 所需分支列表
|
|
25
|
+
*/
|
|
26
|
+
branches: RxDBBranch[];
|
|
27
|
+
/**
|
|
28
|
+
* 当前分支
|
|
29
|
+
*/
|
|
30
|
+
currentBranch: RxDBBranch;
|
|
31
|
+
/**
|
|
32
|
+
* 当前分支的变更 ID
|
|
33
|
+
*/
|
|
34
|
+
currentChangeId: number | null;
|
|
35
|
+
/**
|
|
36
|
+
* 目标分支
|
|
37
|
+
*/
|
|
38
|
+
nextBranch: RxDBBranch;
|
|
39
|
+
/**
|
|
40
|
+
* 目标分支的变更 ID
|
|
41
|
+
*/
|
|
42
|
+
nextChangeId: number | null;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 计算出树的两个节点之间的切换路径
|
|
46
|
+
* 规则如下:
|
|
47
|
+
* 1, 如果两个树节点有共同的祖先节点,则路径为从当前节点到共同祖先节点,再到目标节点
|
|
48
|
+
* 2, 如果没有共同祖先节点,则路径为从当前节点到根节点,再到目标节点
|
|
49
|
+
* 3, 需要计算出路径内每个节点需要变更过程,也就是 fromChangeId -> toChangeId
|
|
50
|
+
* 4, 由于 changeId 在不同分支的变化都是是递增的, 所以如果逆向还原数据那么 fromChangeId 会大于 toChangeId, 正向应用数据则相反
|
|
51
|
+
*/
|
|
52
|
+
export declare const find_switch_branch_step: (options: FindBranchPathOptions) => SwitchBranchStep[];
|
|
53
|
+
//# sourceMappingURL=find_switch_branch_step.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find_switch_branch_step.d.ts","sourceRoot":"","sources":["../../src/version/find_switch_branch_step.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;IACnB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,QAAQ,EAAE,UAAU,EAAE,CAAC;IAEvB;;OAEG;IACH,aAAa,EAAE,UAAU,CAAC;IAE1B;;OAEG;IACH,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB;;OAEG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAAI,SAAS,qBAAqB,KAAG,gBAAgB,EA2LxF,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { RxDB } from '../RxDB.js';
|
|
2
|
+
import { RepositorySyncStatus, SyncTypeValue } from './get-repository-sync-status.js';
|
|
3
|
+
/**
|
|
4
|
+
* getAllRepositorySyncStatus 的过滤选项
|
|
5
|
+
*/
|
|
6
|
+
export interface GetAllRepositorySyncStatusFilter {
|
|
7
|
+
/**
|
|
8
|
+
* 按同步类型过滤
|
|
9
|
+
* 如果提供,则仅返回这些同步类型的仓库
|
|
10
|
+
*/
|
|
11
|
+
syncType?: SyncTypeValue[];
|
|
12
|
+
/**
|
|
13
|
+
* 按启用状态过滤
|
|
14
|
+
* 如果为 true,则仅返回启用的仓库
|
|
15
|
+
* 如果为 false,则仅返回禁用的仓库
|
|
16
|
+
* 如果为 undefined,则返回全部
|
|
17
|
+
*/
|
|
18
|
+
enabled?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* 按待处理变更过滤
|
|
21
|
+
* 如果为 true,则仅返回 pushableCount > 0 或 pullableCount > 0 的仓库
|
|
22
|
+
* 如果为 false,则仅返回没有待处理变更的仓库
|
|
23
|
+
* 如果为 undefined,则返回全部
|
|
24
|
+
*/
|
|
25
|
+
hasPendingChanges?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 获取所有仓库的同步状态
|
|
29
|
+
*
|
|
30
|
+
* 遍历所有注册实体并查询它们的同步状态,支持按 syncType、启用状态和待处理变更进行过滤。
|
|
31
|
+
*
|
|
32
|
+
* @param rxdb - RxDB 实例
|
|
33
|
+
* @param filter - 可选的过滤条件
|
|
34
|
+
* @returns 仓库同步状态数组
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* // 获取所有仓库状态
|
|
39
|
+
* const statuses = await getAllRepositorySyncStatus(rxdb);
|
|
40
|
+
*
|
|
41
|
+
* // 仅获取启用的仓库
|
|
42
|
+
* const statuses = await getAllRepositorySyncStatus(rxdb, {
|
|
43
|
+
* enabled: true
|
|
44
|
+
* });
|
|
45
|
+
*
|
|
46
|
+
* // 仅获取有待处理变更的仓库
|
|
47
|
+
* const statuses = await getAllRepositorySyncStatus(rxdb, {
|
|
48
|
+
* hasPendingChanges: true
|
|
49
|
+
* });
|
|
50
|
+
*
|
|
51
|
+
* // 仅获取 full/remote 同步类型的仓库
|
|
52
|
+
* const statuses = await getAllRepositorySyncStatus(rxdb, {
|
|
53
|
+
* syncType: ['full', 'remote']
|
|
54
|
+
* });
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare function getAllRepositorySyncStatus(rxdb: RxDB, filter?: GetAllRepositorySyncStatusFilter): Promise<RepositorySyncStatus[]>;
|
|
58
|
+
//# sourceMappingURL=get-all-repository-sync-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-all-repository-sync-status.d.ts","sourceRoot":"","sources":["../../src/version/get-all-repository-sync-status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAC/C;;;OAGG;IACH,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAE3B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,gCAAgC,GACxC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAyCjC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { RxDB } from '../RxDB.js';
|
|
2
|
+
/**
|
|
3
|
+
* 仓库标识
|
|
4
|
+
*/
|
|
5
|
+
export interface RepositoryIdentifier {
|
|
6
|
+
namespace: string;
|
|
7
|
+
entity: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 同步类型的取值
|
|
11
|
+
*/
|
|
12
|
+
export type SyncTypeValue = 'full' | 'remote' | 'local' | 'none';
|
|
13
|
+
/**
|
|
14
|
+
* 仓库同步状态
|
|
15
|
+
*/
|
|
16
|
+
export interface RepositorySyncStatus {
|
|
17
|
+
/**
|
|
18
|
+
* 仓库标识
|
|
19
|
+
*/
|
|
20
|
+
repository: RepositoryIdentifier;
|
|
21
|
+
/**
|
|
22
|
+
* 分支 ID
|
|
23
|
+
*/
|
|
24
|
+
branchId: string;
|
|
25
|
+
/**
|
|
26
|
+
* 同步类型
|
|
27
|
+
*/
|
|
28
|
+
syncType: SyncTypeValue;
|
|
29
|
+
/**
|
|
30
|
+
* 是否启用同步
|
|
31
|
+
*/
|
|
32
|
+
enabled: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* 最后一次推送的 changeId
|
|
35
|
+
*/
|
|
36
|
+
lastPushedChangeId: number | null;
|
|
37
|
+
/**
|
|
38
|
+
* 最后一次推送时间戳
|
|
39
|
+
*/
|
|
40
|
+
lastPushedAt: Date | null;
|
|
41
|
+
/**
|
|
42
|
+
* 最后一次拉取时间戳
|
|
43
|
+
*/
|
|
44
|
+
lastPulledAt: Date | null;
|
|
45
|
+
/**
|
|
46
|
+
* 最后一次拉取到的远端 changeId
|
|
47
|
+
*/
|
|
48
|
+
lastPullRemoteChangeId: number | null;
|
|
49
|
+
/**
|
|
50
|
+
* 待推送的变更数量
|
|
51
|
+
*/
|
|
52
|
+
pushableCount: number;
|
|
53
|
+
/**
|
|
54
|
+
* 可供拉取的变更数量
|
|
55
|
+
*/
|
|
56
|
+
pullableCount: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* 获取单个仓库的同步状态
|
|
60
|
+
*
|
|
61
|
+
* @param rxdb - RxDB 实例
|
|
62
|
+
* @param namespace - 实体命名空间
|
|
63
|
+
* @param entity - 实体名称
|
|
64
|
+
* @returns 仓库同步状态
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* const status = await getRepositorySyncStatus(rxdb, 'public', 'Todo');
|
|
69
|
+
* console.log(`Sync type: ${status.syncType}`);
|
|
70
|
+
* console.log(`Pushable: ${status.pushableCount}, Pullable: ${status.pullableCount}`);
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare function getRepositorySyncStatus(rxdb: RxDB, namespace: string, entity: string): Promise<RepositorySyncStatus>;
|
|
74
|
+
//# sourceMappingURL=get-repository-sync-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-repository-sync-status.d.ts","sourceRoot":"","sources":["../../src/version/get-repository-sync-status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAOvC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,UAAU,EAAE,oBAAoB,CAAC;IAEjC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,aAAa,CAAC;IAExB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAElC;;OAEG;IACH,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;IAE1B;;OAEG;IACH,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;IAE1B;;OAEG;IACH,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtC;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAqED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,oBAAoB,CAAC,CAiE/B"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { VersionManager } from './VersionManager.js';
|
|
2
|
+
import { RepositoryIdentifier } from './dependency-graph.js';
|
|
3
|
+
/**
|
|
4
|
+
* 拉取仓库选项
|
|
5
|
+
*/
|
|
6
|
+
export interface PullRepositoryOptions {
|
|
7
|
+
/**
|
|
8
|
+
* 每次请求获取的最大变更数量
|
|
9
|
+
* @default 1000
|
|
10
|
+
*/
|
|
11
|
+
limit?: number;
|
|
12
|
+
/**
|
|
13
|
+
* 是否通过多次请求获取所有变更
|
|
14
|
+
* @default false
|
|
15
|
+
*/
|
|
16
|
+
fetchAll?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* 是否包含相关实体(级联同步)
|
|
19
|
+
*
|
|
20
|
+
* 当为 true 时:
|
|
21
|
+
* - 自动拉取所有父实体(外键引用)
|
|
22
|
+
* - 遵循拓扑顺序:父 -> 子
|
|
23
|
+
* - 示例:拉取 Post 时会自动拉取 User
|
|
24
|
+
*
|
|
25
|
+
* 当为 false 时:
|
|
26
|
+
* - 仅同步指定仓库
|
|
27
|
+
* - 如果父实体未同步,可能会导致外键约束错误
|
|
28
|
+
*
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
31
|
+
includeRelated?: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 仓库拉取结果
|
|
35
|
+
*/
|
|
36
|
+
export interface PullRepositoryResult {
|
|
37
|
+
/**
|
|
38
|
+
* 仓库标识
|
|
39
|
+
*/
|
|
40
|
+
repository: RepositoryIdentifier;
|
|
41
|
+
/**
|
|
42
|
+
* 拉取操作是否成功
|
|
43
|
+
* @default true
|
|
44
|
+
*/
|
|
45
|
+
success?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* 拉取失败时的错误
|
|
48
|
+
*/
|
|
49
|
+
error?: Error;
|
|
50
|
+
/**
|
|
51
|
+
* 如果仓库因依赖失败而被跳过,则说明跳过原因
|
|
52
|
+
*/
|
|
53
|
+
skipped?: string;
|
|
54
|
+
/**
|
|
55
|
+
* 从远端拉取的变更数量(压缩前)
|
|
56
|
+
*/
|
|
57
|
+
pulled: number;
|
|
58
|
+
/**
|
|
59
|
+
* 被压缩/丢弃的变更数量
|
|
60
|
+
* 示例:INSERT -> DELETE 的链式变更会被丢弃
|
|
61
|
+
*/
|
|
62
|
+
compacted: number;
|
|
63
|
+
/**
|
|
64
|
+
* 成功应用到本地的变更数量(压缩后)
|
|
65
|
+
*/
|
|
66
|
+
applied: number;
|
|
67
|
+
/**
|
|
68
|
+
* 是否还有更多变更可供拉取
|
|
69
|
+
*/
|
|
70
|
+
hasMore: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* 相关仓库的拉取结果(当 includeRelated=true 时)
|
|
73
|
+
*/
|
|
74
|
+
relatedResults?: PullRepositoryResult[];
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* 为单个仓库拉取变更
|
|
78
|
+
*
|
|
79
|
+
* @param vm - VersionManager 实例
|
|
80
|
+
* @param namespace - 实体命名空间
|
|
81
|
+
* @param entity - 实体名称
|
|
82
|
+
* @param options - 拉取选项
|
|
83
|
+
* @returns 拉取结果
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```ts
|
|
87
|
+
* // 在不进行级联的情况下拉取 Todo 仓库
|
|
88
|
+
* const result = await pullRepository(vm, 'public', 'Todo', {
|
|
89
|
+
* includeRelated: false
|
|
90
|
+
* });
|
|
91
|
+
*
|
|
92
|
+
* // 拉取 Todo 及其所有依赖项(如 User)
|
|
93
|
+
* const result = await pullRepository(vm, 'public', 'Todo', {
|
|
94
|
+
* includeRelated: true
|
|
95
|
+
* });
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export declare function pullRepository(vm: VersionManager, namespace: string, entity: string, options?: PullRepositoryOptions): Promise<PullRepositoryResult>;
|
|
99
|
+
//# sourceMappingURL=pull-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull-repository.d.ts","sourceRoot":"","sources":["../../src/version/pull-repository.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAIxF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;;;;;;;;OAaG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,UAAU,EAAE,oBAAoB,CAAC;IAEjC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,cAAc,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACzC;AAWD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,cAAc,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,oBAAoB,CAAC,CAwB/B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PullOptions, PullResult } from './VersionManager.interface.js';
|
|
2
|
+
import { VersionManager } from './VersionManager.js';
|
|
3
|
+
/**
|
|
4
|
+
* 执行 Pull 操作
|
|
5
|
+
*
|
|
6
|
+
* @param vm - VersionManager 实例
|
|
7
|
+
* @param options - Pull 选项
|
|
8
|
+
* @returns Pull 结果
|
|
9
|
+
*/
|
|
10
|
+
export declare function pull(vm: VersionManager, options?: PullOptions): Promise<PullResult>;
|
|
11
|
+
//# sourceMappingURL=pull.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/version/pull.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAsB,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA8DzF"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { RepositoryIdentifier } from './dependency-graph.js';
|
|
2
|
+
import { VersionManager } from './VersionManager.js';
|
|
3
|
+
/**
|
|
4
|
+
* 推送仓库选项
|
|
5
|
+
*/
|
|
6
|
+
export interface PushRepositoryOptions {
|
|
7
|
+
/**
|
|
8
|
+
* 每批次推送的最大变更数量
|
|
9
|
+
* @default 1000
|
|
10
|
+
*/
|
|
11
|
+
batchSize?: number;
|
|
12
|
+
/**
|
|
13
|
+
* 是否包含相关实体(级联同步)
|
|
14
|
+
*
|
|
15
|
+
* 当为 true 时:
|
|
16
|
+
* - 自动推送所有子实体(引用当前实体的实体)
|
|
17
|
+
* - 遵循反向拓扑顺序:子 -> 父
|
|
18
|
+
* - 示例:推送 User 时会自动推送 Post
|
|
19
|
+
*
|
|
20
|
+
* 当为 false 时:
|
|
21
|
+
* - 仅同步指定仓库
|
|
22
|
+
* - 可能会导致远端数据不完整
|
|
23
|
+
*
|
|
24
|
+
* @default true
|
|
25
|
+
*/
|
|
26
|
+
includeRelated?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 仓库推送结果
|
|
30
|
+
*/
|
|
31
|
+
export interface PushRepositoryResult {
|
|
32
|
+
/**
|
|
33
|
+
* 仓库标识
|
|
34
|
+
*/
|
|
35
|
+
repository: RepositoryIdentifier;
|
|
36
|
+
/**
|
|
37
|
+
* 推送操作是否成功
|
|
38
|
+
* @default true
|
|
39
|
+
*/
|
|
40
|
+
success?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* 推送失败时的错误
|
|
43
|
+
*/
|
|
44
|
+
error?: Error;
|
|
45
|
+
/**
|
|
46
|
+
* 如果仓库因依赖失败而被跳过,则说明跳过原因
|
|
47
|
+
*/
|
|
48
|
+
skipped?: string;
|
|
49
|
+
/**
|
|
50
|
+
* 成功推送到远端的变更数量(压缩/合并后)
|
|
51
|
+
*/
|
|
52
|
+
pushed: number;
|
|
53
|
+
/**
|
|
54
|
+
* 推送失败的变更数量
|
|
55
|
+
*/
|
|
56
|
+
failed: number;
|
|
57
|
+
/**
|
|
58
|
+
* 被压缩/丢弃的变更数量
|
|
59
|
+
*/
|
|
60
|
+
compacted: number;
|
|
61
|
+
/**
|
|
62
|
+
* 原始未推送变更数量(压缩前)
|
|
63
|
+
*/
|
|
64
|
+
originalCount: number;
|
|
65
|
+
/**
|
|
66
|
+
* 相关仓库的推送结果(当 includeRelated=true 时)
|
|
67
|
+
*/
|
|
68
|
+
relatedResults?: PushRepositoryResult[];
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 为单个仓库推送变更
|
|
72
|
+
*
|
|
73
|
+
* @param vm - VersionManager 实例
|
|
74
|
+
* @param namespace - 实体命名空间
|
|
75
|
+
* @param entity - 实体名称
|
|
76
|
+
* @param options - 推送选项
|
|
77
|
+
* @returns 推送结果
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```ts
|
|
81
|
+
* // 在不进行级联的情况下推送 Todo 仓库
|
|
82
|
+
* const result = await pushRepository(vm, 'public', 'Todo', {
|
|
83
|
+
* includeRelated: false
|
|
84
|
+
* });
|
|
85
|
+
*
|
|
86
|
+
* // 推送 Todo 以及所有依赖它的实体(如 Comment)
|
|
87
|
+
* const result = await pushRepository(vm, 'public', 'Todo', {
|
|
88
|
+
* includeRelated: true
|
|
89
|
+
* });
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export declare function pushRepository(vm: VersionManager, namespace: string, entity: string, options?: PushRepositoryOptions): Promise<PushRepositoryResult>;
|
|
93
|
+
//# sourceMappingURL=push-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push-repository.d.ts","sourceRoot":"","sources":["../../src/version/push-repository.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAIxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;;;;;OAaG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,UAAU,EAAE,oBAAoB,CAAC;IAEjC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,cAAc,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACzC;AAUD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,cAAc,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,oBAAoB,CAAC,CAyB/B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PushOptions, PushResult } from './VersionManager.interface.js';
|
|
2
|
+
import { VersionManager } from './VersionManager.js';
|
|
3
|
+
/**
|
|
4
|
+
* 执行 Push 操作
|
|
5
|
+
*
|
|
6
|
+
* @param vm - VersionManager 实例
|
|
7
|
+
* @param options - Push 选项
|
|
8
|
+
* @returns Push 结果
|
|
9
|
+
*/
|
|
10
|
+
export declare function push(vm: VersionManager, options?: PushOptions): Promise<PushResult>;
|
|
11
|
+
//# sourceMappingURL=push.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/version/push.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAsB,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA8DzF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove_branch.d.ts","sourceRoot":"","sources":["../../src/version/remove_branch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAU,SAAS,cAAc,EAAE,UAAU,MAAM,kBAkD5E,CAAC"}
|