@powerhousedao/reactor 5.0.0 → 5.0.1-staging.10

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 (130) hide show
  1. package/dist/src/cache/kysely-write-cache.d.ts +4 -3
  2. package/dist/src/cache/kysely-write-cache.d.ts.map +1 -1
  3. package/dist/src/cache/kysely-write-cache.js +12 -12
  4. package/dist/src/cache/kysely-write-cache.js.map +1 -1
  5. package/dist/src/client/reactor-client.d.ts +2 -2
  6. package/dist/src/client/reactor-client.d.ts.map +1 -1
  7. package/dist/src/client/reactor-client.js +8 -8
  8. package/dist/src/client/reactor-client.js.map +1 -1
  9. package/dist/src/client/types.d.ts +4 -4
  10. package/dist/src/client/types.d.ts.map +1 -1
  11. package/dist/src/core/reactor-builder.d.ts +32 -0
  12. package/dist/src/core/reactor-builder.d.ts.map +1 -0
  13. package/dist/src/core/reactor-builder.js +120 -0
  14. package/dist/src/core/reactor-builder.js.map +1 -0
  15. package/dist/src/core/reactor.d.ts +25 -11
  16. package/dist/src/core/reactor.d.ts.map +1 -1
  17. package/dist/src/core/reactor.js +625 -294
  18. package/dist/src/core/reactor.js.map +1 -1
  19. package/dist/src/core/types.d.ts +64 -7
  20. package/dist/src/core/types.d.ts.map +1 -1
  21. package/dist/src/core/utils.d.ts +46 -2
  22. package/dist/src/core/utils.d.ts.map +1 -1
  23. package/dist/src/core/utils.js +119 -0
  24. package/dist/src/core/utils.js.map +1 -1
  25. package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -1
  26. package/dist/src/executor/simple-job-executor-manager.js +3 -1
  27. package/dist/src/executor/simple-job-executor-manager.js.map +1 -1
  28. package/dist/src/executor/simple-job-executor.d.ts +14 -2
  29. package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
  30. package/dist/src/executor/simple-job-executor.js +368 -249
  31. package/dist/src/executor/simple-job-executor.js.map +1 -1
  32. package/dist/src/executor/types.d.ts +2 -0
  33. package/dist/src/executor/types.d.ts.map +1 -1
  34. package/dist/src/executor/types.js.map +1 -1
  35. package/dist/src/executor/util.d.ts +18 -0
  36. package/dist/src/executor/util.d.ts.map +1 -1
  37. package/dist/src/executor/util.js +42 -1
  38. package/dist/src/executor/util.js.map +1 -1
  39. package/dist/src/index.d.ts +9 -6
  40. package/dist/src/index.d.ts.map +1 -1
  41. package/dist/src/index.js +6 -2
  42. package/dist/src/index.js.map +1 -1
  43. package/dist/src/job-tracker/in-memory-job-tracker.d.ts +2 -2
  44. package/dist/src/job-tracker/in-memory-job-tracker.d.ts.map +1 -1
  45. package/dist/src/job-tracker/in-memory-job-tracker.js +7 -1
  46. package/dist/src/job-tracker/in-memory-job-tracker.js.map +1 -1
  47. package/dist/src/job-tracker/interfaces.d.ts +3 -2
  48. package/dist/src/job-tracker/interfaces.d.ts.map +1 -1
  49. package/dist/src/queue/types.d.ts +6 -1
  50. package/dist/src/queue/types.d.ts.map +1 -1
  51. package/dist/src/queue/types.js.map +1 -1
  52. package/dist/src/read-models/document-view.d.ts +10 -6
  53. package/dist/src/read-models/document-view.d.ts.map +1 -1
  54. package/dist/src/read-models/document-view.js +116 -113
  55. package/dist/src/read-models/document-view.js.map +1 -1
  56. package/dist/src/read-models/types.d.ts +3 -3
  57. package/dist/src/read-models/types.d.ts.map +1 -1
  58. package/dist/src/shared/consistency-tracker.d.ts +48 -0
  59. package/dist/src/shared/consistency-tracker.d.ts.map +1 -0
  60. package/dist/src/shared/consistency-tracker.js +123 -0
  61. package/dist/src/shared/consistency-tracker.js.map +1 -0
  62. package/dist/src/shared/types.d.ts +26 -0
  63. package/dist/src/shared/types.d.ts.map +1 -1
  64. package/dist/src/shared/types.js.map +1 -1
  65. package/dist/src/storage/interfaces.d.ts +148 -2
  66. package/dist/src/storage/interfaces.d.ts.map +1 -1
  67. package/dist/src/storage/interfaces.js.map +1 -1
  68. package/dist/src/storage/kysely/document-indexer.d.ts +28 -0
  69. package/dist/src/storage/kysely/document-indexer.d.ts.map +1 -0
  70. package/dist/src/storage/kysely/document-indexer.js +350 -0
  71. package/dist/src/storage/kysely/document-indexer.js.map +1 -0
  72. package/dist/src/storage/kysely/keyframe-store.d.ts.map +1 -1
  73. package/dist/src/storage/kysely/keyframe-store.js +6 -13
  74. package/dist/src/storage/kysely/keyframe-store.js.map +1 -1
  75. package/dist/src/storage/kysely/store.js +1 -1
  76. package/dist/src/storage/kysely/store.js.map +1 -1
  77. package/dist/src/storage/kysely/types.d.ts +35 -2
  78. package/dist/src/storage/kysely/types.d.ts.map +1 -1
  79. package/dist/src/storage/migrations/001_create_operation_table.d.ts +3 -0
  80. package/dist/src/storage/migrations/001_create_operation_table.d.ts.map +1 -0
  81. package/dist/src/storage/migrations/001_create_operation_table.js +40 -0
  82. package/dist/src/storage/migrations/001_create_operation_table.js.map +1 -0
  83. package/dist/src/storage/migrations/002_create_keyframe_table.d.ts +3 -0
  84. package/dist/src/storage/migrations/002_create_keyframe_table.d.ts.map +1 -0
  85. package/dist/src/storage/migrations/002_create_keyframe_table.js +27 -0
  86. package/dist/src/storage/migrations/002_create_keyframe_table.js.map +1 -0
  87. package/dist/src/storage/migrations/003_create_document_table.d.ts +3 -0
  88. package/dist/src/storage/migrations/003_create_document_table.d.ts.map +1 -0
  89. package/dist/src/storage/migrations/003_create_document_table.js +10 -0
  90. package/dist/src/storage/migrations/003_create_document_table.js.map +1 -0
  91. package/dist/src/storage/migrations/004_create_document_relationship_table.d.ts +3 -0
  92. package/dist/src/storage/migrations/004_create_document_relationship_table.d.ts.map +1 -0
  93. package/dist/src/storage/migrations/004_create_document_relationship_table.js +35 -0
  94. package/dist/src/storage/migrations/004_create_document_relationship_table.js.map +1 -0
  95. package/dist/src/storage/migrations/005_create_indexer_state_table.d.ts +3 -0
  96. package/dist/src/storage/migrations/005_create_indexer_state_table.d.ts.map +1 -0
  97. package/dist/src/storage/migrations/005_create_indexer_state_table.js +10 -0
  98. package/dist/src/storage/migrations/005_create_indexer_state_table.js.map +1 -0
  99. package/dist/src/storage/migrations/006_create_document_snapshot_table.d.ts +3 -0
  100. package/dist/src/storage/migrations/006_create_document_snapshot_table.d.ts.map +1 -0
  101. package/dist/src/storage/migrations/006_create_document_snapshot_table.js +49 -0
  102. package/dist/src/storage/migrations/006_create_document_snapshot_table.js.map +1 -0
  103. package/dist/src/storage/migrations/007_create_slug_mapping_table.d.ts +3 -0
  104. package/dist/src/storage/migrations/007_create_slug_mapping_table.d.ts.map +1 -0
  105. package/dist/src/storage/migrations/007_create_slug_mapping_table.js +24 -0
  106. package/dist/src/storage/migrations/007_create_slug_mapping_table.js.map +1 -0
  107. package/dist/src/storage/migrations/008_create_view_state_table.d.ts +3 -0
  108. package/dist/src/storage/migrations/008_create_view_state_table.d.ts.map +1 -0
  109. package/dist/src/storage/migrations/008_create_view_state_table.js +9 -0
  110. package/dist/src/storage/migrations/008_create_view_state_table.js.map +1 -0
  111. package/dist/src/storage/migrations/index.d.ts +3 -0
  112. package/dist/src/storage/migrations/index.d.ts.map +1 -0
  113. package/dist/src/storage/migrations/index.js +3 -0
  114. package/dist/src/storage/migrations/index.js.map +1 -0
  115. package/dist/src/storage/migrations/migrator.d.ts +5 -0
  116. package/dist/src/storage/migrations/migrator.d.ts.map +1 -0
  117. package/dist/src/storage/migrations/migrator.js +51 -0
  118. package/dist/src/storage/migrations/migrator.js.map +1 -0
  119. package/dist/src/storage/migrations/run-migrations.d.ts +2 -0
  120. package/dist/src/storage/migrations/run-migrations.d.ts.map +1 -0
  121. package/dist/src/storage/migrations/run-migrations.js +58 -0
  122. package/dist/src/storage/migrations/run-migrations.js.map +1 -0
  123. package/dist/src/storage/migrations/types.d.ts +9 -0
  124. package/dist/src/storage/migrations/types.d.ts.map +1 -0
  125. package/dist/src/storage/migrations/types.js +2 -0
  126. package/dist/src/storage/migrations/types.js.map +1 -0
  127. package/dist/src/storage/txn.d.ts.map +1 -1
  128. package/dist/src/storage/txn.js +2 -0
  129. package/dist/src/storage/txn.js.map +1 -1
  130. package/package.json +8 -5
