@powerhousedao/reactor 6.0.0-dev.5 → 6.0.0-dev.52

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 (290) hide show
  1. package/dist/src/cache/collection-membership-cache.d.ts +13 -0
  2. package/dist/src/cache/collection-membership-cache.d.ts.map +1 -0
  3. package/dist/src/cache/collection-membership-cache.js +33 -0
  4. package/dist/src/cache/collection-membership-cache.js.map +1 -0
  5. package/dist/src/cache/document-meta-cache.d.ts.map +1 -1
  6. package/dist/src/cache/document-meta-cache.js +4 -4
  7. package/dist/src/cache/document-meta-cache.js.map +1 -1
  8. package/dist/src/cache/kysely-operation-index.d.ts +6 -1
  9. package/dist/src/cache/kysely-operation-index.d.ts.map +1 -1
  10. package/dist/src/cache/kysely-operation-index.js +102 -7
  11. package/dist/src/cache/kysely-operation-index.js.map +1 -1
  12. package/dist/src/cache/kysely-write-cache.d.ts.map +1 -1
  13. package/dist/src/cache/kysely-write-cache.js +16 -12
  14. package/dist/src/cache/kysely-write-cache.js.map +1 -1
  15. package/dist/src/cache/operation-index-types.d.ts +16 -2
  16. package/dist/src/cache/operation-index-types.d.ts.map +1 -1
  17. package/dist/src/cache/operation-index-types.js.map +1 -1
  18. package/dist/src/client/reactor-client.d.ts +13 -10
  19. package/dist/src/client/reactor-client.d.ts.map +1 -1
  20. package/dist/src/client/reactor-client.js +134 -43
  21. package/dist/src/client/reactor-client.js.map +1 -1
  22. package/dist/src/client/types.d.ts +25 -6
  23. package/dist/src/client/types.d.ts.map +1 -1
  24. package/dist/src/client/types.js.map +1 -1
  25. package/dist/src/core/reactor-builder.d.ts +23 -7
  26. package/dist/src/core/reactor-builder.d.ts.map +1 -1
  27. package/dist/src/core/reactor-builder.js +96 -24
  28. package/dist/src/core/reactor-builder.js.map +1 -1
  29. package/dist/src/core/reactor-client-builder.d.ts +5 -4
  30. package/dist/src/core/reactor-client-builder.d.ts.map +1 -1
  31. package/dist/src/core/reactor-client-builder.js +14 -5
  32. package/dist/src/core/reactor-client-builder.js.map +1 -1
  33. package/dist/src/core/reactor.d.ts +20 -80
  34. package/dist/src/core/reactor.d.ts.map +1 -1
  35. package/dist/src/core/reactor.js +235 -576
  36. package/dist/src/core/reactor.js.map +1 -1
  37. package/dist/src/core/types.d.ts +63 -28
  38. package/dist/src/core/types.d.ts.map +1 -1
  39. package/dist/src/core/utils.d.ts +39 -3
  40. package/dist/src/core/utils.d.ts.map +1 -1
  41. package/dist/src/core/utils.js +63 -9
  42. package/dist/src/core/utils.js.map +1 -1
  43. package/dist/src/events/types.d.ts +35 -10
  44. package/dist/src/events/types.d.ts.map +1 -1
  45. package/dist/src/events/types.js +7 -5
  46. package/dist/src/events/types.js.map +1 -1
  47. package/dist/src/executor/document-action-handler.d.ts +37 -0
  48. package/dist/src/executor/document-action-handler.d.ts.map +1 -0
  49. package/dist/src/executor/document-action-handler.js +354 -0
  50. package/dist/src/executor/document-action-handler.js.map +1 -0
  51. package/dist/src/executor/signature-verifier.d.ts +9 -0
  52. package/dist/src/executor/signature-verifier.d.ts.map +1 -0
  53. package/dist/src/executor/signature-verifier.js +70 -0
  54. package/dist/src/executor/signature-verifier.js.map +1 -0
  55. package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -1
  56. package/dist/src/executor/simple-job-executor-manager.js +20 -10
  57. package/dist/src/executor/simple-job-executor-manager.js.map +1 -1
  58. package/dist/src/executor/simple-job-executor.d.ts +6 -46
  59. package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
  60. package/dist/src/executor/simple-job-executor.js +94 -580
  61. package/dist/src/executor/simple-job-executor.js.map +1 -1
  62. package/dist/src/executor/types.d.ts +1 -3
  63. package/dist/src/executor/types.d.ts.map +1 -1
  64. package/dist/src/executor/types.js.map +1 -1
  65. package/dist/src/executor/util.d.ts +12 -2
  66. package/dist/src/executor/util.d.ts.map +1 -1
  67. package/dist/src/executor/util.js +47 -1
  68. package/dist/src/executor/util.js.map +1 -1
  69. package/dist/src/index.d.ts +11 -9
  70. package/dist/src/index.d.ts.map +1 -1
  71. package/dist/src/index.js +6 -5
  72. package/dist/src/index.js.map +1 -1
  73. package/dist/src/job-tracker/in-memory-job-tracker.d.ts +4 -3
  74. package/dist/src/job-tracker/in-memory-job-tracker.d.ts.map +1 -1
  75. package/dist/src/job-tracker/in-memory-job-tracker.js +20 -18
  76. package/dist/src/job-tracker/in-memory-job-tracker.js.map +1 -1
  77. package/dist/src/job-tracker/interfaces.d.ts +3 -1
  78. package/dist/src/job-tracker/interfaces.d.ts.map +1 -1
  79. package/dist/src/logging/console.d.ts +1 -22
  80. package/dist/src/logging/console.d.ts.map +1 -1
  81. package/dist/src/logging/console.js +1 -107
  82. package/dist/src/logging/console.js.map +1 -1
  83. package/dist/src/logging/types.d.ts +1 -11
  84. package/dist/src/logging/types.d.ts.map +1 -1
  85. package/dist/src/processors/index.d.ts +1 -1
  86. package/dist/src/processors/index.d.ts.map +1 -1
  87. package/dist/src/processors/index.js.map +1 -1
  88. package/dist/src/processors/processor-manager.d.ts +2 -2
  89. package/dist/src/processors/processor-manager.d.ts.map +1 -1
  90. package/dist/src/processors/processor-manager.js.map +1 -1
  91. package/dist/src/processors/relational/types.d.ts +2 -0
  92. package/dist/src/processors/relational/types.d.ts.map +1 -0
  93. package/dist/src/processors/relational/types.js +2 -0
  94. package/dist/src/processors/relational/types.js.map +1 -0
  95. package/dist/src/processors/relational/utils.d.ts +2 -0
  96. package/dist/src/processors/relational/utils.d.ts.map +1 -0
  97. package/dist/src/processors/relational/utils.js +2 -0
  98. package/dist/src/processors/relational/utils.js.map +1 -0
  99. package/dist/src/processors/utils.d.ts +2 -2
  100. package/dist/src/processors/utils.d.ts.map +1 -1
  101. package/dist/src/processors/utils.js +2 -1
  102. package/dist/src/processors/utils.js.map +1 -1
  103. package/dist/src/queue/queue.d.ts +33 -1
  104. package/dist/src/queue/queue.d.ts.map +1 -1
  105. package/dist/src/queue/queue.js +135 -1
  106. package/dist/src/queue/queue.js.map +1 -1
  107. package/dist/src/queue/types.d.ts +3 -3
  108. package/dist/src/queue/types.d.ts.map +1 -1
  109. package/dist/src/read-models/base-read-model.d.ts +1 -1
  110. package/dist/src/read-models/base-read-model.d.ts.map +1 -1
  111. package/dist/src/read-models/base-read-model.js +4 -4
  112. package/dist/src/read-models/base-read-model.js.map +1 -1
  113. package/dist/src/read-models/coordinator.d.ts +2 -2
  114. package/dist/src/read-models/coordinator.d.ts.map +1 -1
  115. package/dist/src/read-models/coordinator.js +8 -8
  116. package/dist/src/read-models/coordinator.js.map +1 -1
  117. package/dist/src/read-models/document-view.d.ts +6 -3
  118. package/dist/src/read-models/document-view.d.ts.map +1 -1
  119. package/dist/src/read-models/document-view.js +130 -48
  120. package/dist/src/read-models/document-view.js.map +1 -1
  121. package/dist/src/read-models/interfaces.d.ts +1 -1
  122. package/dist/src/read-models/interfaces.d.ts.map +1 -1
  123. package/dist/src/registry/implementation.d.ts +2 -0
  124. package/dist/src/registry/implementation.d.ts.map +1 -1
  125. package/dist/src/registry/implementation.js +6 -0
  126. package/dist/src/registry/implementation.js.map +1 -1
  127. package/dist/src/registry/index.d.ts +1 -1
  128. package/dist/src/registry/index.d.ts.map +1 -1
  129. package/dist/src/registry/interfaces.d.ts +8 -0
  130. package/dist/src/registry/interfaces.d.ts.map +1 -1
  131. package/dist/src/shared/awaiter.d.ts +2 -2
  132. package/dist/src/shared/awaiter.d.ts.map +1 -1
  133. package/dist/src/shared/awaiter.js +11 -11
  134. package/dist/src/shared/awaiter.js.map +1 -1
  135. package/dist/src/shared/collect-all-pages.d.ts +7 -0
  136. package/dist/src/shared/collect-all-pages.d.ts.map +1 -0
  137. package/dist/src/shared/collect-all-pages.js +17 -0
  138. package/dist/src/shared/collect-all-pages.js.map +1 -0
  139. package/dist/src/shared/drive-url.d.ts +15 -0
  140. package/dist/src/shared/drive-url.d.ts.map +1 -0
  141. package/dist/src/shared/drive-url.js +17 -0
  142. package/dist/src/shared/drive-url.js.map +1 -0
  143. package/dist/src/shared/factories.d.ts +6 -2
  144. package/dist/src/shared/factories.d.ts.map +1 -1
  145. package/dist/src/shared/factories.js +10 -2
  146. package/dist/src/shared/factories.js.map +1 -1
  147. package/dist/src/shared/types.d.ts +32 -6
  148. package/dist/src/shared/types.d.ts.map +1 -1
  149. package/dist/src/shared/types.js +4 -4
  150. package/dist/src/shared/types.js.map +1 -1
  151. package/dist/src/signer/passthrough-signer.d.ts +1 -1
  152. package/dist/src/signer/passthrough-signer.d.ts.map +1 -1
  153. package/dist/src/signer/passthrough-signer.js +1 -3
  154. package/dist/src/signer/passthrough-signer.js.map +1 -1
  155. package/dist/src/storage/interfaces.d.ts +56 -108
  156. package/dist/src/storage/interfaces.d.ts.map +1 -1
  157. package/dist/src/storage/interfaces.js.map +1 -1
  158. package/dist/src/storage/kysely/document-indexer.d.ts +8 -7
  159. package/dist/src/storage/kysely/document-indexer.d.ts.map +1 -1
  160. package/dist/src/storage/kysely/document-indexer.js +123 -52
  161. package/dist/src/storage/kysely/document-indexer.js.map +1 -1
  162. package/dist/src/storage/kysely/store.d.ts +5 -4
  163. package/dist/src/storage/kysely/store.d.ts.map +1 -1
  164. package/dist/src/storage/kysely/store.js +52 -21
  165. package/dist/src/storage/kysely/store.js.map +1 -1
  166. package/dist/src/storage/kysely/sync-cursor-storage.d.ts +1 -1
  167. package/dist/src/storage/kysely/sync-cursor-storage.d.ts.map +1 -1
  168. package/dist/src/storage/kysely/sync-cursor-storage.js +6 -2
  169. package/dist/src/storage/kysely/sync-cursor-storage.js.map +1 -1
  170. package/dist/src/storage/kysely/sync-remote-storage.js +1 -1
  171. package/dist/src/storage/kysely/sync-remote-storage.js.map +1 -1
  172. package/dist/src/storage/kysely/types.d.ts +2 -0
  173. package/dist/src/storage/kysely/types.d.ts.map +1 -1
  174. package/dist/src/storage/migrations/011_add_cursor_type_column.d.ts +3 -0
  175. package/dist/src/storage/migrations/011_add_cursor_type_column.d.ts.map +1 -0
  176. package/dist/src/storage/migrations/011_add_cursor_type_column.js +29 -0
  177. package/dist/src/storage/migrations/011_add_cursor_type_column.js.map +1 -0
  178. package/dist/src/storage/migrations/012_add_source_remote_column.d.ts +3 -0
  179. package/dist/src/storage/migrations/012_add_source_remote_column.d.ts.map +1 -0
  180. package/dist/src/storage/migrations/012_add_source_remote_column.js +7 -0
  181. package/dist/src/storage/migrations/012_add_source_remote_column.js.map +1 -0
  182. package/dist/src/storage/migrations/migrator.d.ts.map +1 -1
  183. package/dist/src/storage/migrations/migrator.js +4 -0
  184. package/dist/src/storage/migrations/migrator.js.map +1 -1
  185. package/dist/src/subs/subscription-notification-read-model.d.ts +3 -2
  186. package/dist/src/subs/subscription-notification-read-model.d.ts.map +1 -1
  187. package/dist/src/subs/subscription-notification-read-model.js +1 -1
  188. package/dist/src/subs/subscription-notification-read-model.js.map +1 -1
  189. package/dist/src/sync/batch-aggregator.d.ts +25 -0
  190. package/dist/src/sync/batch-aggregator.d.ts.map +1 -0
  191. package/dist/src/sync/batch-aggregator.js +94 -0
  192. package/dist/src/sync/batch-aggregator.js.map +1 -0
  193. package/dist/src/sync/buffered-mailbox.d.ts +36 -0
  194. package/dist/src/sync/buffered-mailbox.d.ts.map +1 -0
  195. package/dist/src/sync/buffered-mailbox.js +164 -0
  196. package/dist/src/sync/buffered-mailbox.js.map +1 -0
  197. package/dist/src/sync/channels/{gql-channel.d.ts → gql-req-channel.d.ts} +44 -42
  198. package/dist/src/sync/channels/gql-req-channel.d.ts.map +1 -0
  199. package/dist/src/sync/channels/gql-req-channel.js +500 -0
  200. package/dist/src/sync/channels/gql-req-channel.js.map +1 -0
  201. package/dist/src/sync/channels/gql-request-channel-factory.d.ts +32 -0
  202. package/dist/src/sync/channels/gql-request-channel-factory.d.ts.map +1 -0
  203. package/dist/src/sync/channels/gql-request-channel-factory.js +105 -0
  204. package/dist/src/sync/channels/gql-request-channel-factory.js.map +1 -0
  205. package/dist/src/sync/channels/gql-res-channel.d.ts +25 -0
  206. package/dist/src/sync/channels/gql-res-channel.d.ts.map +1 -0
  207. package/dist/src/sync/channels/gql-res-channel.js +79 -0
  208. package/dist/src/sync/channels/gql-res-channel.js.map +1 -0
  209. package/dist/src/sync/channels/gql-response-channel-factory.d.ts +13 -0
  210. package/dist/src/sync/channels/gql-response-channel-factory.d.ts.map +1 -0
  211. package/dist/src/sync/channels/gql-response-channel-factory.js +14 -0
  212. package/dist/src/sync/channels/gql-response-channel-factory.js.map +1 -0
  213. package/dist/src/sync/channels/index.d.ts +6 -4
  214. package/dist/src/sync/channels/index.d.ts.map +1 -1
  215. package/dist/src/sync/channels/index.js +6 -4
  216. package/dist/src/sync/channels/index.js.map +1 -1
  217. package/dist/src/sync/channels/interval-poll-timer.d.ts +38 -0
  218. package/dist/src/sync/channels/interval-poll-timer.d.ts.map +1 -0
  219. package/dist/src/sync/channels/interval-poll-timer.js +117 -0
  220. package/dist/src/sync/channels/interval-poll-timer.js.map +1 -0
  221. package/dist/src/sync/channels/poll-timer.d.ts +14 -0
  222. package/dist/src/sync/channels/poll-timer.d.ts.map +1 -0
  223. package/dist/src/sync/channels/poll-timer.js +2 -0
  224. package/dist/src/sync/channels/poll-timer.js.map +1 -0
  225. package/dist/src/sync/channels/utils.d.ts +15 -1
  226. package/dist/src/sync/channels/utils.d.ts.map +1 -1
  227. package/dist/src/sync/channels/utils.js +66 -2
  228. package/dist/src/sync/channels/utils.js.map +1 -1
  229. package/dist/src/sync/index.d.ts +10 -6
  230. package/dist/src/sync/index.d.ts.map +1 -1
  231. package/dist/src/sync/index.js +7 -5
  232. package/dist/src/sync/index.js.map +1 -1
  233. package/dist/src/sync/interfaces.d.ts +34 -21
  234. package/dist/src/sync/interfaces.d.ts.map +1 -1
  235. package/dist/src/sync/mailbox.d.ts +51 -12
  236. package/dist/src/sync/mailbox.d.ts.map +1 -1
  237. package/dist/src/sync/mailbox.js +89 -6
  238. package/dist/src/sync/mailbox.js.map +1 -1
  239. package/dist/src/sync/sync-awaiter.d.ts +34 -0
  240. package/dist/src/sync/sync-awaiter.d.ts.map +1 -0
  241. package/dist/src/sync/sync-awaiter.js +124 -0
  242. package/dist/src/sync/sync-awaiter.js.map +1 -0
  243. package/dist/src/sync/sync-manager.d.ts +16 -6
  244. package/dist/src/sync/sync-manager.d.ts.map +1 -1
  245. package/dist/src/sync/sync-manager.js +204 -94
  246. package/dist/src/sync/sync-manager.js.map +1 -1
  247. package/dist/src/sync/sync-operation.d.ts +4 -2
  248. package/dist/src/sync/sync-operation.d.ts.map +1 -1
  249. package/dist/src/sync/sync-operation.js +8 -1
  250. package/dist/src/sync/sync-operation.js.map +1 -1
  251. package/dist/src/sync/sync-status-tracker.d.ts +31 -0
  252. package/dist/src/sync/sync-status-tracker.d.ts.map +1 -0
  253. package/dist/src/sync/sync-status-tracker.js +137 -0
  254. package/dist/src/sync/sync-status-tracker.js.map +1 -0
  255. package/dist/src/sync/types.d.ts +79 -2
  256. package/dist/src/sync/types.d.ts.map +1 -1
  257. package/dist/src/sync/types.js +15 -0
  258. package/dist/src/sync/types.js.map +1 -1
  259. package/dist/src/sync/utils.d.ts +28 -1
  260. package/dist/src/sync/utils.d.ts.map +1 -1
  261. package/dist/src/sync/utils.js +136 -0
  262. package/dist/src/sync/utils.js.map +1 -1
  263. package/dist/src/utils/reshuffle.d.ts +15 -5
  264. package/dist/src/utils/reshuffle.d.ts.map +1 -1
  265. package/dist/src/utils/reshuffle.js +29 -6
  266. package/dist/src/utils/reshuffle.js.map +1 -1
  267. package/package.json +12 -13
  268. package/dist/src/processors/types.d.ts +0 -63
  269. package/dist/src/processors/types.d.ts.map +0 -1
  270. package/dist/src/processors/types.js +0 -2
  271. package/dist/src/processors/types.js.map +0 -1
  272. package/dist/src/storage/consistency-aware-legacy-storage.d.ts +0 -33
  273. package/dist/src/storage/consistency-aware-legacy-storage.d.ts.map +0 -1
  274. package/dist/src/storage/consistency-aware-legacy-storage.js +0 -65
  275. package/dist/src/storage/consistency-aware-legacy-storage.js.map +0 -1
  276. package/dist/src/sync/channels/composite-channel-factory.d.ts +0 -30
  277. package/dist/src/sync/channels/composite-channel-factory.d.ts.map +0 -1
  278. package/dist/src/sync/channels/composite-channel-factory.js +0 -87
  279. package/dist/src/sync/channels/composite-channel-factory.js.map +0 -1
  280. package/dist/src/sync/channels/gql-channel-factory.d.ts +0 -25
  281. package/dist/src/sync/channels/gql-channel-factory.d.ts.map +0 -1
  282. package/dist/src/sync/channels/gql-channel-factory.js +0 -76
  283. package/dist/src/sync/channels/gql-channel-factory.js.map +0 -1
  284. package/dist/src/sync/channels/gql-channel.d.ts.map +0 -1
  285. package/dist/src/sync/channels/gql-channel.js +0 -423
  286. package/dist/src/sync/channels/gql-channel.js.map +0 -1
  287. package/dist/src/sync/channels/polling-channel.d.ts +0 -39
  288. package/dist/src/sync/channels/polling-channel.d.ts.map +0 -1
  289. package/dist/src/sync/channels/polling-channel.js +0 -72
  290. package/dist/src/sync/channels/polling-channel.js.map +0 -1
