@aiao/rxdb 0.0.6 → 0.0.8

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.
Files changed (176) hide show
  1. package/dist/RxDB.d.ts +119 -18
  2. package/dist/RxDB.d.ts.map +1 -1
  3. package/dist/entity/@TreeEntity.d.ts.map +1 -1
  4. package/dist/entity/EntityBase.d.ts +58 -10
  5. package/dist/entity/EntityBase.d.ts.map +1 -1
  6. package/dist/entity/EntityManager.d.ts +16 -5
  7. package/dist/entity/EntityManager.d.ts.map +1 -1
  8. package/dist/entity/EntityStatus.d.ts +145 -87
  9. package/dist/entity/EntityStatus.d.ts.map +1 -1
  10. package/dist/entity/EntityStatus.interface.d.ts +59 -0
  11. package/dist/entity/EntityStatus.interface.d.ts.map +1 -0
  12. package/dist/entity/TreeEntityBase.d.ts +31 -4
  13. package/dist/entity/TreeEntityBase.d.ts.map +1 -1
  14. package/dist/entity/entity.interface.d.ts +16 -15
  15. package/dist/entity/entity.interface.d.ts.map +1 -1
  16. package/dist/entity/entity.utils.d.ts +21 -0
  17. package/dist/entity/entity.utils.d.ts.map +1 -1
  18. package/dist/entity/many_to_many_entity.d.ts.map +1 -1
  19. package/dist/entity/metadata-options.interface.d.ts +276 -39
  20. package/dist/entity/metadata-options.interface.d.ts.map +1 -1
  21. package/dist/entity/{transition-metadata.d.ts → metadata-transition.d.ts} +1 -1
  22. package/dist/entity/metadata-transition.d.ts.map +1 -0
  23. package/dist/entity/metadata.interface.d.ts +6 -0
  24. package/dist/entity/metadata.interface.d.ts.map +1 -1
  25. package/dist/entity/metadata_cascade_default.d.ts +54 -0
  26. package/dist/entity/metadata_cascade_default.d.ts.map +1 -0
  27. package/dist/entity/proxy.d.ts.map +1 -1
  28. package/dist/entity/relation_helper.d.ts.map +1 -1
  29. package/dist/entity/tree-entity.interface.d.ts +5 -0
  30. package/dist/entity/tree-entity.interface.d.ts.map +1 -0
  31. package/dist/gateway/RxDBTabsGateway.d.ts +52 -0
  32. package/dist/gateway/RxDBTabsGateway.d.ts.map +1 -0
  33. package/dist/gateway/gateway.interface.d.ts +43 -0
  34. package/dist/gateway/gateway.interface.d.ts.map +1 -0
  35. package/dist/index.d.ts +17 -12
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +5791 -1896
  38. package/dist/query/entity_type_dependencies.d.ts +3 -2
  39. package/dist/query/entity_type_dependencies.d.ts.map +1 -1
  40. package/dist/query/merge-update-basic.d.ts +30 -0
  41. package/dist/query/merge-update-basic.d.ts.map +1 -0
  42. package/dist/query/merge-update-tree.d.ts +86 -0
  43. package/dist/query/merge-update-tree.d.ts.map +1 -0
  44. package/dist/query/merge-update.utils.d.ts +52 -0
  45. package/dist/query/merge-update.utils.d.ts.map +1 -0
  46. package/dist/query/merge_create.d.ts +2 -2
  47. package/dist/query/merge_create.d.ts.map +1 -1
  48. package/dist/query/merge_remove.d.ts +2 -15
  49. package/dist/query/merge_remove.d.ts.map +1 -1
  50. package/dist/query/merge_update.d.ts +2 -2
  51. package/dist/query/merge_update.d.ts.map +1 -1
  52. package/dist/query/need_refresh_create.d.ts +4 -4
  53. package/dist/query/need_refresh_create.d.ts.map +1 -1
  54. package/dist/query/need_refresh_remove.d.ts +2 -2
  55. package/dist/query/need_refresh_remove.d.ts.map +1 -1
  56. package/dist/query/need_refresh_update.d.ts +4 -4
  57. package/dist/query/need_refresh_update.d.ts.map +1 -1
  58. package/dist/query/query-matching.utils.d.ts +18 -2
  59. package/dist/query/query-matching.utils.d.ts.map +1 -1
  60. package/dist/query/query-relation.utils.d.ts +44 -0
  61. package/dist/query/query-relation.utils.d.ts.map +1 -0
  62. package/dist/query/query-rules-builder.d.ts +68 -0
  63. package/dist/query/query-rules-builder.d.ts.map +1 -0
  64. package/dist/query/query-tree.utils.d.ts +54 -0
  65. package/dist/query/query-tree.utils.d.ts.map +1 -0
  66. package/dist/repository/QueryManager.d.ts +23 -1
  67. package/dist/repository/QueryManager.d.ts.map +1 -1
  68. package/dist/repository/QueryTask.d.ts +42 -5
  69. package/dist/repository/QueryTask.d.ts.map +1 -1
  70. package/dist/repository/Repository.d.ts +24 -35
  71. package/dist/repository/Repository.d.ts.map +1 -1
  72. package/dist/repository/RepositoryBase.d.ts +5 -3
  73. package/dist/repository/RepositoryBase.d.ts.map +1 -1
  74. package/dist/repository/TreeRepository.d.ts +28 -1
  75. package/dist/repository/TreeRepository.d.ts.map +1 -1
  76. package/dist/repository/fingerprint.utils.d.ts +28 -0
  77. package/dist/repository/fingerprint.utils.d.ts.map +1 -0
  78. package/dist/repository/query-options.interface.d.ts +50 -19
  79. package/dist/repository/query-options.interface.d.ts.map +1 -1
  80. package/dist/repository/query.interface.d.ts +70 -25
  81. package/dist/repository/query.interface.d.ts.map +1 -1
  82. package/dist/repository/relation-query.interface.d.ts +19 -0
  83. package/dist/repository/relation-query.interface.d.ts.map +1 -1
  84. package/dist/repository/repository.interface.d.ts +5 -8
  85. package/dist/repository/repository.interface.d.ts.map +1 -1
  86. package/dist/repository/tree-repository.interface.d.ts +29 -2
  87. package/dist/repository/tree-repository.interface.d.ts.map +1 -1
  88. package/dist/rxdb-adapter.d.ts +96 -14
  89. package/dist/rxdb-adapter.d.ts.map +1 -1
  90. package/dist/rxdb-events.d.ts +316 -172
  91. package/dist/rxdb-events.d.ts.map +1 -1
  92. package/dist/rxdb-plugin.d.ts +2 -2
  93. package/dist/rxdb-plugin.d.ts.map +1 -1
  94. package/dist/rxdb-utils.d.ts +15 -8
  95. package/dist/rxdb-utils.d.ts.map +1 -1
  96. package/dist/rxdb.interface.d.ts +4 -0
  97. package/dist/rxdb.interface.d.ts.map +1 -1
  98. package/dist/rxdb.private.d.ts +5 -0
  99. package/dist/rxdb.private.d.ts.map +1 -1
  100. package/dist/schema/SchemaManager.d.ts +1 -0
  101. package/dist/schema/SchemaManager.d.ts.map +1 -1
  102. package/dist/system/branch.d.ts +124 -7
  103. package/dist/system/branch.d.ts.map +1 -1
  104. package/dist/system/change.d.ts +605 -30
  105. package/dist/system/change.d.ts.map +1 -1
  106. package/dist/system/migration.d.ts +61 -11
  107. package/dist/system/migration.d.ts.map +1 -1
  108. package/dist/system/repository-sync.d.ts +95 -0
  109. package/dist/system/repository-sync.d.ts.map +1 -0
  110. package/dist/system/system.interface.d.ts +25 -0
  111. package/dist/system/system.interface.d.ts.map +1 -0
  112. package/dist/system/types.d.ts +233 -120
  113. package/dist/system/types.d.ts.map +1 -1
  114. package/dist/system/types.local.d.ts +156 -0
  115. package/dist/system/types.local.d.ts.map +1 -0
  116. package/dist/system/types.remote.d.ts +103 -0
  117. package/dist/system/types.remote.d.ts.map +1 -0
  118. package/dist/version/HistoryManager.d.ts +238 -0
  119. package/dist/version/HistoryManager.d.ts.map +1 -0
  120. package/dist/version/LWWConflictResolver.d.ts +41 -0
  121. package/dist/version/LWWConflictResolver.d.ts.map +1 -0
  122. package/dist/version/VersionManager.d.ts +407 -0
  123. package/dist/version/VersionManager.d.ts.map +1 -0
  124. package/dist/version/VersionManager.interface.d.ts +428 -0
  125. package/dist/version/VersionManager.interface.d.ts.map +1 -0
  126. package/dist/version/VersionManager.utils.d.ts +14 -0
  127. package/dist/version/VersionManager.utils.d.ts.map +1 -0
  128. package/dist/version/bulk-sync.d.ts +97 -0
  129. package/dist/version/bulk-sync.d.ts.map +1 -0
  130. package/dist/version/check-repository-updates.d.ts +53 -0
  131. package/dist/version/check-repository-updates.d.ts.map +1 -0
  132. package/dist/version/compact-changes.d.ts +45 -0
  133. package/dist/version/compact-changes.d.ts.map +1 -0
  134. package/dist/version/conflict.d.ts +75 -0
  135. package/dist/version/conflict.d.ts.map +1 -0
  136. package/dist/version/create_branch.d.ts +13 -0
  137. package/dist/version/create_branch.d.ts.map +1 -0
  138. package/dist/version/dependency-graph.d.ts +132 -0
  139. package/dist/version/dependency-graph.d.ts.map +1 -0
  140. package/dist/version/find_switch_branch_step.d.ts +53 -0
  141. package/dist/version/find_switch_branch_step.d.ts.map +1 -0
  142. package/dist/version/get-all-repository-sync-status.d.ts +58 -0
  143. package/dist/version/get-all-repository-sync-status.d.ts.map +1 -0
  144. package/dist/version/get-repository-sync-status.d.ts +74 -0
  145. package/dist/version/get-repository-sync-status.d.ts.map +1 -0
  146. package/dist/version/pull-repository.d.ts +99 -0
  147. package/dist/version/pull-repository.d.ts.map +1 -0
  148. package/dist/version/pull.d.ts +11 -0
  149. package/dist/version/pull.d.ts.map +1 -0
  150. package/dist/version/push-repository.d.ts +93 -0
  151. package/dist/version/push-repository.d.ts.map +1 -0
  152. package/dist/version/push.d.ts +11 -0
  153. package/dist/version/push.d.ts.map +1 -0
  154. package/dist/version/remove_branch.d.ts +8 -0
  155. package/dist/version/remove_branch.d.ts.map +1 -0
  156. package/dist/version/switch_branch_actions.d.ts +17 -0
  157. package/dist/version/switch_branch_actions.d.ts.map +1 -0
  158. package/dist/version/sync-repository.d.ts +57 -0
  159. package/dist/version/sync-repository.d.ts.map +1 -0
  160. package/dist/version/sync-type-utils.d.ts +145 -0
  161. package/dist/version/sync-type-utils.d.ts.map +1 -0
  162. package/dist/version/topological-sort.d.ts +70 -0
  163. package/dist/version/topological-sort.d.ts.map +1 -0
  164. package/dist/version/version.utils.d.ts +4 -0
  165. package/dist/version/version.utils.d.ts.map +1 -0
  166. package/package.json +4 -4
  167. package/README.md +0 -1
  168. package/dist/entity/@GraphEntity.d.ts +0 -8
  169. package/dist/entity/@GraphEntity.d.ts.map +0 -1
  170. package/dist/entity/GraphEntityBase.d.ts +0 -10
  171. package/dist/entity/GraphEntityBase.d.ts.map +0 -1
  172. package/dist/entity/graph_edge_entity.d.ts +0 -5
  173. package/dist/entity/graph_edge_entity.d.ts.map +0 -1
  174. package/dist/entity/transition-metadata.d.ts.map +0 -1
  175. package/dist/system/VersionManager.d.ts +0 -35
  176. package/dist/system/VersionManager.d.ts.map +0 -1
