@xnetjs/data 0.0.2 → 0.0.3

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 (137) hide show
  1. package/README.md +112 -0
  2. package/dist/account-BZHETMC4.js +12 -0
  3. package/dist/auth/index.d.ts +413 -0
  4. package/dist/auth/index.js +102 -0
  5. package/dist/budget-WR2Q4YH3.js +12 -0
  6. package/dist/canvas-HFMMVQLD.js +10 -0
  7. package/dist/channel-DXDYJ3ZH.js +12 -0
  8. package/dist/chat-message-QUUQGXEW.js +10 -0
  9. package/dist/chunk-2DSDH2ZH.js +52 -0
  10. package/dist/chunk-337E3ZOB.js +54 -0
  11. package/dist/chunk-37267RSF.js +41 -0
  12. package/dist/chunk-3JKW6TDE.js +66 -0
  13. package/dist/chunk-3RB2FMMO.js +148 -0
  14. package/dist/{chunk-BQBPA5HS.js → chunk-4U4KBCDN.js} +16 -2
  15. package/dist/chunk-4UQTURCD.js +722 -0
  16. package/dist/chunk-54Y7QRZN.js +109 -0
  17. package/dist/chunk-5FHJE7RC.js +46 -0
  18. package/dist/chunk-64AM6JPM.js +40 -0
  19. package/dist/chunk-6CN53PON.js +143 -0
  20. package/dist/chunk-6GB7PBCR.js +40 -0
  21. package/dist/chunk-6OPZJ7MG.js +78 -0
  22. package/dist/{chunk-IDMBCRUC.js → chunk-77UDLVQY.js} +1 -1
  23. package/dist/chunk-7GMJOAPF.js +52 -0
  24. package/dist/chunk-7PDRDSFH.js +69 -0
  25. package/dist/chunk-C5IRSEEZ.js +69 -0
  26. package/dist/chunk-CHZUSBSB.js +45 -0
  27. package/dist/chunk-DOZJXPQ6.js +232 -0
  28. package/dist/chunk-DTPSTMUD.js +105 -0
  29. package/dist/chunk-E6S557NC.js +402 -0
  30. package/dist/chunk-EIQX7INF.js +45 -0
  31. package/dist/chunk-ENTHVNOC.js +57 -0
  32. package/dist/chunk-EZA5UT4Y.js +5543 -0
  33. package/dist/chunk-GR3NDMBY.js +76 -0
  34. package/dist/chunk-GWYVY2K4.js +63 -0
  35. package/dist/chunk-IJ675GJR.js +42 -0
  36. package/dist/chunk-IP4BEVVD.js +57 -0
  37. package/dist/chunk-J4IVJA5M.js +102 -0
  38. package/dist/chunk-J6EDPPH4.js +84 -0
  39. package/dist/{chunk-SZC345Z2.js → chunk-JESSJ5CZ.js} +1015 -1110
  40. package/dist/chunk-JO6Y4E5V.js +73 -0
  41. package/dist/chunk-KPVBKKZS.js +47 -0
  42. package/dist/chunk-KTJLFJEQ.js +43 -0
  43. package/dist/chunk-L66WXPTW.js +32 -0
  44. package/dist/chunk-LGD72FVD.js +48 -0
  45. package/dist/chunk-O64EK5FK.js +887 -0
  46. package/dist/chunk-PMUQACPY.js +33 -0
  47. package/dist/chunk-PSUJEKVV.js +1722 -0
  48. package/dist/chunk-QVZXXJSP.js +6122 -0
  49. package/dist/chunk-QWFTRZQT.js +142 -0
  50. package/dist/chunk-RSSZXCLL.js +51 -0
  51. package/dist/chunk-S4B5OPZU.js +415 -0
  52. package/dist/{chunk-VYR5GPJP.js → chunk-SPFKSTPT.js} +9 -3
  53. package/dist/chunk-U6CBYDVZ.js +50 -0
  54. package/dist/chunk-UDUPQKRB.js +49 -0
  55. package/dist/chunk-V6HZ3LF3.js +380 -0
  56. package/dist/chunk-WMSCEBFH.js +64 -0
  57. package/dist/chunk-WUR3WWQM.js +65 -0
  58. package/dist/chunk-XHEA5UER.js +75 -0
  59. package/dist/chunk-XTUGZSYQ.js +75 -0
  60. package/dist/chunk-XWA3CJQ6.js +45 -0
  61. package/dist/chunk-YEQ6LLUY.js +49 -0
  62. package/dist/chunk-YWN27MLD.js +47 -0
  63. package/dist/chunk-YXZGYLKV.js +65 -0
  64. package/dist/chunk-ZICIXDEE.js +54 -0
  65. package/dist/chunk-ZMCO3O2Z.js +70 -0
  66. package/dist/clone-DpbVKLUu.d.ts +2205 -0
  67. package/dist/comment-Y2Y3QYYI.js +10 -0
  68. package/dist/crm-AAJXYIJY.js +68 -0
  69. package/dist/dashboard-3DC6B4BJ.js +10 -0
  70. package/dist/database/index.d.ts +882 -0
  71. package/dist/database/index.js +523 -0
  72. package/dist/database-DRGL5UYS.js +10 -0
  73. package/dist/database-field-F47FY3XX.js +10 -0
  74. package/dist/database-row-77OXW2NF.js +10 -0
  75. package/dist/database-select-option-6S3TTA7A.js +10 -0
  76. package/dist/database-view-YW7DQG5X.js +10 -0
  77. package/dist/experiment-TJOAL3OH.js +10 -0
  78. package/dist/external-item-D654PKLI.js +14 -0
  79. package/dist/external-reference-K5SUJIQN.js +8 -0
  80. package/dist/feed-L23XTNDI.js +12 -0
  81. package/dist/feed-item-GSO242J6.js +12 -0
  82. package/dist/folder-ONKSWHUT.js +21 -0
  83. package/dist/game-BF7DP5JU.js +50 -0
  84. package/dist/grant-NNKMWXPX.js +8 -0
  85. package/dist/grant-expiration-cleaner-DBiNTWbD.d.ts +249 -0
  86. package/dist/import-batch-JMESZ4VI.js +12 -0
  87. package/dist/inbox-state-AN6FPCIY.js +12 -0
  88. package/dist/index.d.ts +224 -4548
  89. package/dist/index.js +2206 -4754
  90. package/dist/map-AUV65YS3.js +10 -0
  91. package/dist/media-asset-4I5YPR4R.js +8 -0
  92. package/dist/memory-NV6EVJBE.js +12 -0
  93. package/dist/metric-X7W55DLC.js +10 -0
  94. package/dist/milestone-JJGOGK4R.js +12 -0
  95. package/dist/moderation-QSUVBCNS.js +30 -0
  96. package/dist/observation-UZSXXGBC.js +10 -0
  97. package/dist/page-NI7XODS6.js +10 -0
  98. package/dist/posting-FZOYVGH2.js +12 -0
  99. package/dist/profile-42A43GES.js +8 -0
  100. package/dist/project-G2CTLDXY.js +10 -0
  101. package/dist/query-ast-CWo6_30h.d.ts +226 -0
  102. package/dist/reaction-VAQBVDUD.js +10 -0
  103. package/dist/registry-CQoN_p8U.d.ts +99 -0
  104. package/dist/saved-view-AOQHGHNM.js +10 -0
  105. package/dist/schema/index.d.ts +6182 -0
  106. package/dist/schema/index.js +631 -0
  107. package/dist/schema-extension-5BUXRDPB.js +18 -0
  108. package/dist/space-PZ737CIS.js +42 -0
  109. package/dist/space-membership-N35NRX6F.js +14 -0
  110. package/dist/store/index.d.ts +391 -0
  111. package/dist/store/index.js +135 -0
  112. package/dist/store-CvgiydME.d.ts +338 -0
  113. package/dist/sync/awareness.d.ts +69 -0
  114. package/dist/sync/awareness.js +20 -0
  115. package/dist/system-Q5I6STDC.js +38 -0
  116. package/dist/tag-C677GKQW.js +16 -0
  117. package/dist/task-WQLMPN5U.js +16 -0
  118. package/dist/task-view-T5S32V4L.js +10 -0
  119. package/dist/transaction-U3ITRGJP.js +12 -0
  120. package/dist/transcription-F3T23LLO.js +12 -0
  121. package/dist/types-Def-5Nka.d.ts +1525 -0
  122. package/dist/updates.d.ts +44 -0
  123. package/dist/updates.js +16 -0
  124. package/dist/user-widget-4SJJFPG5.js +8 -0
  125. package/dist/view-types-DSde-uT_.d.ts +316 -0
  126. package/package.json +32 -9
  127. package/dist/canvas-HSIKIQFK.js +0 -7
  128. package/dist/chunk-2L5ZUGG5.js +0 -53
  129. package/dist/chunk-4MTS5KAQ.js +0 -22
  130. package/dist/chunk-GZHARFKC.js +0 -25
  131. package/dist/chunk-WKIKJTI2.js +0 -45
  132. package/dist/comment-277JD7DV.js +0 -7
  133. package/dist/database-W3KEHLI3.js +0 -7
  134. package/dist/database-row-3O2QSNZN.js +0 -7
  135. package/dist/grant-QVZ454YC.js +0 -7
  136. package/dist/page-O4WTOIEO.js +0 -7
  137. package/dist/task-SEKAYJH7.js +0 -7