@@ -1,18 +1,7 @@
1
- import type { Operation, PHDocument } from "document-model";
2
- import type { ConsistencyToken } from "../shared/types.js";
1
+ import type { Operation, OperationWithContext, PHDocument } from "document-model";
2
+ import type { ConsistencyToken, PagedResults, PagingOptions } from "../shared/types.js";
3
3
  import type { RemoteCursor, RemoteRecord } from "../sync/types.js";
4
- export type OperationContext = {
5
- documentId: string;
6
- documentType: string;
7
- scope: string;
8
- branch: string;
9
- resultingState?: string;
10
- ordinal: number;
11
- };
12
- export type OperationWithContext = {
13
- operation: Operation;
14
- context: OperationContext;
15
- };
4
+ export type { PagedResults, PagingOptions } from "../shared/types.js";
16
5
  export declare class DuplicateOperationError extends Error {
17
6
  constructor(description: string);
18
7
  }
@@ -33,7 +22,7 @@ export type DocumentRevisions = {
33
22
  };
34
23
  export interface IOperationStore {
35
24
  apply(documentId: string, documentType: string, scope: string, branch: string, revision: number, fn: (txn: AtomicTxn) => void | Promise<void>, signal?: AbortSignal): Promise<void>;
36
- getSince(documentId: string, scope: string, branch: string, revision: number, paging?: PagingOptions, signal?: AbortSignal): Promise<PagedResults<Operation>>;
25
+ getSince(documentId: string, scope: string, branch: string, revision: number, filter?: OperationFilter, paging?: PagingOptions, signal?: AbortSignal): Promise<PagedResults<Operation>>;
37
26
  getSinceId(id: number, paging?: PagingOptions, signal?: AbortSignal): Promise<PagedResults<OperationWithContext>>;
38
27
  /**
39
28
  * Gets operations that may conflict with incoming operations during a load.
@@ -70,6 +59,7 @@ export interface IKeyframeStore {
70
59
  export interface ViewFilter {
71
60
  branch?: string;
72
61
  scopes?: string[];
62
+ excludeSourceRemote?: string;
73
63
  }
74
64
  export interface SearchFilter {
75
65
  documentType?: string;
@@ -77,14 +67,19 @@ export interface SearchFilter {
77
67
  identifiers?: Record<string, any>;
78
68
  includeDeleted?: boolean;
79
69
  }
80
- export interface PagingOptions {
81
- cursor?: string;
82
- limit?: number;
83
- }
84
- export interface PagedResults<T> {
85
- items: T[];
86
- nextCursor?: string;
87
- hasMore: boolean;
70
+ /**
71
+ * Filter options for querying operations. When multiple filters are provided,
72
+ * they are combined with AND logic.
73
+ */
74
+ export interface OperationFilter {
75
+ /** Filter by action types (OR logic within array) */
76
+ actionTypes?: string[];
77
+ /** Filter operations with timestamp >= this value (ISO string) */
78
+ timestampFrom?: string;
79
+ /** Filter operations with timestamp <= this value (ISO string) */
80
+ timestampTo?: string;
81
+ /** Filter operations with index >= this value */
82
+ sinceRevision?: number;
88
83
  }
89
84
  export interface DocumentSnapshot {
90
85
  id: string;
@@ -143,6 +138,15 @@ export interface IDocumentView {
143
138
  * @param signal - Optional abort signal to cancel the request
144
139
  */
145
140
  get<TDocument extends PHDocument>(documentId: string, view?: ViewFilter, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<TDocument>;
141
+ /**
142
+ * Returns the documents with the given ids.
143
+ *
144
+ * @param documentIds - The list of document ids to get.
145
+ * @param view - Optional filter containing branch and scopes information
146
+ * @param consistencyToken - Optional token for read-after-write consistency
147
+ * @param signal - Optional abort signal to cancel the request
148
+ */
149
+ getMany<TDocument extends PHDocument>(documentIds: string[], view?: ViewFilter, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<TDocument[]>;
146
150
  /**
147
151
  * Returns the document with the given identifier (either id or slug).
148
152
  * Throws an error if the identifier matches both an id and a slug that refer to different documents.
@@ -174,6 +178,29 @@ export interface IDocumentView {
174
178
  * @returns The document ID or undefined if the slug doesn't exist
175
179
  */
176
180
  resolveSlug(slug: string, view?: ViewFilter, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<string | undefined>;
181
+ /**
182
+ * Resolves a list of slugs to document IDs.
183
+ *
184
+ * @param slugs - The list of slugs to resolve.
185
+ * @param view - Optional filter containing branch and scopes information
186
+ * @param consistencyToken - Optional token for read-after-write consistency
187
+ * @param signal - Optional abort signal to cancel the request
188
+ * @returns The list of document IDs
189
+ */
190
+ resolveSlugs(slugs: string[], view?: ViewFilter, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<string[]>;
191
+ /**
192
+ * Resolves an identifier (either id or slug) to a document ID.
193
+ * This is a lightweight alternative to getByIdOrSlug that returns just the ID
194
+ * without fetching the full document.
195
+ *
196
+ * @param identifier - The id or slug to resolve
197
+ * @param view - Optional filter containing branch and scopes information
198
+ * @param consistencyToken - Optional token for read-after-write consistency
199
+ * @param signal - Optional abort signal to cancel the request
200
+ * @returns The document ID
201
+ * @throws {Error} If document not found or identifier matches both an ID and slug referring to different documents
202
+ */
203
+ resolveIdOrSlug(identifier: string, view?: ViewFilter, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<string>;
177
204
  }
178
205
  export type DocumentRelationship = {
179
206
  sourceId: string;
@@ -221,7 +248,7 @@ export interface IDocumentIndexer {
221
248
  * @param consistencyToken - Optional token for read-after-write consistency
222
249
  * @param signal - Optional abort signal to cancel the request
223
250
  */
224
- getOutgoing(documentId: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<DocumentRelationship[]>;
251
+ getOutgoing(documentId: string, types?: string[], paging?: PagingOptions, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<PagedResults<DocumentRelationship>>;
225
252
  /**
226
253
  * Returns incoming relationships to a document.
227
254
  *
@@ -230,7 +257,7 @@ export interface IDocumentIndexer {
230
257
  * @param consistencyToken - Optional token for read-after-write consistency
231
258
  * @param signal - Optional abort signal to cancel the request
232
259
  */
233
- getIncoming(documentId: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<DocumentRelationship[]>;
260
+ getIncoming(documentId: string, types?: string[], paging?: PagingOptions, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<PagedResults<DocumentRelationship>>;
234
261
  /**
235
262
  * Checks if a relationship exists between two documents.
236
263
  *
@@ -250,7 +277,7 @@ export interface IDocumentIndexer {
250
277
  * @param consistencyToken - Optional token for read-after-write consistency
251
278
  * @param signal - Optional abort signal to cancel the request
252
279
  */
253
- getUndirectedRelationships(a: string, b: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<DocumentRelationship[]>;
280
+ getUndirectedRelationships(a: string, b: string, types?: string[], paging?: PagingOptions, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<PagedResults<DocumentRelationship>>;
254
281
  /**
255
282
  * Returns all directed relationships between two documents.
256
283
  *
@@ -260,7 +287,7 @@ export interface IDocumentIndexer {
260
287
  * @param consistencyToken - Optional token for read-after-write consistency
261
288
  * @param signal - Optional abort signal to cancel the request
262
289
  */
263
- getDirectedRelationships(sourceId: string, targetId: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<DocumentRelationship[]>;
290
+ getDirectedRelationships(sourceId: string, targetId: string, types?: string[], paging?: PagingOptions, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<PagedResults<DocumentRelationship>>;
264
291
  /**
265
292
  * Finds a path from source to target following directed edges.
266
293
  *
@@ -289,86 +316,6 @@ export interface IDocumentIndexer {
289
316
  */
290
317
  getRelationshipTypes(consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<string[]>;
291
318
  }
292
- /**
293
- * A consistency-aware storage interface used by the Reactor when legacy storage
294
- * mode is enabled. This interface provides read-after-write consistency by
295
- * accepting an optional consistency token on read operations.
296
- *
297
- * This is a standalone interface (not extending IDocumentStorage) because the
298
- * method signatures differ - consistency token is added as an optional parameter
299
- * to read operations.
300
- */
301
- export interface IConsistencyAwareStorage {
302
- /**
303
- * Returns the document with the given id.
304
- *
305
- * @param id - The id of the document to get
306
- * @param consistencyToken - Optional token for read-after-write consistency
307
- * @param signal - Optional abort signal to cancel the request
308
- */
309
- get<TDocument extends PHDocument>(id: string, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<TDocument>;
310
- /**
311
- * Returns the document with the given slug.
312
- *
313
- * @param slug - The slug of the document to get
314
- * @param consistencyToken - Optional token for read-after-write consistency
315
- * @param signal - Optional abort signal to cancel the request
316
- */
317
- getBySlug<TDocument extends PHDocument>(slug: string, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<TDocument>;
318
- /**
319
- * Returns true if the document exists.
320
- *
321
- * @param id - The id of the document to check
322
- * @param consistencyToken - Optional token for read-after-write consistency
323
- * @param signal - Optional abort signal to cancel the request
324
- */
325
- exists(id: string, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<boolean>;
326
- /**
327
- * Finds documents by their document type.
328
- *
329
- * @param type - The document type to search for
330
- * @param limit - Optional limit on the number of results
331
- * @param cursor - Optional cursor for pagination
332
- * @param consistencyToken - Optional token for read-after-write consistency
333
- * @param signal - Optional abort signal to cancel the request
334
- */
335
- findByType(type: string, limit?: number, cursor?: string, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<{
336
- documents: string[];
337
- nextCursor: string | undefined;
338
- }>;
339
- /**
340
- * Returns the children of a document.
341
- *
342
- * @param id - The id of the parent document
343
- * @param consistencyToken - Optional token for read-after-write consistency
344
- * @param signal - Optional abort signal to cancel the request
345
- */
346
- getChildren(id: string, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<string[]>;
347
- /**
348
- * Resolves slugs to document IDs.
349
- *
350
- * @param slugs - The slugs to resolve
351
- * @param consistencyToken - Optional token for read-after-write consistency
352
- * @param signal - Optional abort signal to cancel the request
353
- */
354
- resolveIds(slugs: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<string[]>;
355
- /**
356
- * Resolves document IDs to slugs.
357
- *
358
- * @param ids - The document IDs to resolve
359
- * @param consistencyToken - Optional token for read-after-write consistency
360
- * @param signal - Optional abort signal to cancel the request
361
- */
362
- resolveSlugs(ids: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<string[]>;
363
- /**
364
- * Returns all parent documents of the child document with the given id.
365
- *
366
- * @param childId - The id of the child document
367
- * @param consistencyToken - Optional token for read-after-write consistency
368
- * @param signal - Optional abort signal to cancel the request
369
- */
370
- getParents(childId: string, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<string[]>;
371
- }
372
319
  export interface ISyncRemoteStorage {
373
320
  /**
374
321
  * Lists all remotes.
@@ -415,10 +362,11 @@ export interface ISyncCursorStorage {
415
362
  * Gets a cursor for a remote.
416
363
  *
417
364
  * @param remoteName - The name of the remote
365
+ * @param cursorType - The type of cursor ("inbox" or "outbox")
418
366
  * @param signal - Optional abort signal to cancel the request
419
367
  * @returns The cursor
420
368
  */
421
- get(remoteName: string, signal?: AbortSignal): Promise<RemoteCursor>;
369
+ get(remoteName: string, cursorType: "inbox" | "outbox", signal?: AbortSignal): Promise<RemoteCursor>;
422
370
  /**
423
371
  * Upserts a cursor.
424
372
  *
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/storage/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/storage/interfaces.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/storage/interfaces.ts"],"names":[],"mappings":"AAoBA,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD,YAAY,WAAmB;QAC7B,KAAK,CAAC,wBAAwB,WAAW,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,QAAgB,EAAE,MAAc;QAC1C,KAAK,CAAC,+BAA+B,QAAQ,SAAS,MAAM,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF"}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/storage/interfaces.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD,YAAY,WAAmB;QAC7B,KAAK,CAAC,wBAAwB,WAAW,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,QAAgB,EAAE,MAAc;QAC1C,KAAK,CAAC,+BAA+B,QAAQ,SAAS,MAAM,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF"}
@@ -1,8 +1,9 @@
1
+ import type { OperationWithContext } from "document-model";
1
2
  import type { Kysely } from "kysely";
2
3
  import type { IConsistencyTracker } from "../../shared/consistency-tracker.js";
3
- import type { ConsistencyToken } from "../../shared/types.js";
4
- import type { DocumentRelationship, IDocumentGraph, IDocumentIndexer, IOperationStore, OperationWithContext } from "../interfaces.js";
5
- import type { Database as StorageDatabase, DocumentIndexerDatabase } from "./types.js";
4
+ import type { ConsistencyToken, PagedResults, PagingOptions } from "../../shared/types.js";
5
+ import type { DocumentRelationship, IDocumentGraph, IDocumentIndexer, IOperationStore } from "../interfaces.js";
6
+ import type { DocumentIndexerDatabase, Database as StorageDatabase } from "./types.js";
6
7
  type Database = StorageDatabase & DocumentIndexerDatabase;
7
8
  export declare class KyselyDocumentIndexer implements IDocumentIndexer {
8
9
  private db;
@@ -13,11 +14,11 @@ export declare class KyselyDocumentIndexer implements IDocumentIndexer {
13
14
  init(): Promise<void>;
14
15
  indexOperations(items: OperationWithContext[]): Promise<void>;
15
16
  waitForConsistency(token: ConsistencyToken, timeoutMs?: number, signal?: AbortSignal): Promise<void>;
16
- getOutgoing(documentId: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<DocumentRelationship[]>;
17
- getIncoming(documentId: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<DocumentRelationship[]>;
17
+ getOutgoing(documentId: string, types?: string[], paging?: PagingOptions, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<PagedResults<DocumentRelationship>>;
18
+ getIncoming(documentId: string, types?: string[], paging?: PagingOptions, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<PagedResults<DocumentRelationship>>;
18
19
  hasRelationship(sourceId: string, targetId: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<boolean>;
19
- getUndirectedRelationships(a: string, b: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<DocumentRelationship[]>;
20
- getDirectedRelationships(sourceId: string, targetId: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<DocumentRelationship[]>;
20
+ getUndirectedRelationships(a: string, b: string, types?: string[], paging?: PagingOptions, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<PagedResults<DocumentRelationship>>;
21
+ getDirectedRelationships(sourceId: string, targetId: string, types?: string[], paging?: PagingOptions, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<PagedResults<DocumentRelationship>>;
21
22
  findPath(sourceId: string, targetId: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<string[] | null>;
22
23
  findAncestors(documentId: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<IDocumentGraph>;
23
24
  getRelationshipTypes(consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<string[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"document-indexer.d.ts","sourceRoot":"","sources":["../../../../src/storage/kysely/document-indexer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document-indexer.d.ts","sourceRoot":"","sources":["../../../../src/storage/kysely/document-indexer.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { v4 as uuidv4 } from "uuid";
2
+ import { collectAllPages } from "../../shared/collect-all-pages.js";
2
3
  export class KyselyDocumentIndexer {
3
4
  db;
4
5
  operationStore;
@@ -17,8 +18,8 @@ export class KyselyDocumentIndexer {
17
18
  if (indexerState) {
18
19
  this.lastOperationId = indexerState.lastOperationId;
19
20
  const missedOperations = await this.operationStore.getSinceId(this.lastOperationId);
20
- if (missedOperations.items.length > 0) {
21
- await this.indexOperations(missedOperations.items);
21
+ if (missedOperations.results.length > 0) {
22
+ await this.indexOperations(missedOperations.results);
22
23
  }
23
24
  }
24
25
  else {
@@ -29,8 +30,8 @@ export class KyselyDocumentIndexer {
29
30
  })
30
31
  .execute();
31
32
  const allOperations = await this.operationStore.getSinceId(0);
32
- if (allOperations.items.length > 0) {
33
- await this.indexOperations(allOperations.items);
33
+ if (allOperations.results.length > 0) {
34
+ await this.indexOperations(allOperations.results);
34
35
  }
35
36
  }
36
37
  }
@@ -78,13 +79,15 @@ export class KyselyDocumentIndexer {
78
79
  }
79
80
  await this.consistencyTracker.waitFor(token.coordinates, timeoutMs, signal);
80
81
  }
81
- async getOutgoing(documentId, types, consistencyToken, signal) {
82
+ async getOutgoing(documentId, types, paging, consistencyToken, signal) {
82
83
  if (consistencyToken) {
83
84
  await this.waitForConsistency(consistencyToken, undefined, signal);
84
85
  }
85
86
  if (signal?.aborted) {
86
87
  throw new Error("Operation aborted");
87
88
  }
89
+ const startIndex = paging?.cursor ? parseInt(paging.cursor) : 0;
90
+ const limit = paging?.limit || 100;
88
91
  let query = this.db
89
92
  .selectFrom("DocumentRelationship")
90
93
  .selectAll()
@@ -92,25 +95,42 @@ export class KyselyDocumentIndexer {
92
95
  if (types && types.length > 0) {
93
96
  query = query.where("relationshipType", "in", types);
94
97
  }
95
- const rows = await query.execute();
96
- return rows.map((row) => ({
97
- sourceId: row.sourceId,
98
- targetId: row.targetId,
99
- relationshipType: row.relationshipType,
100
- metadata: row.metadata
101
- ? row.metadata
98
+ const rows = await query
99
+ .orderBy("createdAt", "asc")
100
+ .orderBy("id", "asc")
101
+ .offset(startIndex)
102
+ .limit(limit + 1)
103
+ .execute();
104
+ const hasMore = rows.length > limit;
105
+ const results = hasMore ? rows.slice(0, limit) : rows;
106
+ const nextCursor = hasMore ? String(startIndex + limit) : undefined;
107
+ return {
108
+ results: results.map((row) => ({
109
+ sourceId: row.sourceId,
110
+ targetId: row.targetId,
111
+ relationshipType: row.relationshipType,
112
+ metadata: row.metadata
113
+ ? row.metadata
114
+ : undefined,
115
+ createdAt: row.createdAt,
116
+ updatedAt: row.updatedAt,
117
+ })),
118
+ options: paging || { cursor: "0", limit: 100 },
119
+ nextCursor,
120
+ next: hasMore
121
+ ? () => this.getOutgoing(documentId, types, { cursor: nextCursor, limit }, consistencyToken, signal)
102
122
  : undefined,
103
- createdAt: row.createdAt,
104
- updatedAt: row.updatedAt,
105
- }));
123
+ };
106
124
  }
107
- async getIncoming(documentId, types, consistencyToken, signal) {
125
+ async getIncoming(documentId, types, paging, consistencyToken, signal) {
108
126
  if (consistencyToken) {
109
127
  await this.waitForConsistency(consistencyToken, undefined, signal);
110
128
  }
111
129
  if (signal?.aborted) {
112
130
  throw new Error("Operation aborted");
113
131
  }
132
+ const startIndex = paging?.cursor ? parseInt(paging.cursor) : 0;
133
+ const limit = paging?.limit || 100;
114
134
  let query = this.db
115
135
  .selectFrom("DocumentRelationship")
116
136
  .selectAll()
@@ -118,17 +138,32 @@ export class KyselyDocumentIndexer {
118
138
  if (types && types.length > 0) {
119
139
  query = query.where("relationshipType", "in", types);
120
140
  }
121
- const rows = await query.execute();
122
- return rows.map((row) => ({
123
- sourceId: row.sourceId,
124
- targetId: row.targetId,
125
- relationshipType: row.relationshipType,
126
- metadata: row.metadata
127
- ? row.metadata
141
+ const rows = await query
142
+ .orderBy("createdAt", "asc")
143
+ .orderBy("id", "asc")
144
+ .offset(startIndex)
145
+ .limit(limit + 1)
146
+ .execute();
147
+ const hasMore = rows.length > limit;
148
+ const results = hasMore ? rows.slice(0, limit) : rows;
149
+ const nextCursor = hasMore ? String(startIndex + limit) : undefined;
150
+ return {
151
+ results: results.map((row) => ({
152
+ sourceId: row.sourceId,
153
+ targetId: row.targetId,
154
+ relationshipType: row.relationshipType,
155
+ metadata: row.metadata
156
+ ? row.metadata
157
+ : undefined,
158
+ createdAt: row.createdAt,
159
+ updatedAt: row.updatedAt,
160
+ })),
161
+ options: paging || { cursor: "0", limit: 100 },
162
+ nextCursor,
163
+ next: hasMore
164
+ ? () => this.getIncoming(documentId, types, { cursor: nextCursor, limit }, consistencyToken, signal)
128
165
  : undefined,
129
- createdAt: row.createdAt,
130
- updatedAt: row.updatedAt,
131
- }));
166
+ };
132
167
  }
133
168
  async hasRelationship(sourceId, targetId, types, consistencyToken, signal) {
134
169
  if (consistencyToken) {
@@ -148,13 +183,15 @@ export class KyselyDocumentIndexer {
148
183
  const result = await query.executeTakeFirst();
149
184
  return result !== undefined;
150
185
  }
151
- async getUndirectedRelationships(a, b, types, consistencyToken, signal) {
186
+ async getUndirectedRelationships(a, b, types, paging, consistencyToken, signal) {
152
187
  if (consistencyToken) {
153
188
  await this.waitForConsistency(consistencyToken, undefined, signal);
154
189
  }
155
190
  if (signal?.aborted) {
156
191
  throw new Error("Operation aborted");
157
192
  }
193
+ const startIndex = paging?.cursor ? parseInt(paging.cursor) : 0;
194
+ const limit = paging?.limit || 100;
158
195
  let query = this.db
159
196
  .selectFrom("DocumentRelationship")
160
197
  .selectAll()
@@ -165,25 +202,42 @@ export class KyselyDocumentIndexer {
165
202
  if (types && types.length > 0) {
166
203
  query = query.where("relationshipType", "in", types);
167
204
  }
168
- const rows = await query.execute();
169
- return rows.map((row) => ({
170
- sourceId: row.sourceId,
171
- targetId: row.targetId,
172
- relationshipType: row.relationshipType,
173
- metadata: row.metadata
174
- ? row.metadata
205
+ const rows = await query
206
+ .orderBy("createdAt", "asc")
207
+ .orderBy("id", "asc")
208
+ .offset(startIndex)
209
+ .limit(limit + 1)
210
+ .execute();
211
+ const hasMore = rows.length > limit;
212
+ const results = hasMore ? rows.slice(0, limit) : rows;
213
+ const nextCursor = hasMore ? String(startIndex + limit) : undefined;
214
+ return {
215
+ results: results.map((row) => ({
216
+ sourceId: row.sourceId,
217
+ targetId: row.targetId,
218
+ relationshipType: row.relationshipType,
219
+ metadata: row.metadata
220
+ ? row.metadata
221
+ : undefined,
222
+ createdAt: row.createdAt,
223
+ updatedAt: row.updatedAt,
224
+ })),
225
+ options: paging || { cursor: "0", limit: 100 },
226
+ nextCursor,
227
+ next: hasMore
228
+ ? () => this.getUndirectedRelationships(a, b, types, { cursor: nextCursor, limit }, consistencyToken, signal)
175
229
  : undefined,
176
- createdAt: row.createdAt,
177
- updatedAt: row.updatedAt,
178
- }));
230
+ };
179
231
  }
180
- async getDirectedRelationships(sourceId, targetId, types, consistencyToken, signal) {
232
+ async getDirectedRelationships(sourceId, targetId, types, paging, consistencyToken, signal) {
181
233
  if (consistencyToken) {
182
234
  await this.waitForConsistency(consistencyToken, undefined, signal);
183
235
  }
184
236
  if (signal?.aborted) {
185
237
  throw new Error("Operation aborted");
186
238
  }
239
+ const startIndex = paging?.cursor ? parseInt(paging.cursor) : 0;
240
+ const limit = paging?.limit || 100;
187
241
  let query = this.db
188
242
  .selectFrom("DocumentRelationship")
189
243
  .selectAll()
@@ -192,17 +246,32 @@ export class KyselyDocumentIndexer {
192
246
  if (types && types.length > 0) {
193
247
  query = query.where("relationshipType", "in", types);
194
248
  }
195
- const rows = await query.execute();
196
- return rows.map((row) => ({
197
- sourceId: row.sourceId,
198
- targetId: row.targetId,
199
- relationshipType: row.relationshipType,
200
- metadata: row.metadata
201
- ? row.metadata
249
+ const rows = await query
250
+ .orderBy("createdAt", "asc")
251
+ .orderBy("id", "asc")
252
+ .offset(startIndex)
253
+ .limit(limit + 1)
254
+ .execute();
255
+ const hasMore = rows.length > limit;
256
+ const results = hasMore ? rows.slice(0, limit) : rows;
257
+ const nextCursor = hasMore ? String(startIndex + limit) : undefined;
258
+ return {
259
+ results: results.map((row) => ({
260
+ sourceId: row.sourceId,
261
+ targetId: row.targetId,
262
+ relationshipType: row.relationshipType,
263
+ metadata: row.metadata
264
+ ? row.metadata
265
+ : undefined,
266
+ createdAt: row.createdAt,
267
+ updatedAt: row.updatedAt,
268
+ })),
269
+ options: paging || { cursor: "0", limit: 100 },
270
+ nextCursor,
271
+ next: hasMore
272
+ ? () => this.getDirectedRelationships(sourceId, targetId, types, { cursor: nextCursor, limit }, consistencyToken, signal)
202
273
  : undefined,
203
- createdAt: row.createdAt,
204
- updatedAt: row.updatedAt,
205
- }));
274
+ };
206
275
  }
207
276
  async findPath(sourceId, targetId, types, consistencyToken, signal) {
208
277
  if (consistencyToken) {
@@ -227,8 +296,9 @@ export class KyselyDocumentIndexer {
227
296
  continue;
228
297
  }
229
298
  visited.add(current.id);
230
- const outgoing = await this.getOutgoing(current.id, types, undefined, signal);
231
- for (const rel of outgoing) {
299
+ const outgoingPage = await this.getOutgoing(current.id, types, undefined, consistencyToken, signal);
300
+ const outgoingRelationships = await collectAllPages(outgoingPage, signal);
301
+ for (const rel of outgoingRelationships) {
232
302
  if (!visited.has(rel.targetId)) {
233
303
  queue.push({
234
304
  id: rel.targetId,
@@ -256,8 +326,9 @@ export class KyselyDocumentIndexer {
256
326
  continue;
257
327
  }
258
328
  visited.add(currentId);
259
- const incoming = await this.getIncoming(currentId, types, undefined, signal);
260
- for (const rel of incoming) {
329
+ const incomingPage = await this.getIncoming(currentId, types, undefined, consistencyToken, signal);
330
+ const incomingRelationships = await collectAllPages(incomingPage, signal);
331
+ for (const rel of incomingRelationships) {
261
332
  nodes.add(rel.sourceId);
262
333
  edges.push({
263
334
  from: rel.sourceId,