@@ -10,12 +10,13 @@ import { RxDB } from '../RxDB.js';
10
10
  * - 关系字段(如 user.name):添加关联实体类型
11
11
  * - MANY_TO_MANY 关系:额外添加中间表实体类型
12
12
  * - keyValue 字段:无额外依赖
13
+ * - EXISTS/NOT EXISTS 操作符:添加关联实体及其子查询依赖
13
14
  *
14
15
  * @param rxdb RxDB 实例
15
16
  * @param where 查询条件
16
17
  * @param EntityType 主查询的实体类型
17
18
  * @param relationEntityTypes 用于收集依赖实体类型的集合
18
19
  */
19
- declare const _default: <T extends EntityType>(rxdb: RxDB, where: RuleGroup<T>, EntityType: EntityType, relationEntityTypes: Set<EntityType>) => void;
20
- export default _default;
20
+ declare const extractEntityTypeDependencies: <T extends EntityType>(rxdb: RxDB, where: RuleGroup<T>, EntityType: EntityType, relationEntityTypes: Set<EntityType>) => void;
21
+ export default extractEntityTypeDependencies;
21
22
  //# sourceMappingURL=entity_type_dependencies.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity_type_dependencies.d.ts","sourceRoot":"","sources":["../../src/query/entity_type_dependencies.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAE7D,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAyIlC;;;;;;;;;;;;;;GAcG;yBACa,CAAC,SAAS,UAAU,EAClC,MAAM,IAAI,EACV,OAAO,SAAS,CAAC,CAAC,CAAC,EACnB,YAAY,UAAU,EACtB,qBAAqB,GAAG,CAAC,UAAU,CAAC;AAJtC,wBAyBE"}