@@ -0,0 +1,391 @@
1
+ import { g as NodeStorageAdapter, r as NodeChange, i as NodeId, h as NodeState, aa as NodeBatchPreflightResult, a3 as ImportNodesOptions, a5 as ApplyNodeBatchInput, a6 as ApplyNodeBatchResult, L as ListNodesOptions, ae as CountNodesOptions, a2 as SetNodeOptions, j as NodeQueryDescriptor, k as NodeQueryResult, S as SchemaIRI, a4 as RebuildNodeIndexesOptions } from '../types-Def-5Nka.js';
2
+ export { av as ConflictResult, ay as ContentKeyCache, C as CreateNodeOptions, ab as DeterministicNodeBatchWriteInput, m as DeterministicNodeImportDraft, G as GetWithMigrationOptions, n as ImportDeterministicNodesOptions, o as ImportDeterministicNodesResult, s as MergeConflict, M as MigratedNodeState, az as MigrationInfo, aw as NodeBatchChangeEvent, u as NodeBatchChangeListener, a7 as NodeBatchIndexMode, a8 as NodeBatchNotificationMode, a9 as NodeBatchSyncMode, p as NodeBatchWriteInput, ac as NodeBatchWritePolicy, q as NodeBatchWriteResult, ad as NodeBatchWriteTimings, v as NodeChangeEvent, t as NodeChangeListener, ax as NodeContentCipher, a0 as NodePayload, ar as NodeQueryCursor, aq as NodeQueryCursorOrderEntry, ao as NodeQueryMaterializedViewOptions, as as NodeQueryOptions, N as NodeQueryPageCountMode, ap as NodeQueryPageOptions, au as NodeQueryParityCheckMetadata, at as NodeQueryPlanMetadata, am as NodeQuerySearchField, an as NodeQuerySearchFilter, al as NodeQuerySpatialFilter, af as NodeQuerySpatialPoint, ah as NodeQuerySpatialPointFields, ak as NodeQuerySpatialRadius, ag as NodeQuerySpatialRect, ai as NodeQuerySpatialRectFields, aj as NodeQuerySpatialWindow, f as NodeStoreOptions, bi as OperationNodeBatchWriteInput, $ as PropertyKey, bj as PropertyLookup, a1 as PropertyTimestamp, aR as SchemaLookup, c as SortDirection, d as SystemOrderField, aO as TEMP_ID_PREFIX, aS as TempIdResolution, T as TransactionOperation, l as TransactionResult, U as UpdateNodeOptions, aI as applyNodeQueryDescriptor, aA as createNodeQueryDescriptor, bk as createPropertyLookup, aQ as createSchemaLookup, aC as decodeNodeQueryCursor, aB as encodeNodeQueryCursor, aG as filterNodeQueryResults, aJ as getNodeQuerySearchTokens, aN as isTempId, aF as matchesNodeQueryDescriptor, aK as nodeQueryDescriptorNeedsBoundedReload, aD as nodeQueryDescriptorToOptions, aP as resolveTempIds, aE as serializeNodeQueryDescriptor, aH as sortNodeQueryResults, aM as withoutNodeQueryMaterializedView, aL as withoutNodeQueryPagination } from '../types-Def-5Nka.js';
3
+ export { G as QUERY_AST_VERSION, r as QueryAST, n as QueryASTAggregate, A as QueryASTAggregateExecution, m as QueryASTAggregateFunction, y as QueryASTAggregateGroup, x as QueryASTAggregatePlan, z as QueryASTAggregateResult, d as QueryASTComparisonPredicate, e as QueryASTCompoundPredicate, a as QueryASTField, l as QueryASTIncludes, p as QueryASTNodeQuery, s as QueryASTNodeQueryOptions, f as QueryASTNotPredicate, c as QueryASTOperator, h as QueryASTOrderBy, i as QueryASTPage, B as QueryASTPlannerGate, g as QueryASTPredicate, q as QueryASTQuerySet, o as QueryASTQuerySetAggregate, j as QueryASTRelationDirection, k as QueryASTRelationInclude, t as QueryASTRelationIncludeOptions, w as QueryASTRelationIndexRequirement, b as QueryASTSchemaInput, u as QueryASTValidationError, v as QueryASTValidationResult, Q as QueryASTVersion, S as SavedViewDescriptor, F as SavedViewFeedDensity, E as SavedViewFeedLayout, C as SavedViewPresentationHint, D as SavedViewPresentationHintMode, V as and, a3 as avg, N as between, P as contains, a0 as count, a1 as countDistinct, a9 as dashboardQuerySet, Z as defineNodeQueryAST, a8 as defineQuerySetAST, ab as defineSavedViewDescriptor, H as eq, aj as evaluateQueryASTPlannerGate, af as executeQueryASTLoadedAggregates, ag as filterQueryASTLoadedRows, _ as follow, $ as from, ah as getQueryASTRelationIndexRequirements, a6 as groupBy, J as gt, K as gte, a7 as having, O as includesAny, U as isNotNull, T as isNull, L as lt, M as lte, ai as matchesQueryASTLoadedRow, a5 as max, a4 as min, I as neq, X as not, W as or, ae as planQueryASTAggregates, Y as queryOperators, aa as querySetCount, R as startsWith, a2 as sum, ac as validateQueryAST, ad as validateSavedViewDescriptor } from '../query-ast-CWo6_30h.js';
4
+ export { N as NodeStore } from '../store-CvgiydME.js';
5
+ import { AuthAction, DID, AuthDenyReason, AuthDecision, ContentId } from '@xnetjs/core';
6
+ import { SQLiteAdapter, SQLiteOperationStats } from '@xnetjs/sqlite';
7
+ import '@xnetjs/crypto';
8
+ import '@xnetjs/sync';
9
+
10
+ /**
11
+ * Error thrown when a local mutation fails authorization checks.
12
+ */
13
+ declare class PermissionError extends Error {
14
+ readonly code = "PERMISSION_DENIED";
15
+ readonly action: AuthAction;
16
+ readonly nodeId: string;
17
+ readonly subject: DID;
18
+ readonly reasons: AuthDenyReason[];
19
+ readonly roles: string[];
20
+ readonly decision: AuthDecision;
21
+ constructor(decision: AuthDecision);
22
+ }
23
+
24
+ /**
25
+ * In-memory storage adapter for NodeStore.
26
+ *
27
+ * Useful for testing and ephemeral data.
28
+ */
29
+
30
+ /**
31
+ * In-memory implementation of NodeStorageAdapter.
32
+ */
33
+ declare class MemoryNodeStorageAdapter implements NodeStorageAdapter {
34
+ private changes;
35
+ private changesByHash;
36
+ private nodes;
37
+ private documentContentStore;
38
+ private yjsSnapshotStore;
39
+ private lastLamportTime;
40
+ private syncCursors;
41
+ withTransaction<T>(fn: (storage: NodeStorageAdapter) => Promise<T>): Promise<T>;
42
+ appendChange(change: NodeChange): Promise<void>;
43
+ appendChanges(changes: readonly NodeChange[]): Promise<void>;
44
+ getChanges(nodeId: NodeId): Promise<NodeChange[]>;
45
+ getAllChanges(): Promise<NodeChange[]>;
46
+ getChangesSince(sinceLamport: number): Promise<NodeChange[]>;
47
+ getChangeByHash(hash: ContentId): Promise<NodeChange | null>;
48
+ getLastChange(nodeId: NodeId): Promise<NodeChange | null>;
49
+ getLastChangesByNodeId(nodeIds: readonly NodeId[]): Promise<Map<NodeId, NodeChange>>;
50
+ getNode(id: NodeId): Promise<NodeState | null>;
51
+ getNodes(ids: readonly NodeId[]): Promise<NodeState[]>;
52
+ getExistingNodeIds(ids: readonly NodeId[]): Promise<NodeId[]>;
53
+ getBatchPreflight(ids: readonly NodeId[]): Promise<NodeBatchPreflightResult>;
54
+ setNode(node: NodeState): Promise<void>;
55
+ importNodes(nodes: readonly NodeState[], _options?: ImportNodesOptions): Promise<void>;
56
+ applyNodeBatch(input: ApplyNodeBatchInput): Promise<ApplyNodeBatchResult>;
57
+ deleteNode(id: NodeId): Promise<void>;
58
+ listNodes(options?: ListNodesOptions): Promise<NodeState[]>;
59
+ countNodes(options?: CountNodesOptions): Promise<number>;
60
+ getLastLamportTime(): Promise<number>;
61
+ setLastLamportTime(time: number): Promise<void>;
62
+ getSyncCursor(room: string): Promise<number>;
63
+ setSyncCursor(room: string, lamport: number): Promise<void>;
64
+ getDocumentContent(nodeId: NodeId): Promise<Uint8Array | null>;
65
+ setDocumentContent(nodeId: NodeId, content: Uint8Array): Promise<void>;
66
+ saveYjsSnapshot(snapshot: {
67
+ nodeId: NodeId;
68
+ timestamp: number;
69
+ snapshot: Uint8Array;
70
+ docState: Uint8Array;
71
+ byteSize: number;
72
+ }): Promise<void>;
73
+ getYjsSnapshots(nodeId: NodeId): Promise<{
74
+ nodeId: NodeId;
75
+ timestamp: number;
76
+ snapshot: Uint8Array;
77
+ docState: Uint8Array;
78
+ byteSize: number;
79
+ }[]>;
80
+ deleteYjsSnapshots(nodeId: NodeId): Promise<void>;
81
+ /**
82
+ * Clear all data (for testing).
83
+ */
84
+ clear(): void;
85
+ /**
86
+ * Get total change count (for testing).
87
+ */
88
+ getChangeCount(): number;
89
+ /**
90
+ * Get total node count (for testing).
91
+ */
92
+ getNodeCount(): number;
93
+ private createSnapshot;
94
+ private restoreSnapshot;
95
+ }
96
+
97
+ /**
98
+ * SQLite storage adapter for NodeStore.
99
+ *
100
+ * Provides high-performance storage for nodes and changes using SQLite.
101
+ * Works with any SQLiteAdapter implementation (Electron, Web, Expo).
102
+ */
103
+
104
+ interface SQLiteAdaptiveIndexingOptions {
105
+ enabled?: boolean;
106
+ minHits?: number;
107
+ minDurationMs?: number;
108
+ minCandidates?: number;
109
+ maxIndexesPerSchema?: number;
110
+ maxEstimatedBytesPerSchema?: number;
111
+ maxIndexedRowsPerSchema?: number;
112
+ dropUnusedAfterMs?: number;
113
+ }
114
+ interface SQLiteQueryVerificationOptions {
115
+ enabled?: boolean;
116
+ maxNodes?: number;
117
+ logFailures?: boolean;
118
+ }
119
+ interface SQLiteNodeStorageAdapterOptions {
120
+ adaptiveIndexing?: SQLiteAdaptiveIndexingOptions;
121
+ queryVerification?: SQLiteQueryVerificationOptions;
122
+ /**
123
+ * Collect EXPLAIN QUERY PLAN + index inventory per query. Costs extra
124
+ * round trips per query, so it is off unless explicitly enabled or the
125
+ * `xnet:query:debug` localStorage flag is set.
126
+ */
127
+ queryDiagnostics?: boolean;
128
+ }
129
+ /**
130
+ * SQLite-backed storage adapter for NodeStore.
131
+ *
132
+ * This adapter provides high-performance storage for nodes and changes
133
+ * using the platform-appropriate SQLite implementation.
134
+ *
135
+ * @example
136
+ * ```typescript
137
+ * import { createMemorySQLiteAdapter } from '@xnetjs/sqlite/memory'
138
+ *
139
+ * const sqliteAdapter = await createMemorySQLiteAdapter()
140
+ * const nodeStorage = new SQLiteNodeStorageAdapter(sqliteAdapter)
141
+ *
142
+ * const store = new NodeStore({
143
+ * storage: nodeStorage,
144
+ * authorDID: identity.did,
145
+ * signingKey: identity.signingKey
146
+ * })
147
+ * ```
148
+ */
149
+ declare class SQLiteNodeStorageAdapter implements NodeStorageAdapter {
150
+ private db;
151
+ private stmtCache;
152
+ private adaptiveIndexing;
153
+ private queryVerification;
154
+ private queryDiagnostics;
155
+ private pendingQueryTelemetry;
156
+ private pendingQueryTelemetryHits;
157
+ private adaptiveIndexBudgetColumnsReady;
158
+ private storageCapabilitiesPromise?;
159
+ private spatialTablesState;
160
+ private fullTextSearchTablesState;
161
+ private writeQueue;
162
+ constructor(db: SQLiteAdapter, options?: SQLiteNodeStorageAdapterOptions);
163
+ getSQLiteAdapter(): SQLiteAdapter;
164
+ open(): Promise<void>;
165
+ close(): Promise<void>;
166
+ /**
167
+ * Get or create a prepared statement.
168
+ * Cached statements are reused for better performance.
169
+ */
170
+ private getStatement;
171
+ private enqueueWrite;
172
+ withTransaction<T>(fn: (storage: NodeStorageAdapter) => Promise<T>): Promise<T>;
173
+ private createTransactionStorageAdapter;
174
+ appendChange(change: NodeChange): Promise<void>;
175
+ private appendChangeInternal;
176
+ appendChanges(changes: readonly NodeChange[]): Promise<void>;
177
+ private appendChangesInternal;
178
+ getChanges(nodeId: NodeId): Promise<NodeChange[]>;
179
+ getAllChanges(): Promise<NodeChange[]>;
180
+ getChangesSince(sinceLamport: number): Promise<NodeChange[]>;
181
+ getChangeByHash(hash: ContentId): Promise<NodeChange | null>;
182
+ getLastChange(nodeId: NodeId): Promise<NodeChange | null>;
183
+ getLastChangesByNodeId(nodeIds: readonly NodeId[]): Promise<Map<NodeId, NodeChange>>;
184
+ getNode(id: NodeId): Promise<NodeState | null>;
185
+ getNodes(ids: readonly NodeId[]): Promise<NodeState[]>;
186
+ getExistingNodeIds(ids: readonly NodeId[]): Promise<NodeId[]>;
187
+ getBatchPreflight(ids: readonly NodeId[]): Promise<NodeBatchPreflightResult>;
188
+ setNode(node: NodeState, options?: SetNodeOptions): Promise<void>;
189
+ /**
190
+ * Internal method for setting a node without starting a new transaction.
191
+ * Used by importNodes to avoid nested transactions.
192
+ */
193
+ private _setNodeInternal;
194
+ deleteNode(id: NodeId): Promise<void>;
195
+ private deleteNodeInternal;
196
+ listNodes(options?: ListNodesOptions): Promise<NodeState[]>;
197
+ /**
198
+ * Optimized listNodes using a single JOIN query.
199
+ * Fetches nodes and properties in one query for better performance with large datasets.
200
+ */
201
+ listNodesOptimized(options?: ListNodesOptions): Promise<NodeState[]>;
202
+ countNodes(options?: CountNodesOptions): Promise<number>;
203
+ queryNodes(descriptor: NodeQueryDescriptor): Promise<NodeQueryResult>;
204
+ getLastLamportTime(): Promise<number>;
205
+ setLastLamportTime(time: number): Promise<void>;
206
+ private setLastLamportTimeInternal;
207
+ private syncCursorKey;
208
+ getSyncCursor(room: string): Promise<number>;
209
+ setSyncCursor(room: string, lamport: number): Promise<void>;
210
+ getDocumentContent(nodeId: NodeId): Promise<Uint8Array | null>;
211
+ setDocumentContent(nodeId: NodeId, content: Uint8Array): Promise<void>;
212
+ private setDocumentContentInternal;
213
+ /**
214
+ * Save a Yjs snapshot for time travel.
215
+ */
216
+ saveYjsSnapshot(snapshot: {
217
+ nodeId: NodeId;
218
+ timestamp: number;
219
+ snapshot: Uint8Array;
220
+ docState: Uint8Array;
221
+ byteSize: number;
222
+ }): Promise<void>;
223
+ /**
224
+ * Get Yjs snapshots for a node.
225
+ */
226
+ getYjsSnapshots(nodeId: NodeId): Promise<Array<{
227
+ nodeId: NodeId;
228
+ timestamp: number;
229
+ snapshot: Uint8Array;
230
+ docState: Uint8Array;
231
+ byteSize: number;
232
+ }>>;
233
+ /**
234
+ * Delete Yjs snapshots for a node.
235
+ */
236
+ deleteYjsSnapshots(nodeId: NodeId): Promise<void>;
237
+ /**
238
+ * Import multiple nodes in a single transaction.
239
+ * Used for sync and restore operations.
240
+ */
241
+ importNodes(nodes: readonly NodeState[], options?: ImportNodesOptions): Promise<void>;
242
+ applyNodeBatch(input: ApplyNodeBatchInput): Promise<ApplyNodeBatchResult>;
243
+ getOperationStats(): Promise<SQLiteOperationStats | null> | SQLiteOperationStats | null;
244
+ resetOperationStats(): Promise<void> | void;
245
+ private resolveApplyNodeBatchInput;
246
+ private canApplyNodeBatchWithTransactionBatch;
247
+ private canApplyNodeBatchWithTypedAdapterCommand;
248
+ private applyNodeBatchWithTypedAdapterCommand;
249
+ private createSQLiteNodeBatchApplyInput;
250
+ private applyNodeBatchWithTransactionBatch;
251
+ private applyNodeBatchInternal;
252
+ private importNodesInternal;
253
+ private canImportNodesWithTransactionBatch;
254
+ private importNodesWithTransactionBatch;
255
+ private createImportNodeOperations;
256
+ private createImportNodeOperationsForIndexMode;
257
+ private createAppendChangeOperation;
258
+ private createSetLastLamportTimeOperation;
259
+ private createInvalidateMaterializedViewsOperation;
260
+ private createDeleteRemovedPropertiesOperation;
261
+ private createScalarIndexOperations;
262
+ private createFullTextIndexOperations;
263
+ private countScalarIndexRowsForNode;
264
+ private hasSearchableNodeContent;
265
+ private syncTouchedIndexesForNodes;
266
+ /**
267
+ * Refresh the full query-planner statistics (`ANALYZE`). Call after a bulk
268
+ * import: SQLite does not auto-maintain stats, so a large insert leaves the
269
+ * planner "out of sync" and reads can pick full scans over indexes
270
+ * (exploration 0184). Best-effort — never throws into the caller.
271
+ */
272
+ analyze(): Promise<void>;
273
+ /**
274
+ * Incremental planner maintenance (`PRAGMA optimize`) — only ANALYZEs tables
275
+ * whose row counts have drifted. Cheap; safe to call at idle / before close.
276
+ */
277
+ optimize(): Promise<void>;
278
+ rebuildIndexesForSchemas(schemaIds: readonly SchemaIRI[], options?: RebuildNodeIndexesOptions): Promise<void>;
279
+ private rebuildIndexesForSchemasInternal;
280
+ private rebuildScalarIndexesForSchemas;
281
+ private rebuildSpatialIndexesForSchemas;
282
+ private rebuildFullTextIndexesForSchemas;
283
+ /**
284
+ * Rebuild the scalar sidecar from materialized node_properties.
285
+ */
286
+ rebuildScalarIndex(): Promise<{
287
+ nodesScanned: number;
288
+ scalarRowsWritten: number;
289
+ }>;
290
+ /**
291
+ * Import multiple changes in a single transaction.
292
+ */
293
+ importChanges(changes: readonly NodeChange[]): Promise<void>;
294
+ /**
295
+ * Clear all data (for testing or reset).
296
+ */
297
+ clear(): Promise<void>;
298
+ private hydrateJoinedRows;
299
+ private hydrateNodesByIds;
300
+ private queryMaterializedView;
301
+ private getMaterializedView;
302
+ private refreshMaterializedView;
303
+ private readMaterializedViewPage;
304
+ private invalidateMaterializedViewsForSchema;
305
+ private clearMaterializedViewRows;
306
+ private deleteRemovedProperties;
307
+ private syncScalarRowsForNode;
308
+ private prepareFullTextSearchQueryPlan;
309
+ private hasFullTextSearchTable;
310
+ private prepareSpatialQueryPlan;
311
+ private ensureSpatialTables;
312
+ private hasSpatialTables;
313
+ private createSpatialIndexConfig;
314
+ private syncSpatialRowsForNode;
315
+ private replaceSpatialRowForConfig;
316
+ private deleteSpatialRowsForNode;
317
+ private deleteSpatialRow;
318
+ private clearSpatialRowsForConfig;
319
+ private clearSpatialRows;
320
+ private buildSpatialIndexKey;
321
+ private getSpatialFieldConfig;
322
+ private getSpatialSearchBounds;
323
+ private getNodeSpatialBounds;
324
+ private getFiniteNumberProperty;
325
+ private toScalarIndexValue;
326
+ private hashScalarValue;
327
+ private stringifyStable;
328
+ private quoteSqlLiteral;
329
+ private quoteSqlIdentifier;
330
+ private recordQueryTelemetry;
331
+ /**
332
+ * Flush buffered query telemetry aggregates into
333
+ * `query_descriptor_stats`. Runs automatically every
334
+ * {@link QUERY_TELEMETRY_FLUSH_THRESHOLD} queries and on close; callers
335
+ * that need durable stats immediately (tests, diagnostics tooling) can
336
+ * invoke it directly.
337
+ */
338
+ flushQueryTelemetry(): Promise<void>;
339
+ private writeQueryTelemetryRow;
340
+ private isQueryDiagnosticsEnabled;
341
+ private collectCompiledQueryDiagnostics;
342
+ private getStorageCapabilities;
343
+ private debugQueryPlan;
344
+ private isQueryDebugEnabled;
345
+ private auditQueryParity;
346
+ private getNodeParityCandidates;
347
+ private compareQueryResults;
348
+ private shouldCreateAdaptiveIndexes;
349
+ private ensureAdaptiveIndexes;
350
+ private ensureAdaptiveIndexBudgetColumns;
351
+ private estimateAdaptiveIndexBudget;
352
+ private getAdaptiveIndexValueBytesExpression;
353
+ private makeAdaptiveIndexBudgetRoom;
354
+ private pruneAdaptiveIndexes;
355
+ private getAdaptiveIndexBudgetUsage;
356
+ private dropLeastUsefulAdaptiveIndex;
357
+ private dropAdaptiveIndex;
358
+ private debugAdaptiveIndex;
359
+ private buildProtectedIndexFilter;
360
+ private buildAdaptiveIndexName;
361
+ private buildAdaptiveIndexDDL;
362
+ private getAdaptiveIndexColumns;
363
+ private countCompiledNodeQuery;
364
+ private compileNodeQuery;
365
+ private compileSqlQuery;
366
+ private getCompiledPostFilterReason;
367
+ private appendScalarPredicate;
368
+ private buildSqlOrderBy;
369
+ private hasOnlySystemOrdering;
370
+ private serializePayload;
371
+ private deserializePayload;
372
+ private serializeValue;
373
+ private deserializeValue;
374
+ private deserializeChange;
375
+ }
376
+ /**
377
+ * Create a SQLiteNodeStorageAdapter from an existing SQLiteAdapter.
378
+ * Use this when you want to share the SQLite connection with other services.
379
+ *
380
+ * @example
381
+ * ```typescript
382
+ * import { createMemorySQLiteAdapter } from '@xnetjs/sqlite/memory'
383
+ * import { createNodeStorageAdapter } from '@xnetjs/data'
384
+ *
385
+ * const db = await createMemorySQLiteAdapter()
386
+ * const storage = createNodeStorageAdapter(db)
387
+ * ```
388
+ */
389
+ declare function createNodeStorageAdapter(db: SQLiteAdapter, options?: SQLiteNodeStorageAdapterOptions): SQLiteNodeStorageAdapter;
390
+
391
+ export { ApplyNodeBatchInput, ApplyNodeBatchResult, CountNodesOptions, ImportNodesOptions, ListNodesOptions, MemoryNodeStorageAdapter, NodeBatchPreflightResult, NodeChange, NodeId, NodeQueryDescriptor, NodeQueryResult, NodeState, NodeStorageAdapter, PermissionError, RebuildNodeIndexesOptions, type SQLiteAdaptiveIndexingOptions, SQLiteNodeStorageAdapter, type SQLiteNodeStorageAdapterOptions, type SQLiteQueryVerificationOptions, SetNodeOptions, createNodeStorageAdapter };
@@ -0,0 +1,135 @@
1
+ import {
2
+ MemoryNodeStorageAdapter,
3
+ NodeStore,
4
+ PermissionError,
5
+ QUERY_AST_VERSION,
6
+ SQLiteNodeStorageAdapter,
7
+ TEMP_ID_PREFIX,
8
+ and,
9
+ avg,
10
+ between,
11
+ contains,
12
+ count,
13
+ countDistinct,
14
+ createNodeStorageAdapter,
15
+ createPropertyLookup,
16
+ createSchemaLookup,
17
+ dashboardQuerySet,
18
+ defineNodeQueryAST,
19
+ defineQuerySetAST,
20
+ defineSavedViewDescriptor,
21
+ eq,
22
+ evaluateQueryASTPlannerGate,
23
+ executeQueryASTLoadedAggregates,
24
+ filterQueryASTLoadedRows,
25
+ follow,
26
+ from,
27
+ getQueryASTRelationIndexRequirements,
28
+ groupBy,
29
+ gt,
30
+ gte,
31
+ having,
32
+ includesAny,
33
+ isNotNull,
34
+ isNull,
35
+ isTempId,
36
+ lt,
37
+ lte,
38
+ matchesQueryASTLoadedRow,
39
+ max,
40
+ min,
41
+ neq,
42
+ not,
43
+ or,
44
+ planQueryASTAggregates,
45
+ queryOperators,
46
+ querySetCount,
47
+ resolveTempIds,
48
+ startsWith,
49
+ sum,
50
+ validateQueryAST,
51
+ validateSavedViewDescriptor
52
+ } from "../chunk-QVZXXJSP.js";
53
+ import {
54
+ applyNodeQueryDescriptor,
55
+ createNodeQueryDescriptor,
56
+ decodeNodeQueryCursor,
57
+ encodeNodeQueryCursor,
58
+ filterNodeQueryResults,
59
+ getNodeQuerySearchTokens,
60
+ matchesNodeQueryDescriptor,
61
+ nodeQueryDescriptorNeedsBoundedReload,
62
+ nodeQueryDescriptorToOptions,
63
+ serializeNodeQueryDescriptor,
64
+ sortNodeQueryResults,
65
+ withoutNodeQueryMaterializedView,
66
+ withoutNodeQueryPagination
67
+ } from "../chunk-S4B5OPZU.js";
68
+ import "../chunk-V6HZ3LF3.js";
69
+ import "../chunk-O64EK5FK.js";
70
+ import "../chunk-JESSJ5CZ.js";
71
+ export {
72
+ MemoryNodeStorageAdapter,
73
+ NodeStore,
74
+ PermissionError,
75
+ QUERY_AST_VERSION,
76
+ SQLiteNodeStorageAdapter,
77
+ TEMP_ID_PREFIX,
78
+ and,
79
+ applyNodeQueryDescriptor,
80
+ avg,
81
+ between,
82
+ contains,
83
+ count,
84
+ countDistinct,
85
+ createNodeQueryDescriptor,
86
+ createNodeStorageAdapter,
87
+ createPropertyLookup,
88
+ createSchemaLookup,
89
+ dashboardQuerySet,
90
+ decodeNodeQueryCursor,
91
+ defineNodeQueryAST,
92
+ defineQuerySetAST,
93
+ defineSavedViewDescriptor,
94
+ encodeNodeQueryCursor,
95
+ eq,
96
+ evaluateQueryASTPlannerGate,
97
+ executeQueryASTLoadedAggregates,
98
+ filterNodeQueryResults,
99
+ filterQueryASTLoadedRows,
100
+ follow,
101
+ from,
102
+ getNodeQuerySearchTokens,
103
+ getQueryASTRelationIndexRequirements,
104
+ groupBy,
105
+ gt,
106
+ gte,
107
+ having,
108
+ includesAny,
109
+ isNotNull,
110
+ isNull,
111
+ isTempId,
112
+ lt,
113
+ lte,
114
+ matchesNodeQueryDescriptor,
115
+ matchesQueryASTLoadedRow,
116
+ max,
117
+ min,
118
+ neq,
119
+ nodeQueryDescriptorNeedsBoundedReload,
120
+ nodeQueryDescriptorToOptions,
121
+ not,
122
+ or,
123
+ planQueryASTAggregates,
124
+ queryOperators,
125
+ querySetCount,
126
+ resolveTempIds,
127
+ serializeNodeQueryDescriptor,
128
+ sortNodeQueryResults,
129
+ startsWith,
130
+ sum,
131
+ validateQueryAST,
132
+ validateSavedViewDescriptor,
133
+ withoutNodeQueryMaterializedView,
134
+ withoutNodeQueryPagination
135
+ };