@@ -1,4 +1,5 @@
1
1
  import type { Operation, PHDocument } from "document-model";
2
+ import type { ConsistencyToken } from "../shared/types.js";
2
3
  export type OperationContext = {
3
4
  documentId: string;
4
5
  documentType: string;
@@ -102,20 +103,165 @@ export interface IDocumentView {
102
103
  * documents from operations - it always requires resultingState.
103
104
  */
104
105
  indexOperations(items: OperationWithContext[]): Promise<void>;
106
+ /**
107
+ * Blocks until the view has processed the coordinates referenced by the
108
+ * provided consistency token.
109
+ *
110
+ * @param token - Consistency token derived from the originating job
111
+ * @param timeoutMs - Optional timeout window in milliseconds
112
+ * @param signal - Optional abort signal to cancel the wait
113
+ */
114
+ waitForConsistency(token: ConsistencyToken, timeoutMs?: number, signal?: AbortSignal): Promise<void>;
105
115
  /**
106
116
  * Returns true if and only if the documents exist.
107
117
  *
108
118
  * @param documentIds - The list of document ids to check.
119
+ * @param consistencyToken - Optional token for read-after-write consistency
109
120
  * @param signal - Optional abort signal to cancel the request
110
121
  */
111
- exists(documentIds: string[], signal?: AbortSignal): Promise<boolean[]>;
122
+ exists(documentIds: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<boolean[]>;
112
123
  /**
113
124
  * Returns the document with the given id.
114
125
  *
115
126
  * @param documentId - The id of the document to get.
116
127
  * @param view - Optional filter containing branch and scopes information
128
+ * @param consistencyToken - Optional token for read-after-write consistency
129
+ * @param signal - Optional abort signal to cancel the request
130
+ */
131
+ get<TDocument extends PHDocument>(documentId: string, view?: ViewFilter, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<TDocument>;
132
+ /**
133
+ * Finds documents by their document type.
134
+ *
135
+ * @param type - The document type to search for
136
+ * @param view - Optional filter containing branch and scopes information
137
+ * @param paging - Optional paging options for cursor-based pagination
138
+ * @param consistencyToken - Optional token for read-after-write consistency
139
+ * @param signal - Optional abort signal to cancel the request
140
+ */
141
+ findByType(type: string, view?: ViewFilter, paging?: PagingOptions, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<PagedResults<PHDocument>>;
142
+ /**
143
+ * Resolves a slug to a document ID.
144
+ *
145
+ * @param slug - The slug to resolve
146
+ * @param view - Optional filter containing branch and scopes information
147
+ * @param consistencyToken - Optional token for read-after-write consistency
148
+ * @param signal - Optional abort signal to cancel the request
149
+ * @returns The document ID or undefined if the slug doesn't exist
150
+ */
151
+ resolveSlug(slug: string, view?: ViewFilter, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<string | undefined>;
152
+ }
153
+ export type DocumentRelationship = {
154
+ sourceId: string;
155
+ targetId: string;
156
+ relationshipType: string;
157
+ metadata?: Record<string, unknown>;
158
+ createdAt: Date;
159
+ updatedAt: Date;
160
+ };
161
+ export type DocumentGraphEdge = {
162
+ from: string;
163
+ to: string;
164
+ type: string;
165
+ };
166
+ export interface IDocumentGraph {
167
+ nodes: string[];
168
+ edges: DocumentGraphEdge[];
169
+ }
170
+ export interface IDocumentIndexer {
171
+ /**
172
+ * Initializes the indexer and catches up on any missed operations.
173
+ */
174
+ init(): Promise<void>;
175
+ /**
176
+ * Indexes a list of operations to update the relationship graph.
177
+ *
178
+ * @param operations - Operations to index. Will process ADD_RELATIONSHIP and
179
+ * REMOVE_RELATIONSHIP operations.
180
+ */
181
+ indexOperations(operations: OperationWithContext[]): Promise<void>;
182
+ /**
183
+ * Blocks until the indexer has processed the coordinates referenced by the
184
+ * provided consistency token.
185
+ *
186
+ * @param token - Consistency token derived from the originating job
187
+ * @param timeoutMs - Optional timeout window in milliseconds
188
+ * @param signal - Optional abort signal to cancel the wait
189
+ */
190
+ waitForConsistency(token: ConsistencyToken, timeoutMs?: number, signal?: AbortSignal): Promise<void>;
191
+ /**
192
+ * Returns outgoing relationships from a document.
193
+ *
194
+ * @param documentId - The source document id
195
+ * @param types - Optional filter by relationship types
196
+ * @param consistencyToken - Optional token for read-after-write consistency
197
+ * @param signal - Optional abort signal to cancel the request
198
+ */
199
+ getOutgoing(documentId: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<DocumentRelationship[]>;
200
+ /**
201
+ * Returns incoming relationships to a document.
202
+ *
203
+ * @param documentId - The target document id
204
+ * @param types - Optional filter by relationship types
205
+ * @param consistencyToken - Optional token for read-after-write consistency
206
+ * @param signal - Optional abort signal to cancel the request
207
+ */
208
+ getIncoming(documentId: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<DocumentRelationship[]>;
209
+ /**
210
+ * Checks if a relationship exists between two documents.
211
+ *
212
+ * @param sourceId - The source document id
213
+ * @param targetId - The target document id
214
+ * @param types - Optional filter by relationship types
215
+ * @param consistencyToken - Optional token for read-after-write consistency
216
+ * @param signal - Optional abort signal to cancel the request
217
+ */
218
+ hasRelationship(sourceId: string, targetId: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<boolean>;
219
+ /**
220
+ * Returns all undirected relationships between two documents.
221
+ *
222
+ * @param a - The ID of the first document
223
+ * @param b - The ID of the second document
224
+ * @param types - Optional filter by relationship types
225
+ * @param consistencyToken - Optional token for read-after-write consistency
226
+ * @param signal - Optional abort signal to cancel the request
227
+ */
228
+ getUndirectedRelationships(a: string, b: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<DocumentRelationship[]>;
229
+ /**
230
+ * Returns all directed relationships between two documents.
231
+ *
232
+ * @param sourceId - The source document id
233
+ * @param targetId - The target document id
234
+ * @param types - Optional filter by relationship types
235
+ * @param consistencyToken - Optional token for read-after-write consistency
236
+ * @param signal - Optional abort signal to cancel the request
237
+ */
238
+ getDirectedRelationships(sourceId: string, targetId: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<DocumentRelationship[]>;
239
+ /**
240
+ * Finds a path from source to target following directed edges.
241
+ *
242
+ * @param sourceId - The source document id
243
+ * @param targetId - The target document id
244
+ * @param types - Optional filter by relationship types
245
+ * @param consistencyToken - Optional token for read-after-write consistency
246
+ * @param signal - Optional abort signal to cancel the request
247
+ * @returns Array of document ids representing the path, or null if no path exists
248
+ */
249
+ findPath(sourceId: string, targetId: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<string[] | null>;
250
+ /**
251
+ * Returns all ancestors of a document in the relationship graph.
252
+ *
253
+ * @param documentId - The document id
254
+ * @param types - Optional filter by relationship types
255
+ * @param consistencyToken - Optional token for read-after-write consistency
256
+ * @param signal - Optional abort signal to cancel the request
257
+ */
258
+ findAncestors(documentId: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<IDocumentGraph>;
259
+ /**
260
+ * Returns all relationship types currently in the system.
261
+ *
262
+ * @param consistencyToken - Optional token for read-after-write consistency
117
263
  * @param signal - Optional abort signal to cancel the request
118
264
  */
119
- get<TDocument extends PHDocument>(documentId: string, view?: ViewFilter, signal?: AbortSignal): Promise<TDocument>;
265
+ getRelationshipTypes(consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<string[]>;
120
266
  }
121
267
  //# sourceMappingURL=interfaces.d.ts.map
@@ -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":"AAeA,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD,YAAY,IAAY;QACtB,KAAK,CAAC,uBAAuB,IAAI,iBAAiB,CAAC,CAAC;QACpD,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":"AAgBA,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD,YAAY,IAAY;QACtB,KAAK,CAAC,uBAAuB,IAAI,iBAAiB,CAAC,CAAC;QACpD,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"}
@@ -0,0 +1,28 @@
1
+ import type { Kysely } from "kysely";
2
+ 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";
6
+ type Database = StorageDatabase & DocumentIndexerDatabase;
7
+ export declare class KyselyDocumentIndexer implements IDocumentIndexer {
8
+ private db;
9
+ private operationStore;
10
+ private consistencyTracker;
11
+ private lastOperationId;
12
+ constructor(db: Kysely<Database>, operationStore: IOperationStore, consistencyTracker: IConsistencyTracker);
13
+ init(): Promise<void>;
14
+ indexOperations(items: OperationWithContext[]): Promise<void>;
15
+ 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[]>;
18
+ 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[]>;
21
+ findPath(sourceId: string, targetId: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<string[] | null>;
22
+ findAncestors(documentId: string, types?: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<IDocumentGraph>;
23
+ getRelationshipTypes(consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<string[]>;
24
+ private handleAddRelationship;
25
+ private handleRemoveRelationship;
26
+ }
27
+ export {};
28
+ //# sourceMappingURL=document-indexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-indexer.d.ts","sourceRoot":"","sources":["../../../../src/storage/kysely/document-indexer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,350 @@
1
+ import { v4 as uuidv4 } from "uuid";
2
+ export class KyselyDocumentIndexer {
3
+ db;
4
+ operationStore;
5
+ consistencyTracker;
6
+ lastOperationId = 0;
7
+ constructor(db, operationStore, consistencyTracker) {
8
+ this.db = db;
9
+ this.operationStore = operationStore;
10
+ this.consistencyTracker = consistencyTracker;
11
+ }
12
+ async init() {
13
+ const indexerState = await this.db
14
+ .selectFrom("IndexerState")
15
+ .selectAll()
16
+ .executeTakeFirst();
17
+ if (indexerState) {
18
+ this.lastOperationId = indexerState.lastOperationId;
19
+ const missedOperations = await this.operationStore.getSinceId(this.lastOperationId);
20
+ if (missedOperations.items.length > 0) {
21
+ await this.indexOperations(missedOperations.items);
22
+ }
23
+ }
24
+ else {
25
+ await this.db
26
+ .insertInto("IndexerState")
27
+ .values({
28
+ lastOperationId: 0,
29
+ })
30
+ .execute();
31
+ const allOperations = await this.operationStore.getSinceId(0);
32
+ if (allOperations.items.length > 0) {
33
+ await this.indexOperations(allOperations.items);
34
+ }
35
+ }
36
+ }
37
+ async indexOperations(items) {
38
+ if (items.length === 0)
39
+ return;
40
+ await this.db.transaction().execute(async (trx) => {
41
+ for (const item of items) {
42
+ const { operation } = item;
43
+ const actionType = operation.action.type;
44
+ if (actionType === "ADD_RELATIONSHIP") {
45
+ await this.handleAddRelationship(trx, operation);
46
+ }
47
+ else if (actionType === "REMOVE_RELATIONSHIP") {
48
+ await this.handleRemoveRelationship(trx, operation);
49
+ }
50
+ }
51
+ const lastOpId = items[items.length - 1].operation.id;
52
+ if (lastOpId && typeof lastOpId === "number") {
53
+ this.lastOperationId = lastOpId;
54
+ await trx
55
+ .updateTable("IndexerState")
56
+ .set({
57
+ lastOperationId: lastOpId,
58
+ lastOperationTimestamp: new Date(),
59
+ })
60
+ .execute();
61
+ }
62
+ });
63
+ const coordinates = [];
64
+ for (let i = 0; i < items.length; i++) {
65
+ const item = items[i];
66
+ coordinates.push({
67
+ documentId: item.context.documentId,
68
+ scope: item.context.scope,
69
+ branch: item.context.branch,
70
+ operationIndex: item.operation.index,
71
+ });
72
+ }
73
+ this.consistencyTracker.update(coordinates);
74
+ }
75
+ async waitForConsistency(token, timeoutMs, signal) {
76
+ if (token.coordinates.length === 0) {
77
+ return;
78
+ }
79
+ await this.consistencyTracker.waitFor(token.coordinates, timeoutMs, signal);
80
+ }
81
+ async getOutgoing(documentId, types, consistencyToken, signal) {
82
+ if (consistencyToken) {
83
+ await this.waitForConsistency(consistencyToken, undefined, signal);
84
+ }
85
+ if (signal?.aborted) {
86
+ throw new Error("Operation aborted");
87
+ }
88
+ let query = this.db
89
+ .selectFrom("DocumentRelationship")
90
+ .selectAll()
91
+ .where("sourceId", "=", documentId);
92
+ if (types && types.length > 0) {
93
+ query = query.where("relationshipType", "in", types);
94
+ }
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
102
+ : undefined,
103
+ createdAt: row.createdAt,
104
+ updatedAt: row.updatedAt,
105
+ }));
106
+ }
107
+ async getIncoming(documentId, types, consistencyToken, signal) {
108
+ if (consistencyToken) {
109
+ await this.waitForConsistency(consistencyToken, undefined, signal);
110
+ }
111
+ if (signal?.aborted) {
112
+ throw new Error("Operation aborted");
113
+ }
114
+ let query = this.db
115
+ .selectFrom("DocumentRelationship")
116
+ .selectAll()
117
+ .where("targetId", "=", documentId);
118
+ if (types && types.length > 0) {
119
+ query = query.where("relationshipType", "in", types);
120
+ }
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
128
+ : undefined,
129
+ createdAt: row.createdAt,
130
+ updatedAt: row.updatedAt,
131
+ }));
132
+ }
133
+ async hasRelationship(sourceId, targetId, types, consistencyToken, signal) {
134
+ if (consistencyToken) {
135
+ await this.waitForConsistency(consistencyToken, undefined, signal);
136
+ }
137
+ if (signal?.aborted) {
138
+ throw new Error("Operation aborted");
139
+ }
140
+ let query = this.db
141
+ .selectFrom("DocumentRelationship")
142
+ .select("id")
143
+ .where("sourceId", "=", sourceId)
144
+ .where("targetId", "=", targetId);
145
+ if (types && types.length > 0) {
146
+ query = query.where("relationshipType", "in", types);
147
+ }
148
+ const result = await query.executeTakeFirst();
149
+ return result !== undefined;
150
+ }
151
+ async getUndirectedRelationships(a, b, types, consistencyToken, signal) {
152
+ if (consistencyToken) {
153
+ await this.waitForConsistency(consistencyToken, undefined, signal);
154
+ }
155
+ if (signal?.aborted) {
156
+ throw new Error("Operation aborted");
157
+ }
158
+ let query = this.db
159
+ .selectFrom("DocumentRelationship")
160
+ .selectAll()
161
+ .where((eb) => eb.or([
162
+ eb.and([eb("sourceId", "=", a), eb("targetId", "=", b)]),
163
+ eb.and([eb("sourceId", "=", b), eb("targetId", "=", a)]),
164
+ ]));
165
+ if (types && types.length > 0) {
166
+ query = query.where("relationshipType", "in", types);
167
+ }
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
175
+ : undefined,
176
+ createdAt: row.createdAt,
177
+ updatedAt: row.updatedAt,
178
+ }));
179
+ }
180
+ async getDirectedRelationships(sourceId, targetId, types, consistencyToken, signal) {
181
+ if (consistencyToken) {
182
+ await this.waitForConsistency(consistencyToken, undefined, signal);
183
+ }
184
+ if (signal?.aborted) {
185
+ throw new Error("Operation aborted");
186
+ }
187
+ let query = this.db
188
+ .selectFrom("DocumentRelationship")
189
+ .selectAll()
190
+ .where("sourceId", "=", sourceId)
191
+ .where("targetId", "=", targetId);
192
+ if (types && types.length > 0) {
193
+ query = query.where("relationshipType", "in", types);
194
+ }
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
202
+ : undefined,
203
+ createdAt: row.createdAt,
204
+ updatedAt: row.updatedAt,
205
+ }));
206
+ }
207
+ async findPath(sourceId, targetId, types, consistencyToken, signal) {
208
+ if (consistencyToken) {
209
+ await this.waitForConsistency(consistencyToken, undefined, signal);
210
+ }
211
+ if (signal?.aborted) {
212
+ throw new Error("Operation aborted");
213
+ }
214
+ if (sourceId === targetId) {
215
+ return [sourceId];
216
+ }
217
+ const visited = new Set();
218
+ const queue = [
219
+ { id: sourceId, path: [sourceId] },
220
+ ];
221
+ while (queue.length > 0) {
222
+ const current = queue.shift();
223
+ if (current.id === targetId) {
224
+ return current.path;
225
+ }
226
+ if (visited.has(current.id)) {
227
+ continue;
228
+ }
229
+ visited.add(current.id);
230
+ const outgoing = await this.getOutgoing(current.id, types, undefined, signal);
231
+ for (const rel of outgoing) {
232
+ if (!visited.has(rel.targetId)) {
233
+ queue.push({
234
+ id: rel.targetId,
235
+ path: [...current.path, rel.targetId],
236
+ });
237
+ }
238
+ }
239
+ }
240
+ return null;
241
+ }
242
+ async findAncestors(documentId, types, consistencyToken, signal) {
243
+ if (consistencyToken) {
244
+ await this.waitForConsistency(consistencyToken, undefined, signal);
245
+ }
246
+ if (signal?.aborted) {
247
+ throw new Error("Operation aborted");
248
+ }
249
+ const nodes = new Set([documentId]);
250
+ const edges = [];
251
+ const queue = [documentId];
252
+ const visited = new Set();
253
+ while (queue.length > 0) {
254
+ const currentId = queue.shift();
255
+ if (visited.has(currentId)) {
256
+ continue;
257
+ }
258
+ visited.add(currentId);
259
+ const incoming = await this.getIncoming(currentId, types, undefined, signal);
260
+ for (const rel of incoming) {
261
+ nodes.add(rel.sourceId);
262
+ edges.push({
263
+ from: rel.sourceId,
264
+ to: rel.targetId,
265
+ type: rel.relationshipType,
266
+ });
267
+ if (!visited.has(rel.sourceId)) {
268
+ queue.push(rel.sourceId);
269
+ }
270
+ }
271
+ }
272
+ return {
273
+ nodes: Array.from(nodes),
274
+ edges,
275
+ };
276
+ }
277
+ async getRelationshipTypes(consistencyToken, signal) {
278
+ if (consistencyToken) {
279
+ await this.waitForConsistency(consistencyToken, undefined, signal);
280
+ }
281
+ if (signal?.aborted) {
282
+ throw new Error("Operation aborted");
283
+ }
284
+ const rows = await this.db
285
+ .selectFrom("DocumentRelationship")
286
+ .select("relationshipType")
287
+ .distinct()
288
+ .execute();
289
+ return rows.map((row) => row.relationshipType);
290
+ }
291
+ async handleAddRelationship(trx, operation) {
292
+ const input = operation.action.input;
293
+ const existingDoc = await trx
294
+ .selectFrom("Document")
295
+ .select("id")
296
+ .where("id", "=", input.sourceId)
297
+ .executeTakeFirst();
298
+ if (!existingDoc) {
299
+ await trx
300
+ .insertInto("Document")
301
+ .values({
302
+ id: input.sourceId,
303
+ })
304
+ .execute();
305
+ }
306
+ const existingTargetDoc = await trx
307
+ .selectFrom("Document")
308
+ .select("id")
309
+ .where("id", "=", input.targetId)
310
+ .executeTakeFirst();
311
+ if (!existingTargetDoc) {
312
+ await trx
313
+ .insertInto("Document")
314
+ .values({
315
+ id: input.targetId,
316
+ })
317
+ .execute();
318
+ }
319
+ const existingRel = await trx
320
+ .selectFrom("DocumentRelationship")
321
+ .select("id")
322
+ .where("sourceId", "=", input.sourceId)
323
+ .where("targetId", "=", input.targetId)
324
+ .where("relationshipType", "=", input.relationshipType)
325
+ .executeTakeFirst();
326
+ if (!existingRel) {
327
+ const relationship = {
328
+ id: uuidv4(),
329
+ sourceId: input.sourceId,
330
+ targetId: input.targetId,
331
+ relationshipType: input.relationshipType,
332
+ metadata: input.metadata || null,
333
+ };
334
+ await trx
335
+ .insertInto("DocumentRelationship")
336
+ .values(relationship)
337
+ .execute();
338
+ }
339
+ }
340
+ async handleRemoveRelationship(trx, operation) {
341
+ const input = operation.action.input;
342
+ await trx
343
+ .deleteFrom("DocumentRelationship")
344
+ .where("sourceId", "=", input.sourceId)
345
+ .where("targetId", "=", input.targetId)
346
+ .where("relationshipType", "=", input.relationshipType)
347
+ .execute();
348
+ }
349
+ }
350
+ //# sourceMappingURL=document-indexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-indexer.js","sourceRoot":"","sources":["../../../../src/storage/kysely/document-indexer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAsBpC,MAAM,OAAO,qBAAqB;IAItB;IACA;IACA;IALF,eAAe,GAAW,CAAC,CAAC;IAEpC,YACU,EAAoB,EACpB,cAA+B,EAC/B,kBAAuC;QAFvC,OAAE,GAAF,EAAE,CAAkB;QACpB,mBAAc,GAAd,cAAc,CAAiB;QAC/B,uBAAkB,GAAlB,kBAAkB,CAAqB;IAC9C,CAAC;IAEJ,KAAK,CAAC,IAAI;QACR,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,EAAE;aAC/B,UAAU,CAAC,cAAc,CAAC;aAC1B,SAAS,EAAE;aACX,gBAAgB,EAAE,CAAC;QAEtB,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC;YAEpD,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAC3D,IAAI,CAAC,eAAe,CACrB,CAAC;YAEF,IAAI,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,EAAE;iBACV,UAAU,CAAC,cAAc,CAAC;iBAC1B,MAAM,CAAC;gBACN,eAAe,EAAE,CAAC;aACnB,CAAC;iBACD,OAAO,EAAE,CAAC;YAEb,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC9D,IAAI,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAA6B;QACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE/B,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAChD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;gBAC3B,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;gBAEzC,IAAI,UAAU,KAAK,kBAAkB,EAAE,CAAC;oBACtC,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBACnD,CAAC;qBAAM,IAAI,UAAU,KAAK,qBAAqB,EAAE,CAAC;oBAChD,MAAM,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;YACtD,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC7C,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;gBAChC,MAAM,GAAG;qBACN,WAAW,CAAC,cAAc,CAAC;qBAC3B,GAAG,CAAC;oBACH,eAAe,EAAE,QAAQ;oBACzB,sBAAsB,EAAE,IAAI,IAAI,EAAE;iBACnC,CAAC;qBACD,OAAO,EAAE,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,WAAW,GAA4B,EAAE,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YACvB,WAAW,CAAC,IAAI,CAAC;gBACf,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;gBACnC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;gBACzB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC3B,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK;aACrC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,KAAuB,EACvB,SAAkB,EAClB,MAAoB;QAEpB,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,WAAW,CACf,UAAkB,EAClB,KAAgB,EAChB,gBAAmC,EACnC,MAAoB;QAEpB,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE;aAChB,UAAU,CAAC,sBAAsB,CAAC;aAClC,SAAS,EAAE;aACX,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAEtC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QAEnC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACpB,CAAC,CAAE,GAAG,CAAC,QAAoC;gBAC3C,CAAC,CAAC,SAAS;YACb,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,GAAG,CAAC,SAAS;SACzB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,WAAW,CACf,UAAkB,EAClB,KAAgB,EAChB,gBAAmC,EACnC,MAAoB;QAEpB,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE;aAChB,UAAU,CAAC,sBAAsB,CAAC;aAClC,SAAS,EAAE;aACX,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAEtC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QAEnC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACpB,CAAC,CAAE,GAAG,CAAC,QAAoC;gBAC3C,CAAC,CAAC,SAAS;YACb,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,GAAG,CAAC,SAAS;SACzB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,QAAgB,EAChB,QAAgB,EAChB,KAAgB,EAChB,gBAAmC,EACnC,MAAoB;QAEpB,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE;aAChB,UAAU,CAAC,sBAAsB,CAAC;aAClC,MAAM,CAAC,IAAI,CAAC;aACZ,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC;aAChC,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QAEpC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAE9C,OAAO,MAAM,KAAK,SAAS,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,0BAA0B,CAC9B,CAAS,EACT,CAAS,EACT,KAAgB,EAChB,gBAAmC,EACnC,MAAoB;QAEpB,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE;aAChB,UAAU,CAAC,sBAAsB,CAAC;aAClC,SAAS,EAAE;aACX,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CACZ,EAAE,CAAC,EAAE,CAAC;YACJ,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACxD,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;SACzD,CAAC,CACH,CAAC;QAEJ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QAEnC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACpB,CAAC,CAAE,GAAG,CAAC,QAAoC;gBAC3C,CAAC,CAAC,SAAS;YACb,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,GAAG,CAAC,SAAS;SACzB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,wBAAwB,CAC5B,QAAgB,EAChB,QAAgB,EAChB,KAAgB,EAChB,gBAAmC,EACnC,MAAoB;QAEpB,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE;aAChB,UAAU,CAAC,sBAAsB,CAAC;aAClC,SAAS,EAAE;aACX,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC;aAChC,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QAEpC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QAEnC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACpB,CAAC,CAAE,GAAG,CAAC,QAAoC;gBAC3C,CAAC,CAAC,SAAS;YACb,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,GAAG,CAAC,SAAS;SACzB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,QAAgB,EAChB,QAAgB,EAChB,KAAgB,EAChB,gBAAmC,EACnC,MAAoB;QAEpB,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,KAAK,GAA0C;YACnD,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE;SACnC,CAAC;QAEF,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;YAE/B,IAAI,OAAO,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO,OAAO,CAAC,IAAI,CAAC;YACtB,CAAC;YAED,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC5B,SAAS;YACX,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAExB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CACrC,OAAO,CAAC,EAAE,EACV,KAAK,EACL,SAAS,EACT,MAAM,CACP,CAAC;YAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC/B,KAAK,CAAC,IAAI,CAAC;wBACT,EAAE,EAAE,GAAG,CAAC,QAAQ;wBAChB,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC;qBACtC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,UAAkB,EAClB,KAAgB,EAChB,gBAAmC,EACnC,MAAoB;QAEpB,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAwB,EAAE,CAAC;QACtC,MAAM,KAAK,GAAa,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAElC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;YAEjC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,SAAS;YACX,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAEvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CACrC,SAAS,EACT,KAAK,EACL,SAAS,EACT,MAAM,CACP,CAAC;YAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,GAAG,CAAC,QAAQ;oBAClB,EAAE,EAAE,GAAG,CAAC,QAAQ;oBAChB,IAAI,EAAE,GAAG,CAAC,gBAAgB;iBAC3B,CAAC,CAAC;gBAEH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACxB,KAAK;SACN,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,gBAAmC,EACnC,MAAoB;QAEpB,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,UAAU,CAAC,sBAAsB,CAAC;aAClC,MAAM,CAAC,kBAAkB,CAAC;aAC1B,QAAQ,EAAE;aACV,OAAO,EAAE,CAAC;QAEb,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACjD,CAAC;IAEO,KAAK,CAAC,qBAAqB,CACjC,GAAqB,EACrB,SAAoB;QAEpB,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAK9B,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,GAAG;aAC1B,UAAU,CAAC,UAAU,CAAC;aACtB,MAAM,CAAC,IAAI,CAAC;aACZ,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC;aAChC,gBAAgB,EAAE,CAAC;QAEtB,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,GAAG;iBACN,UAAU,CAAC,UAAU,CAAC;iBACtB,MAAM,CAAC;gBACN,EAAE,EAAE,KAAK,CAAC,QAAQ;aACnB,CAAC;iBACD,OAAO,EAAE,CAAC;QACf,CAAC;QAED,MAAM,iBAAiB,GAAG,MAAM,GAAG;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,MAAM,CAAC,IAAI,CAAC;aACZ,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC;aAChC,gBAAgB,EAAE,CAAC;QAEtB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,GAAG;iBACN,UAAU,CAAC,UAAU,CAAC;iBACtB,MAAM,CAAC;gBACN,EAAE,EAAE,KAAK,CAAC,QAAQ;aACnB,CAAC;iBACD,OAAO,EAAE,CAAC;QACf,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,GAAG;aAC1B,UAAU,CAAC,sBAAsB,CAAC;aAClC,MAAM,CAAC,IAAI,CAAC;aACZ,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC;aACtC,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC;aACtC,KAAK,CAAC,kBAAkB,EAAE,GAAG,EAAE,KAAK,CAAC,gBAAgB,CAAC;aACtD,gBAAgB,EAAE,CAAC;QAEtB,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,YAAY,GAAmC;gBACnD,EAAE,EAAE,MAAM,EAAE;gBACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;gBACxC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;aACjC,CAAC;YAEF,MAAM,GAAG;iBACN,UAAU,CAAC,sBAAsB,CAAC;iBAClC,MAAM,CAAC,YAAY,CAAC;iBACpB,OAAO,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,wBAAwB,CACpC,GAAqB,EACrB,SAAoB;QAEpB,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAI9B,CAAC;QAEF,MAAM,GAAG;aACN,UAAU,CAAC,sBAAsB,CAAC;aAClC,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC;aACtC,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC;aACtC,KAAK,CAAC,kBAAkB,EAAE,GAAG,EAAE,KAAK,CAAC,gBAAgB,CAAC;aACtD,OAAO,EAAE,CAAC;IACf,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"keyframe-store.d.ts","sourceRoot":"","sources":["../../../../src/storage/kysely/keyframe-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,qBAAa,mBAAoB,YAAW,cAAc;IAC5C,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC;IAElC,WAAW,CACf,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,UAAU,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;IAuBV,mBAAmB,CACvB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,UAAU,CAAA;KAAE,GAAG,SAAS,CAAC;IAmC5D,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC;CAmBnB"}
1
+ {"version":3,"file":"keyframe-store.d.ts","sourceRoot":"","sources":["../../../../src/storage/kysely/keyframe-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,qBAAa,mBAAoB,YAAW,cAAc;IAC5C,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC;IAElC,WAAW,CACf,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,UAAU,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;IAuBV,mBAAmB,CACvB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,UAAU,CAAA;KAAE,GAAG,SAAS,CAAC;IA0B5D,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC;CAmBnB"}
@@ -15,11 +15,11 @@ export class KyselyKeyframeStore {
15
15
  scope,
16
16
  branch,
17
17
  revision,
18
- document: JSON.stringify(document),
18
+ document,
19
19
  })
20
20
  .onConflict((oc) => oc
21
21
  .columns(["documentId", "scope", "branch", "revision"])
22
- .doUpdateSet({ document: JSON.stringify(document) }))
22
+ .doUpdateSet({ document }))
23
23
  .execute();
24
24
  }
25
25
  async findNearestKeyframe(documentId, scope, branch, targetRevision, signal) {
@@ -39,17 +39,10 @@ export class KyselyKeyframeStore {
39
39
  if (!row) {
40
40
  return undefined;
41
41
  }
42
- try {
43
- const document = JSON.parse(row.document);
44
- return {
45
- revision: row.revision,
46
- document,
47
- };
48
- }
49
- catch (err) {
50
- console.warn(`Failed to parse keyframe for ${documentId}@${row.revision}:`, err);
51
- return undefined;
52
- }
42
+ return {
43
+ revision: row.revision,
44
+ document: row.document,
45
+ };
53
46
  }
54
47
  async deleteKeyframes(documentId, scope, branch, signal) {
55
48
  if (signal?.aborted) {