1
+ {"version":3,"file":"entity_type_dependencies.d.ts","sourceRoot":"","sources":["../../src/query/entity_type_dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAE7D,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAyIlC;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,6BAA6B,GAAI,CAAC,SAAS,UAAU,EACzD,MAAM,IAAI,EACV,OAAO,SAAS,CAAC,CAAC,CAAC,EACnB,YAAY,UAAU,EACtB,qBAAqB,GAAG,CAAC,UAAU,CAAC,SA8ErC,CAAC;AAEF,eAAe,6BAA6B,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { EntityType } from '../entity/entity.interface.js';
2
+ import { QueryTask } from '../repository/QueryTask.js';
3
+ import { UpdateClassification, UpdateDataCache } from './merge-update.utils.js';
4
+ /**
5
+ * 处理 findAll 查询更新
6
+ *
7
+ * 注意:patch 可能是增量数据(跨 Tab 场景),不是完整实体
8
+ * 因此对于结果集中已有的实体,需要合并 patch 而不是替换
9
+ */
10
+ export declare const handleFindAllUpdate: <T extends EntityType>(task: QueryTask<T>, classification: UpdateClassification, cache: UpdateDataCache<T>) => void;
11
+ /**
12
+ * 处理 find 查询更新 (分页查询)
13
+ */
14
+ export declare const handleFindUpdate: <T extends EntityType>(task: QueryTask<T>, classification: UpdateClassification) => void;
15
+ /**
16
+ * 处理 findByCursor 查询更新
17
+ */
18
+ export declare const handleFindByCursorUpdate: <T extends EntityType>(task: QueryTask<T>, classification: UpdateClassification) => void;
19
+ /**
20
+ * 处理 findOne/findOneOrFail 查询更新
21
+ *
22
+ * 注意:patch 可能是增量数据(跨 Tab 场景),不是完整实体
23
+ * 因此对于当前结果,需要合并 patch 而不是替换
24
+ */
25
+ export declare const handleFindOneUpdate: <T extends EntityType>(task: QueryTask<T>, classification: UpdateClassification, cache: UpdateDataCache<T>) => void;
26
+ /**
27
+ * 处理 count 查询更新
28
+ */
29
+ export declare const handleCountUpdate: <T extends EntityType>(task: QueryTask<T>, classification: UpdateClassification) => void;
30
+ //# sourceMappingURL=merge-update-basic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-update-basic.d.ts","sourceRoot":"","sources":["../../src/query/merge-update-basic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAe,MAAM,yBAAyB,CAAC;AAG7F;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,UAAU,EACtD,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,gBAAgB,oBAAoB,EACpC,OAAO,eAAe,CAAC,CAAC,CAAC,SA8C1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,oBAAoB,SAgB9G,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,UAAU,EAC3D,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,gBAAgB,oBAAoB,SAiBrC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,UAAU,EACtD,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,gBAAgB,oBAAoB,EACpC,OAAO,eAAe,CAAC,CAAC,CAAC,SA8C1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,oBAAoB,SAU/G,CAAC"}
@@ -0,0 +1,86 @@
1
+ import { EntityType } from '../entity/entity.interface.js';
2
+ import { QueryTask } from '../repository/QueryTask.js';
3
+ import { RxDBEntityLocalUpdatedEventData } from '../rxdb-events.js';
4
+ import { UpdateClassification, UpdateDataCache } from './merge-update.utils.js';
5
+ /**
6
+ * 处理 findDescendants 查询的增量更新
7
+ *
8
+ * UPDATE 场景下的复杂性:
9
+ * 1. 实体的 parentId 可能变化,导致树形结构重组
10
+ * 2. 实体可能从不是后代变成后代,或从后代变成非后代
11
+ * 3. 实体仍然是后代,但字段值变化(如名称、描述等)
12
+ * 4. 需要考虑 level 限制(只查询特定层级的后代)
13
+ *
14
+ * 更新策略:
15
+ * - 移除: 不再匹配 where 条件 或 不再是后代 或 超出 level 范围
16
+ * - 更新: 仍在结果集中的实体,更新其字段值
17
+ * - 添加: 新匹配 where 条件 且 成为后代 且 在 level 范围内
18
+ *
19
+ * @param task 查询任务
20
+ * @param data 更新的实体数据列表
21
+ * @param classification 更新分类结果
22
+ * @param cache 更新数据缓存
23
+ */
24
+ export declare const handleFindDescendantsUpdate: <T extends EntityType>(task: QueryTask<T>, data: RxDBEntityLocalUpdatedEventData<T>[], classification: UpdateClassification, cache: UpdateDataCache<T>) => void;
25
+ /**
26
+ * 处理 findAncestors 查询的增量更新
27
+ *
28
+ * UPDATE 场景下的复杂性:
29
+ * 1. 目标实体的祖先链路可能因为其他实体的 parentId 变化而改变
30
+ * 2. 实体可能从不是祖先变成祖先,或从祖先变成非祖先
31
+ * 3. 实体仍然是祖先,但字段值变化
32
+ * 4. 目标实体本身也是结果的一部分(level=0)
33
+ *
34
+ * 特殊情况:
35
+ * - 如果目标实体的 parentId 变化,整个祖先链都会改变,需要完全刷新
36
+ *
37
+ * @param task 查询任务
38
+ * @param data 更新的实体数据列表
39
+ * @param classification 更新分类结果
40
+ * @param cache 更新数据缓存
41
+ */
42
+ export declare const handleFindAncestorsUpdate: <T extends EntityType>(task: QueryTask<T>, data: RxDBEntityLocalUpdatedEventData<T>[], classification: UpdateClassification, cache: UpdateDataCache<T>) => void;
43
+ /**
44
+ * 处理 countDescendants 查询的增量更新
45
+ *
46
+ * 计数查询的特点:
47
+ * - 只需要返回数量,不需要返回具体实体
48
+ * - 需要精确计算增减变化
49
+ * - 如果无法确定关系(父实体链中断),则触发 SQL 刷新
50
+ *
51
+ * UPDATE 场景下的计数变化:
52
+ * 1. 实体的 parentId 变化 → 可能从非后代变为后代,或相反
53
+ * 2. 实体从不匹配变为匹配 where 条件 → 如果是后代,计数+1
54
+ * 3. 实体从匹配变为不匹配 where 条件 → 如果是后代,计数-1
55
+ *
56
+ * @param task 查询任务
57
+ * @param data 更新的实体数据列表
58
+ * @param classification 更新分类结果
59
+ * @param cache 更新数据缓存
60
+ * @param where where 条件
61
+ * @param isEntityMatchWhere 检查实体是否匹配 where 条件的函数
62
+ */
63
+ export declare const handleCountDescendantsUpdate: <T extends EntityType>(task: QueryTask<T>, data: RxDBEntityLocalUpdatedEventData<T>[], classification: UpdateClassification, cache: UpdateDataCache<T>, where: any, isEntityMatchWhere: (entity: any, where: any) => boolean) => void;
64
+ /**
65
+ * 处理 countAncestors 查询的增量更新
66
+ *
67
+ * 计数查询的特点:
68
+ * - 只需要返回数量,不需要返回具体实体
69
+ * - 需要精确计算增减变化
70
+ * - 如果无法确定关系(父实体链中断)或目标实体的 parentId 变化,则触发 SQL 刷新
71
+ *
72
+ * UPDATE 场景下的计数变化:
73
+ * 1. 目标实体的 parentId 变化 → 整个祖先链改变,必须触发刷新
74
+ * 2. 其他实体的 parentId 变化 → 可能从非祖先变为祖先,或相反
75
+ * 3. 实体从不匹配变为匹配 where 条件 → 如果是祖先,计数+1
76
+ * 4. 实体从匹配变为不匹配 where 条件 → 如果是祖先,计数-1
77
+ *
78
+ * @param task 查询任务
79
+ * @param data 更新的实体数据列表
80
+ * @param classification 更新分类结果
81
+ * @param cache 更新数据缓存
82
+ * @param where where 条件
83
+ * @param isEntityMatchWhere 检查实体是否匹配 where 条件的函数
84
+ */
85
+ export declare const handleCountAncestorsUpdate: <T extends EntityType>(task: QueryTask<T>, data: RxDBEntityLocalUpdatedEventData<T>[], classification: UpdateClassification, cache: UpdateDataCache<T>, where: any, isEntityMatchWhere: (entity: any, where: any) => boolean) => void;
86
+ //# sourceMappingURL=merge-update-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-update-tree.d.ts","sourceRoot":"","sources":["../../src/query/merge-update-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAe,MAAM,yBAAyB,CAAC;AA6O7F;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,2BAA2B,GAAI,CAAC,SAAS,UAAU,EAC9D,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,MAAM,+BAA+B,CAAC,CAAC,CAAC,EAAE,EAC1C,gBAAgB,oBAAoB,EACpC,OAAO,eAAe,CAAC,CAAC,CAAC,SAwI1B,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,UAAU,EAC5D,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,MAAM,+BAA+B,CAAC,CAAC,CAAC,EAAE,EAC1C,gBAAgB,oBAAoB,EACpC,OAAO,eAAe,CAAC,CAAC,CAAC,SAyI1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,4BAA4B,GAAI,CAAC,SAAS,UAAU,EAC/D,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,MAAM,+BAA+B,CAAC,CAAC,CAAC,EAAE,EAC1C,gBAAgB,oBAAoB,EACpC,OAAO,eAAe,CAAC,CAAC,CAAC,EACzB,OAAO,GAAG,EACV,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,SA+DzD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,0BAA0B,GAAI,CAAC,SAAS,UAAU,EAC7D,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,MAAM,+BAA+B,CAAC,CAAC,CAAC,EAAE,EAC1C,gBAAgB,oBAAoB,EACpC,OAAO,eAAe,CAAC,CAAC,CAAC,EACzB,OAAO,GAAG,EACV,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,SAwHzD,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { EntityType } from '../entity/entity.interface.js';
2
+ import { RxDBEntityLocalUpdatedEventData } from '../rxdb-events.js';
3
+ /**
4
+ * 获取实体 ID
5
+ */
6
+ export declare const getEntityId: (entity: any) => string | undefined;
7
+ /**
8
+ * 更新数据的缓存管理器
9
+ * 用于缓存序列化后的实体数据,避免重复序列化
10
+ */
11
+ export declare class UpdateDataCache<T extends EntityType> {
12
+ private serialize;
13
+ private dataById;
14
+ private serializedUpdateCache;
15
+ private serializedBeforeCache;
16
+ constructor(data: RxDBEntityLocalUpdatedEventData<T>[], serialize: (event: RxDBEntityLocalUpdatedEventData<T>) => InstanceType<T>);
17
+ /**
18
+ * 获取序列化后的更新数据
19
+ */
20
+ getSerializedUpdate(id: string): InstanceType<T> | undefined;
21
+ /**
22
+ * 获取序列化后的更新前数据
23
+ */
24
+ getSerializedBefore(id: string, inversePatch: any): InstanceType<T> | undefined;
25
+ /**
26
+ * 获取原始更新数据
27
+ */
28
+ getData(id: string): RxDBEntityLocalUpdatedEventData<T> | undefined;
29
+ }
30
+ /**
31
+ * 更新分类结果
32
+ */
33
+ export interface UpdateClassification {
34
+ /** 更新的实体 ID 集合 */
35
+ updatedIds: Set<string>;
36
+ /** 当前匹配条件的实体 ID */
37
+ matchNowIds: Set<string>;
38
+ /** 更新前匹配条件的实体 ID */
39
+ matchBeforeIds: Set<string>;
40
+ /** 从 "不匹配" 变为 "匹配" 的实体 */
41
+ newlyMatchedIds: Set<string>;
42
+ /** 从 "匹配" 变为 "不匹配" 的实体 */
43
+ newlyUnmatchedIds: Set<string>;
44
+ /** 更新前后都匹配的实体 */
45
+ stillMatchedIds: Set<string>;
46
+ }
47
+ /**
48
+ * 分类更新的实体
49
+ * 根据 where 条件判断实体的匹配状态变化
50
+ */
51
+ export declare const classifyUpdates: <T extends EntityType>(data: RxDBEntityLocalUpdatedEventData<T>[], where: any, isEntityMatchWhere: (entity: any, where: any) => boolean) => UpdateClassification;
52
+ //# sourceMappingURL=merge-update.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-update.utils.d.ts","sourceRoot":"","sources":["../../src/query/merge-update.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,GAAG,KAAG,MAAM,GAAG,SAGlD,CAAC;AAEF;;;GAGG;AACH,qBAAa,eAAe,CAAC,CAAC,SAAS,UAAU;IAO7C,OAAO,CAAC,SAAS;IANnB,OAAO,CAAC,QAAQ,CAAyD;IACzE,OAAO,CAAC,qBAAqB,CAAsC;IACnE,OAAO,CAAC,qBAAqB,CAAsC;gBAGjE,IAAI,EAAE,+BAA+B,CAAC,CAAC,CAAC,EAAE,EAClC,SAAS,EAAE,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC;IAKnF;;OAEG;IACH,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS;IAa5D;;OAEG;IACH,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS;IAS/E;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,+BAA+B,CAAC,CAAC,CAAC,GAAG,SAAS;CAGpE;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kBAAkB;IAClB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,mBAAmB;IACnB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,oBAAoB;IACpB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,0BAA0B;IAC1B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,0BAA0B;IAC1B,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,iBAAiB;IACjB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC9B;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,UAAU,EAClD,MAAM,+BAA+B,CAAC,CAAC,CAAC,EAAE,EAC1C,OAAO,GAAG,EACV,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,KACvD,oBAiCF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { EntityType } from '../entity/entity.interface.js';
2
2
  import { QueryTask } from '../repository/QueryTask.js';
3
- import { RxDBEntityCreatedEventData } from '../rxdb-events.js';
3
+ import { RxDBEntityLocalCreatedEventData } from '../rxdb-events.js';
4
4
  /**
5
5
  * 处理 CREATE 事件的缓存合并逻辑
6
6
  *
@@ -14,6 +14,6 @@ import { RxDBEntityCreatedEventData } from '../rxdb-events.js';
14
14
  * @param task 查询任务
15
15
  * @param entities 创建的实体事件数据
16
16
  */
17
- declare const _default: <T extends EntityType>(task: QueryTask<T>, entities: RxDBEntityCreatedEventData<T>[]) => void;
17
+ declare const _default: <T extends EntityType>(task: QueryTask<T>, entities: RxDBEntityLocalCreatedEventData<T>[]) => void;
18
18
  export default _default;
19
19
  //# sourceMappingURL=merge_create.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"merge_create.d.ts","sourceRoot":"","sources":["../../src/query/merge_create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAgW/D;;;;;;;;;;;;GAYG;yBACa,CAAC,SAAS,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,0BAA0B,CAAC,CAAC,CAAC,EAAE;AAAnG,wBA4FE"}
1
+ {"version":3,"file":"merge_create.d.ts","sourceRoot":"","sources":["../../src/query/merge_create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAoKpE;;;;;;;;;;;;GAYG;yBACa,CAAC,SAAS,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,+BAA+B,CAAC,CAAC,CAAC,EAAE;AAAxG,wBAyCE"}
@@ -1,19 +1,6 @@
1
1
  import { EntityType } from '../entity/entity.interface.js';
2
2
  import { QueryTask } from '../repository/QueryTask.js';
3
- import { RxDBEntityRemovedEventData } from '../rxdb-events.js';
4
- /**
5
- * 处理 REMOVE 事件的缓存合并逻辑
6
- *
7
- * 不同查询类型的删除策略:
8
- * - findAll: JS 直接移除
9
- * - find: SQL 刷新(需要补充数据)
10
- * - findByCursor: JS 直接移除
11
- * - findOne/findOneOrFail: SQL 刷新(如果当前结果被删除)
12
- * - count: JS 简单减法
13
- *
14
- * @param task 查询任务
15
- * @param entities 删除的实体事件数据
16
- */
17
- declare const _default: <T extends EntityType>(task: QueryTask<T>, entities: RxDBEntityRemovedEventData<T>[]) => void;
3
+ import { RxDBEntityLocalRemovedEventData } from '../rxdb-events.js';
4
+ declare const _default: <T extends EntityType>(task: QueryTask<T>, entities: RxDBEntityLocalRemovedEventData<T>[]) => void;
18
5
  export default _default;
19
6
  //# sourceMappingURL=merge_remove.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"merge_remove.d.ts","sourceRoot":"","sources":["../../src/query/merge_remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAiO/D;;;;;;;;;;;;GAYG;yBACa,CAAC,SAAS,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,0BAA0B,CAAC,CAAC,CAAC,EAAE;AAAnG,wBAuEE"}
1
+ {"version":3,"file":"merge_remove.d.ts","sourceRoot":"","sources":["../../src/query/merge_remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;yBA6FpD,CAAC,SAAS,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,+BAA+B,CAAC,CAAC,CAAC,EAAE;AAAxG,wBAqCE"}
@@ -1,6 +1,6 @@
1
1
  import { EntityType } from '../entity/entity.interface.js';
2
2
  import { QueryTask } from '../repository/QueryTask.js';
3
- import { RxDBEntityUpdatedEventData } from '../rxdb-events.js';
3
+ import { RxDBEntityLocalUpdatedEventData } from '../rxdb-events.js';
4
4
  /**
5
5
  * 处理 UPDATE 事件的缓存合并逻辑
6
6
  *
@@ -19,6 +19,6 @@ import { RxDBEntityUpdatedEventData } from '../rxdb-events.js';
19
19
  * @param task 查询任务
20
20
  * @param entities 更新的实体事件数据
21
21
  */
22
- declare const _default: <T extends EntityType>(task: QueryTask<T>, entities: RxDBEntityUpdatedEventData<T>[]) => void;
22
+ declare const _default: <T extends EntityType>(task: QueryTask<T>, entities: RxDBEntityLocalUpdatedEventData<T>[]) => void;
23
23
  export default _default;
24
24
  //# sourceMappingURL=merge_update.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"merge_update.d.ts","sourceRoot":"","sources":["../../src/query/merge_update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAytB/D;;;;;;;;;;;;;;;;;GAiBG;yBACa,CAAC,SAAS,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,0BAA0B,CAAC,CAAC,CAAC,EAAE;AAAnG,wBA6HE"}
1
+ {"version":3,"file":"merge_update.d.ts","sourceRoot":"","sources":["../../src/query/merge_update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AA2EpE;;;;;;;;;;;;;;;;;GAiBG;yBACa,CAAC,SAAS,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,+BAA+B,CAAC,CAAC,CAAC,EAAE;AAAxG,wBAwJE"}
@@ -1,10 +1,10 @@
1
1
  import { EntityType } from '../entity/entity.interface.js';
2
2
  import { RefreshMatchRules } from '../repository/QueryManager.interface.js';
3
3
  import { QueryTask } from '../repository/QueryTask.js';
4
- import { RxDBEntityCreatedEventData } from '../rxdb-events.js';
5
- export declare const query_need_refresh_create: <T extends EntityType = any>(task: QueryTask<T>, changes: RxDBEntityCreatedEventData<T>[], refresh_rules: RefreshMatchRules, recalculate_rules: RefreshMatchRules) => {
6
- current_entities: RxDBEntityCreatedEventData<T>[];
7
- relation_entities: RxDBEntityCreatedEventData<T>[];
4
+ import { RxDBEntityLocalCreatedEventData } from '../rxdb-events.js';
5
+ export declare const query_need_refresh_create: <T extends EntityType = EntityType>(task: QueryTask<T>, changes: RxDBEntityLocalCreatedEventData<T>[], refresh_rules: RefreshMatchRules, recalculate_rules: RefreshMatchRules) => {
6
+ current_entities: RxDBEntityLocalCreatedEventData<T>[];
7
+ relation_entities: RxDBEntityLocalCreatedEventData<T>[];
8
8
  refresh: boolean;
9
9
  recalculate: boolean;
10
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"need_refresh_create.d.ts","sourceRoot":"","sources":["../../src/query/need_refresh_create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAuC/D,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,UAAU,GAAG,GAAG,EAClE,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,EACxC,eAAe,iBAAiB,EAChC,mBAAmB,iBAAiB;;;;;CAgGrC,CAAC"}
1
+ {"version":3,"file":"need_refresh_create.d.ts","sourceRoot":"","sources":["../../src/query/need_refresh_create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAQpE,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,UAAU,GAAG,UAAU,EACzE,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,EAC7C,eAAe,iBAAiB,EAChC,mBAAmB,iBAAiB;;;;;CA6CrC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { EntityType } from '../entity/entity.interface.js';
2
2
  import { RefreshMatchRules } from '../repository/QueryManager.interface.js';
3
3
  import { QueryTask } from '../repository/QueryTask.js';
4
- import { RxDBEntityRemovedEventData } from '../rxdb-events.js';
5
- export declare const query_need_refresh_remove: <T extends EntityType = any>(task: QueryTask<T>, changes: RxDBEntityRemovedEventData[], refresh_rules: RefreshMatchRules, recalculate_rules: RefreshMatchRules) => import('./query-matching.utils.js').NeedRefreshResult;
4
+ import { RxDBEntityLocalRemovedEventData } from '../rxdb-events.js';
5
+ export declare const query_need_refresh_remove: <T extends EntityType = any>(task: QueryTask<T>, changes: RxDBEntityLocalRemovedEventData[], refresh_rules: RefreshMatchRules, recalculate_rules: RefreshMatchRules) => import('./query-matching.utils.js').NeedRefreshResult;
6
6
  //# sourceMappingURL=need_refresh_remove.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"need_refresh_remove.d.ts","sourceRoot":"","sources":["../../src/query/need_refresh_remove.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAK/D,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,UAAU,GAAG,GAAG,EAClE,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,SAAS,0BAA0B,EAAE,EACrC,eAAe,iBAAiB,EAChC,mBAAmB,iBAAiB,0DAwBrC,CAAC"}
1
+ {"version":3,"file":"need_refresh_remove.d.ts","sourceRoot":"","sources":["../../src/query/need_refresh_remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAIpE,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,UAAU,GAAG,GAAG,EAClE,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,SAAS,+BAA+B,EAAE,EAC1C,eAAe,iBAAiB,EAChC,mBAAmB,iBAAiB,0DAQrC,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import { EntityType } from '../entity/entity.interface.js';
2
2
  import { RefreshMatchRules } from '../repository/QueryManager.interface.js';
3
3
  import { QueryTask } from '../repository/QueryTask.js';
4
- import { RxDBEntityUpdatedEventData } from '../rxdb-events.js';
5
- export declare const query_need_refresh_update: <T extends EntityType = any>(task: QueryTask<T>, changes: RxDBEntityUpdatedEventData[], refresh_rules: RefreshMatchRules, recalculate_rules: RefreshMatchRules) => import('./query-matching.utils.js').NeedRefreshResult | {
6
- current_entities: RxDBEntityUpdatedEventData<EntityType>[];
7
- relation_entities: RxDBEntityUpdatedEventData<EntityType>[];
4
+ import { RxDBEntityLocalUpdatedEventData } from '../rxdb-events.js';
5
+ export declare const query_need_refresh_update: <T extends EntityType = any>(task: QueryTask<T>, changes: RxDBEntityLocalUpdatedEventData[], refresh_rules: RefreshMatchRules, recalculate_rules: RefreshMatchRules) => import('./query-matching.utils.js').NeedRefreshResult | {
6
+ current_entities: RxDBEntityLocalUpdatedEventData<EntityType>[];
7
+ relation_entities: RxDBEntityLocalUpdatedEventData<EntityType>[];
8
8
  refresh: boolean;
9
9
  recalculate: boolean;
10
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"need_refresh_update.d.ts","sourceRoot":"","sources":["../../src/query/need_refresh_update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AA2C/D,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,UAAU,GAAG,GAAG,EAClE,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,SAAS,0BAA0B,EAAE,EACrC,eAAe,iBAAiB,EAChC,mBAAmB,iBAAiB;;;;;CAiFrC,CAAC"}
1
+ {"version":3,"file":"need_refresh_update.d.ts","sourceRoot":"","sources":["../../src/query/need_refresh_update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAQpE,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,UAAU,GAAG,GAAG,EAClE,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,SAAS,+BAA+B,EAAE,EAC1C,eAAe,iBAAiB,EAChC,mBAAmB,iBAAiB;;;;;CAiDrC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { EntityType } from '../entity/entity.interface.js';
2
2
  import { OrderBy } from '../repository/query-options.interface.js';
3
- import { RuleGroup } from '../repository/query.interface.js';
3
+ import { Rule, RuleGroup } from '../repository/query.interface.js';
4
4
  import { RefreshMatchRules } from '../repository/QueryManager.interface.js';
5
5
  /**
6
6
  * 计算结果
@@ -17,12 +17,28 @@ export interface NeedRefreshResult {
17
17
  }
18
18
  /**
19
19
  * 判断是否是 RuleGroup
20
+ * @param value - 要检查的值
21
+ * @returns 如果是 RuleGroup 则返回 true,否则返回 false
20
22
  */
21
23
  export declare const isRuleGroup: (value: unknown) => value is RuleGroup<any>;
24
+ /**
25
+ * 判断是否是 Rule
26
+ * @param value - 要检查的值
27
+ * @returns 如果是 Rule 则返回 true,否则返回 false
28
+ */
29
+ export declare const isRule: (value: unknown) => value is Rule<any>;
30
+ /**
31
+ * 判断是否是 EXISTS/NOT EXISTS 规则
32
+ * @param rule - 要检查的规则
33
+ * @returns 如果是 EXISTS/NOT EXISTS 规则则返回 true,否则返回 false
34
+ */
35
+ export declare const isExistsRule: <T extends EntityType>(rule: Rule<T>) => rule is Extract<Rule<T>, {
36
+ operator: "exists" | "notExists";
37
+ }>;
22
38
  /**
23
39
  * 判断实体是否匹配规则组
24
40
  */
25
- export declare const isEntityMatchWhere: <T extends EntityType>(entity: any, ruleGroup: RuleGroup<T>) => boolean;
41
+ export declare const isEntityMatchWhere: (entity: any, ruleGroup: RuleGroup<any>) => boolean;
26
42
  /**
27
43
  * 判断 entity 是否影响排序后的结果中
28
44
  * @param entities 排序后的结果
@@ -1 +1 @@
1
- {"version":3,"file":"query-matching.utils.d.ts","sourceRoot":"","sources":["../../src/query/query-matching.utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,0CAA0C,CAAC;AACnE,OAAO,EAAQ,SAAS,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAG5E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,SAAS,CAAC,GAAG,CAChB,CAAC;AAmEpD;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,UAAU,EAAE,QAAQ,GAAG,EAAE,WAAW,SAAS,CAAC,CAAC,CAAC,YACtC,CAAC;AAmCxD;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,UAAU,EACxD,QAAQ,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,EAC7B,QAAQ,YAAY,CAAC,CAAC,CAAC,EAAE,EACzB,cAAc,OAAO,CAAC,MAAM,CAAC,EAAE,wBAgBhC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,UAAU,EAAE,QAAQ,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,OAAO,CAAC,MAAM,CAAC,EAAE,sBAQ3G,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,SAAS;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,OAAO,CAAA;CAAE,EACzC,eAAe,iBAAiB,EAChC,mBAAmB,iBAAiB,KACnC,iBAcF,CAAC"}
1
+ {"version":3,"file":"query-matching.utils.d.ts","sourceRoot":"","sources":["../../src/query/query-matching.utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,0CAA0C,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAG5E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,SAAS,CAAC,GAAG,CAChB,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,MAAM,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAA4C,CAAC;AAEtG;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,UAAU,EAC/C,MAAM,IAAI,CAAC,CAAC,CAAC,KACZ,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;IAAE,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAA;CAAE,CACH,CAAC;AA8H9D;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,GAAG,EAAE,WAAW,SAAS,CAAC,GAAG,CAAC,KAAG,OAO3E,CAAC;AAmCF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,UAAU,EACxD,QAAQ,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,EAC7B,QAAQ,YAAY,CAAC,CAAC,CAAC,EAAE,EACzB,cAAc,OAAO,CAAC,MAAM,CAAC,EAAE,wBAgBhC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,UAAU,EAAE,QAAQ,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,OAAO,CAAC,MAAM,CAAC,EAAE,sBAQ3G,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,SAAS;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,OAAO,CAAA;CAAE,EACzC,eAAe,iBAAiB,EAChC,mBAAmB,iBAAiB,KACnC,iBAcF,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { EntityType } from '../entity/entity.interface.js';
2
+ import { EntityMetadata } from '../entity/metadata.interface.js';
3
+ import { RuleGroup } from '../repository/query.interface.js';
4
+ import { QueryTask } from '../repository/QueryTask.js';
5
+ import { RxDBEntityLocalEventData } from '../rxdb-events.js';
6
+ /**
7
+ * 检查关系实体是否与查询结果集相关
8
+ *
9
+ * 增强版:使用依赖提取器精确识别查询依赖的实体类型
10
+ * 特别支持 EXISTS 操作符的依赖跟踪
11
+ *
12
+ * @param task 查询任务
13
+ * @param relation_entity 关系实体(包含 entity 和 namespace)
14
+ * @returns 如果关系实体与查询相关则返回 true
15
+ */
16
+ export declare function isRelationEntityRelated<T extends EntityType>(task: QueryTask<T>, relation_entity: {
17
+ entity: string;
18
+ namespace: string;
19
+ }): boolean;
20
+ /**
21
+ * 分离当前实体和关系实体
22
+ *
23
+ * 增强版:支持自引用关系的特殊处理
24
+ * 当查询使用 EXISTS 且存在自引用关系时,同一实体可能同时是:
25
+ * - current_entities:直接匹配查询条件的主实体
26
+ * - relation_entities:作为其他实体的关联实体
27
+ *
28
+ * @param task 查询任务
29
+ * @param changes 变更的实体列表
30
+ * @returns 分离后的当前实体和关系实体
31
+ */
32
+ export declare function separateEntities<T extends EntityType, CT extends RxDBEntityLocalEventData>(task: QueryTask<T>, changes: CT[]): {
33
+ current_entities: CT[];
34
+ relation_entities: CT[];
35
+ };
36
+ /**
37
+ * 检测 where 条件是否使用了关系字段
38
+ *
39
+ * @param where where 条件对象
40
+ * @param metadata 实体元数据
41
+ * @returns 如果 where 条件使用了关系字段则返回 true
42
+ */
43
+ export declare function whereUsesRelations(where: RuleGroup<any>, metadata: EntityMetadata): boolean;
44
+ //# sourceMappingURL=query-relation.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-relation.utils.d.ts","sourceRoot":"","sources":["../../src/query/query-relation.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAK7D;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,UAAU,EAC1D,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAClB,eAAe,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACrD,OAAO,CA+BT;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,UAAU,EAAE,EAAE,SAAS,wBAAwB,EACxF,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAClB,OAAO,EAAE,EAAE,EAAE,GACZ;IACD,gBAAgB,EAAE,EAAE,EAAE,CAAC;IACvB,iBAAiB,EAAE,EAAE,EAAE,CAAC;CACzB,CA+BA;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAuB3F"}
@@ -0,0 +1,68 @@
1
+ import { EntityType } from '../entity/entity.interface.js';
2
+ import { QueryTask } from '../repository/QueryTask.js';
3
+ /**
4
+ * 规则匹配结果
5
+ */
6
+ export interface QueryRules {
7
+ [key: string]: () => boolean;
8
+ match_where: () => boolean;
9
+ not_match_where: () => boolean;
10
+ match_relation_where: () => boolean;
11
+ not_match_relation_where: () => boolean;
12
+ result_contains: () => boolean;
13
+ result_not_contains: () => boolean;
14
+ match_order_by: () => boolean;
15
+ match_where_before: () => boolean;
16
+ not_match_where_before: () => boolean;
17
+ }
18
+ /**
19
+ * 规则构建器 - 统一处理不同事件类型的规则
20
+ */
21
+ export declare class QueryRulesBuilder<T extends EntityType> {
22
+ private task;
23
+ private current_entities;
24
+ private hasRelationChanges;
25
+ private whereUsesRelations;
26
+ private entityIds;
27
+ constructor(task: QueryTask<T>, current_entities: any[], hasRelationChanges: boolean, whereUsesRelations?: boolean);
28
+ /**
29
+ * 构建完整规则集(CREATE)
30
+ */
31
+ buildCreateRules(): QueryRules;
32
+ /**
33
+ * 构建完整规则集(UPDATE)
34
+ */
35
+ buildUpdateRules(): QueryRules;
36
+ /**
37
+ * 构建完整规则集(REMOVE)
38
+ */
39
+ buildRemoveRules(): QueryRules;
40
+ /**
41
+ * 构建 match_where 规则(适用于 CREATE/UPDATE)
42
+ */
43
+ private buildMatchWhere;
44
+ /**
45
+ * 构建 result_contains 规则
46
+ */
47
+ private buildResultContains;
48
+ /**
49
+ * 构建关系匹配规则(CREATE 场景)
50
+ *
51
+ * CREATE 场景:只要有关系实体变更就应该触发刷新
52
+ * 因为新增的关系实体可能影响 EXISTS 查询或其他依赖关系
53
+ */
54
+ private buildRelationWhereRulesForCreate;
55
+ /**
56
+ * 构建关系匹配规则(UPDATE 场景)
57
+ *
58
+ * UPDATE 场景:需要更严格的条件
59
+ * 只有当 where 条件使用了关系字段,且有关系实体变更时,才触发刷新
60
+ * 这样可以避免自引用场景下不必要的刷新(跨 Tab 同步时同一实体被放入 relation_entities)
61
+ */
62
+ private buildRelationWhereRulesForUpdate;
63
+ /**
64
+ * 构建排序规则(仅用于 CREATE)
65
+ */
66
+ private buildOrderByRule;
67
+ }
68
+ //# sourceMappingURL=query-rules-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-rules-builder.d.ts","sourceRoot":"","sources":["../../src/query/query-rules-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAKvD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,OAAO,CAAC;IAC7B,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B,eAAe,EAAE,MAAM,OAAO,CAAC;IAC/B,oBAAoB,EAAE,MAAM,OAAO,CAAC;IACpC,wBAAwB,EAAE,MAAM,OAAO,CAAC;IACxC,eAAe,EAAE,MAAM,OAAO,CAAC;IAC/B,mBAAmB,EAAE,MAAM,OAAO,CAAC;IACnC,cAAc,EAAE,MAAM,OAAO,CAAC;IAC9B,kBAAkB,EAAE,MAAM,OAAO,CAAC;IAClC,sBAAsB,EAAE,MAAM,OAAO,CAAC;CACvC;AAED;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,UAAU;IAI/C,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,kBAAkB;IAN5B,OAAO,CAAC,SAAS,CAAiB;gBAGxB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAClB,gBAAgB,EAAE,GAAG,EAAE,EACvB,kBAAkB,EAAE,OAAO,EAC3B,kBAAkB,GAAE,OAAe;IAK7C;;OAEG;IACH,gBAAgB,IAAI,UAAU;IAsB9B;;OAEG;IACH,gBAAgB,IAAI,UAAU;IAuB9B;;OAEG;IACH,gBAAgB,IAAI,UAAU;IAmB9B;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;;;OAKG;IACH,OAAO,CAAC,gCAAgC;IASxC;;;;;;OAMG;IACH,OAAO,CAAC,gCAAgC;IASxC;;OAEG;IACH,OAAO,CAAC,gBAAgB;CASzB"}
@@ -0,0 +1,54 @@
1
+ import { EntityStaticType, EntityType } from '../entity/entity.interface.js';
2
+ /**
3
+ * 树形遍历配置
4
+ */
5
+ interface TreeTraversalOptions {
6
+ maxLevel?: number;
7
+ maxDepth?: number;
8
+ }
9
+ /**
10
+ * 获取实体的父级 ID
11
+ * 处理 parentId 可能是对象或字符串的情况
12
+ */
13
+ export declare const get_tree_parent_id: <T extends EntityType>(entity: InstanceType<T>) => EntityStaticType<T, "idType"> | null;
14
+ /**
15
+ * 向上遍历父级链路
16
+ *
17
+ * @param entity 起始实体
18
+ * @param entitiesMap 实体 ID 映射表
19
+ * @param options 遍历配置
20
+ * @yields 每一层的父级实体和层级
21
+ */
22
+ export declare function traverseAncestors<T extends EntityType>(entity: InstanceType<T>, entitiesMap: Map<EntityStaticType<T, 'idType'>, InstanceType<T>>, options?: TreeTraversalOptions): Generator<{
23
+ entity: InstanceType<T>;
24
+ level: number;
25
+ }>;
26
+ /**
27
+ * 检查实体是否是目标实体的后代
28
+ *
29
+ * @param entity 要检查的实体
30
+ * @param targetId 目标实体 ID (为 null 或 undefined 时表示查找根节点)
31
+ * @param entitiesMap 实体 ID 映射表
32
+ * @param maxLevel 最大层级 (undefined 或 0 表示无限制)
33
+ * @returns 如果是后代则返回 true
34
+ */
35
+ export declare function isDescendantOf<T extends EntityType>(entity: InstanceType<T>, targetId: EntityStaticType<T, 'idType'> | null | undefined, entitiesMap: Map<EntityStaticType<T, 'idType'>, InstanceType<T>>, maxLevel?: number): boolean;
36
+ /**
37
+ * 检查实体是否是目标实体的祖先
38
+ *
39
+ * @param candidateEntity 候选祖先实体
40
+ * @param targetId 目标实体 ID
41
+ * @param entitiesMap 实体 ID 映射表
42
+ * @returns 如果是祖先则返回 true
43
+ */
44
+ export declare function isAncestorOf<T extends EntityType>(candidateEntity: InstanceType<T>, targetId: EntityStaticType<T, 'idType'>, entitiesMap: Map<EntityStaticType<T, 'idType'>, InstanceType<T>>): boolean;
45
+ /**
46
+ * 构建实体 ID 映射表(优化查找性能)
47
+ *
48
+ * @param entities 实体数组
49
+ * @param getIdFn 获取实体 ID 的函数
50
+ * @returns 实体 ID 到实体的映射表
51
+ */
52
+ export declare function buildEntityMap<T extends EntityType>(entities: InstanceType<T>[], getIdFn: (e: InstanceType<T>) => EntityStaticType<T, 'idType'>): Map<EntityStaticType<T, 'idType'>, InstanceType<T>>;
53
+ export {};
54
+ //# sourceMappingURL=query-tree.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-tree.utils.d.ts","sourceRoot":"","sources":["../../src/query/query-tree.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE7E;;GAEG;AACH,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,UAAU,EACrD,QAAQ,YAAY,CAAC,CAAC,CAAC,KACtB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,IAAgC,CAAC;AAEpE;;;;;;;GAOG;AACH,wBAAiB,iBAAiB,CAAC,CAAC,SAAS,UAAU,EACrD,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,WAAW,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAChE,OAAO,GAAE,oBAAyB,GACjC,SAAS,CAAC;IAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAoBvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,UAAU,EACjD,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,SAAS,EAC1D,WAAW,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAChE,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAkCT;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,UAAU,EAC/C,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,EAChC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,EACvC,WAAW,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,GAC/D,OAAO,CAWT;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,UAAU,EACjD,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAC3B,OAAO,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,GAC7D,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAOrD"}
@@ -1,9 +1,27 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { EntityType } from '../entity/entity.interface.js';
3
+ import { RxDBEntityLocalCreatedEventData, RxDBEntityLocalRemovedEventData, RxDBEntityLocalUpdatedEventData } from '../rxdb-events.js';
3
4
  import { RxDB } from '../RxDB.js';
4
5
  import { QueryOptions } from './QueryManager.interface.js';
5
6
  import { QueryTask } from './QueryTask.js';
6
7
  import { Repository } from './Repository.js';
8
+ export type MergeQueryTaskCreateFn<T extends EntityType = any> = (task: QueryTask<T>, entities: RxDBEntityLocalCreatedEventData<T>[]) => void;
9
+ export type MergeQueryTaskUpdateFn<T extends EntityType = any> = (task: QueryTask<T>, entities: RxDBEntityLocalUpdatedEventData<T>[]) => void;
10
+ export type MergeQueryTaskRemoveFn<T extends EntityType = any> = (task: QueryTask<T>, entities: RxDBEntityLocalRemovedEventData<T>[]) => void;
11
+ interface CreateTaskOptions<T extends EntityType, RT> {
12
+ /**
13
+ * 查询选项
14
+ */
15
+ options: QueryOptions<T>;
16
+ /**
17
+ * 查询执行函数
18
+ */
19
+ runner: (options?: QueryOptions<T>) => Observable<RT>;
20
+ /**
21
+ * 结果指纹计算方法
22
+ */
23
+ getFingerprint: (result: any) => any[];
24
+ }
7
25
  /**
8
26
  * 查询缓存管理器
9
27
  *
@@ -42,6 +60,10 @@ export declare class QueryManager<T extends EntityType> {
42
60
  * @param taskOptions 查询任务选项
43
61
  * @returns 查询任务对象,包含 result$ 用于订阅查询结果
44
62
  */
45
- createTask<RT = any>(queryOptions: QueryOptions<T>, runner: (options?: QueryOptions<T>) => Observable<RT>): QueryTask<T>;
63
+ createTask<RT = any>(taskOptions: CreateTaskOptions<T, RT>): QueryTask<T>;
64
+ registerMergeCreateFn(taskType: string, fn: MergeQueryTaskCreateFn<T>): void;
65
+ registerMergeUpdateFn(taskType: string, fn: MergeQueryTaskUpdateFn<T>): void;
66
+ registerMergeRemoveFn(taskType: string, fn: MergeQueryTaskRemoveFn<T>): void;
46
67
  }
68
+ export {};
47
69
  //# sourceMappingURL=QueryManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueryManager.d.ts","sourceRoot":"","sources":["../../src/repository/QueryManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAgBhE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAY,CAAC,CAAC,SAAS,UAAU;;IAc1C,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI;IAC7B,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAV9C;;;;;;OAMG;gBAEkB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,CAAC,EACb,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAQ9C;;;;;;;;;;OAUG;IACI,UAAU,CAAC,EAAE,GAAG,GAAG,EACxB,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAC7B,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,EAAE,CAAC,GACpD,SAAS,CAAC,CAAC,CAAC;CA4JhB"}
1
+ {"version":3,"file":"QueryManager.d.ts","sourceRoot":"","sources":["../../src/repository/QueryManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAIhE,OAAO,EAOL,+BAA+B,EAE/B,+BAA+B,EAC/B,+BAA+B,EAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,IAAI,CAC/D,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAClB,QAAQ,EAAE,+BAA+B,CAAC,CAAC,CAAC,EAAE,KAC3C,IAAI,CAAC;AAEV,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,IAAI,CAC/D,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAClB,QAAQ,EAAE,+BAA+B,CAAC,CAAC,CAAC,EAAE,KAC3C,IAAI,CAAC;AAEV,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,IAAI,CAC/D,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAClB,QAAQ,EAAE,+BAA+B,CAAC,CAAC,CAAC,EAAE,KAC3C,IAAI,CAAC;AAEV,UAAU,iBAAiB,CAAC,CAAC,SAAS,UAAU,EAAE,EAAE;IAClD;;OAEG;IACH,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACzB;;OAEG;IACH,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;IACtD;;OAEG;IACH,cAAc,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC;CACxC;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAY,CAAC,CAAC,SAAS,UAAU;;IAkB1C,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI;IAC7B,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAV9C;;;;;;OAMG;gBAEkB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,CAAC,EACb,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAQ9C;;;;;;;;;;OAUG;IACI,UAAU,CAAC,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAehF,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAIrE,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAIrE,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC;CAmKtE"}