@powersync/common 0.0.0-dev-20260503073249 → 0.0.0-dev-20260630141119

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 (284) hide show
  1. package/lib/attachments/AttachmentContext.d.ts +9 -8
  2. package/lib/attachments/AttachmentContext.js +8 -3
  3. package/lib/attachments/AttachmentContext.js.map +1 -1
  4. package/lib/attachments/AttachmentErrorHandler.d.ts +6 -6
  5. package/lib/attachments/AttachmentQueue.d.ts +85 -36
  6. package/lib/attachments/AttachmentQueue.js +19 -21
  7. package/lib/attachments/AttachmentQueue.js.map +1 -1
  8. package/lib/attachments/AttachmentService.d.ts +3 -3
  9. package/lib/attachments/AttachmentService.js +4 -3
  10. package/lib/attachments/AttachmentService.js.map +1 -1
  11. package/lib/attachments/LocalStorageAdapter.d.ts +14 -8
  12. package/lib/attachments/LocalStorageAdapter.js +3 -0
  13. package/lib/attachments/LocalStorageAdapter.js.map +1 -1
  14. package/lib/attachments/RemoteStorageAdapter.d.ts +4 -4
  15. package/lib/attachments/Schema.d.ts +14 -6
  16. package/lib/attachments/Schema.js +8 -3
  17. package/lib/attachments/Schema.js.map +1 -1
  18. package/lib/attachments/SyncingService.d.ts +2 -2
  19. package/lib/attachments/SyncingService.js +8 -3
  20. package/lib/attachments/SyncingService.js.map +1 -1
  21. package/lib/attachments/WatchedAttachmentItem.d.ts +3 -1
  22. package/lib/client/{AbstractPowerSyncDatabase.d.ts → CommonPowerSyncDatabase.d.ts} +112 -238
  23. package/lib/client/CommonPowerSyncDatabase.js +2 -0
  24. package/lib/client/CommonPowerSyncDatabase.js.map +1 -0
  25. package/lib/client/Query.d.ts +9 -0
  26. package/lib/client/SQLOpenFactory.d.ts +44 -10
  27. package/lib/client/SQLOpenFactory.js +1 -19
  28. package/lib/client/SQLOpenFactory.js.map +1 -1
  29. package/lib/client/compilableQueryWatch.d.ts +8 -2
  30. package/lib/client/compilableQueryWatch.js +4 -2
  31. package/lib/client/compilableQueryWatch.js.map +1 -1
  32. package/lib/client/connection/PowerSyncBackendConnector.d.ts +6 -3
  33. package/lib/client/connection/PowerSyncCredentials.d.ts +3 -0
  34. package/lib/client/runOnSchemaChange.d.ts +5 -2
  35. package/lib/client/runOnSchemaChange.js +3 -0
  36. package/lib/client/runOnSchemaChange.js.map +1 -1
  37. package/lib/client/sync/bucket/CrudBatch.d.ts +2 -0
  38. package/lib/client/sync/bucket/CrudBatch.js +2 -0
  39. package/lib/client/sync/bucket/CrudBatch.js.map +1 -1
  40. package/lib/client/sync/bucket/CrudEntry.d.ts +9 -31
  41. package/lib/client/sync/bucket/CrudEntry.js +2 -97
  42. package/lib/client/sync/bucket/CrudEntry.js.map +1 -1
  43. package/lib/client/sync/bucket/CrudTransaction.d.ts +3 -0
  44. package/lib/client/sync/bucket/CrudTransaction.js +3 -0
  45. package/lib/client/sync/bucket/CrudTransaction.js.map +1 -1
  46. package/lib/client/sync/options.d.ts +65 -0
  47. package/lib/client/sync/options.js +25 -0
  48. package/lib/client/sync/options.js.map +1 -0
  49. package/lib/client/sync/stream/JsonValue.d.ts +10 -0
  50. package/lib/client/sync/stream/JsonValue.js +2 -0
  51. package/lib/client/sync/stream/JsonValue.js.map +1 -0
  52. package/lib/client/sync/sync-streams.d.ts +23 -8
  53. package/lib/client/triggers/TriggerManager.d.ts +28 -56
  54. package/lib/client/triggers/TriggerManager.js +2 -1
  55. package/lib/client/triggers/TriggerManager.js.map +1 -1
  56. package/lib/client/triggers/sanitizeSQL.d.ts +4 -0
  57. package/lib/client/triggers/sanitizeSQL.js +4 -0
  58. package/lib/client/triggers/sanitizeSQL.js.map +1 -1
  59. package/lib/client/watched/GetAllQuery.d.ts +7 -3
  60. package/lib/client/watched/GetAllQuery.js +3 -1
  61. package/lib/client/watched/GetAllQuery.js.map +1 -1
  62. package/lib/client/watched/WatchedQuery.d.ts +20 -6
  63. package/lib/client/watched/WatchedQuery.js +3 -5
  64. package/lib/client/watched/WatchedQuery.js.map +1 -1
  65. package/lib/client/watched/processors/DifferentialQueryProcessor.d.ts +15 -45
  66. package/lib/client/watched/processors/DifferentialQueryProcessor.js +1 -172
  67. package/lib/client/watched/processors/DifferentialQueryProcessor.js.map +1 -1
  68. package/lib/client/watched/processors/OnChangeQueryProcessor.d.ts +4 -22
  69. package/lib/client/watched/processors/OnChangeQueryProcessor.js +1 -82
  70. package/lib/client/watched/processors/OnChangeQueryProcessor.js.map +1 -1
  71. package/lib/client/watched/processors/comparators.d.ts +8 -0
  72. package/lib/client/watched/processors/comparators.js +4 -0
  73. package/lib/client/watched/processors/comparators.js.map +1 -1
  74. package/lib/db/DBAdapter.d.ts +90 -113
  75. package/lib/db/DBAdapter.js +70 -89
  76. package/lib/db/DBAdapter.js.map +1 -1
  77. package/lib/db/QueryResult.d.ts +104 -0
  78. package/lib/db/QueryResult.js +96 -0
  79. package/lib/db/QueryResult.js.map +1 -0
  80. package/lib/db/crud/SyncProgress.d.ts +7 -14
  81. package/lib/db/crud/SyncProgress.js +1 -60
  82. package/lib/db/crud/SyncProgress.js.map +1 -1
  83. package/lib/db/crud/SyncStatus.d.ts +54 -91
  84. package/lib/db/crud/SyncStatus.js +1 -245
  85. package/lib/db/crud/SyncStatus.js.map +1 -1
  86. package/lib/db/crud/UploadQueueStatus.d.ts +3 -0
  87. package/lib/db/crud/UploadQueueStatus.js +3 -0
  88. package/lib/db/crud/UploadQueueStatus.js.map +1 -1
  89. package/lib/db/schema/Column.d.ts +22 -1
  90. package/lib/db/schema/Column.js +10 -4
  91. package/lib/db/schema/Column.js.map +1 -1
  92. package/lib/db/schema/Index.d.ts +8 -3
  93. package/lib/db/schema/Index.js +4 -1
  94. package/lib/db/schema/Index.js.map +1 -1
  95. package/lib/db/schema/IndexedColumn.d.ts +8 -3
  96. package/lib/db/schema/IndexedColumn.js +4 -1
  97. package/lib/db/schema/IndexedColumn.js.map +1 -1
  98. package/lib/db/schema/RawTable.d.ts +7 -1
  99. package/lib/db/schema/Schema.d.ts +10 -29
  100. package/lib/db/schema/Schema.js +3 -1
  101. package/lib/db/schema/Schema.js.map +1 -1
  102. package/lib/db/schema/Table.d.ts +69 -91
  103. package/lib/db/schema/Table.js +88 -87
  104. package/lib/db/schema/Table.js.map +1 -1
  105. package/lib/index.d.ts +7 -27
  106. package/lib/index.js +6 -27
  107. package/lib/index.js.map +1 -1
  108. package/lib/types/types.d.ts +6 -0
  109. package/lib/utils/BaseObserver.d.ts +12 -0
  110. package/lib/utils/BaseObserver.js +3 -0
  111. package/lib/utils/BaseObserver.js.map +1 -1
  112. package/lib/utils/Logger.d.ts +60 -22
  113. package/lib/utils/Logger.js +38 -30
  114. package/lib/utils/Logger.js.map +1 -1
  115. package/lib/utils/MetaBaseObserver.d.ts +11 -11
  116. package/lib/utils/MetaBaseObserver.js +1 -50
  117. package/lib/utils/MetaBaseObserver.js.map +1 -1
  118. package/lib/utils/mutex.d.ts +3 -45
  119. package/lib/utils/mutex.js +1 -153
  120. package/lib/utils/mutex.js.map +1 -1
  121. package/package.json +8 -42
  122. package/src/attachments/AttachmentContext.ts +15 -13
  123. package/src/attachments/AttachmentErrorHandler.ts +6 -6
  124. package/src/attachments/AttachmentQueue.ts +99 -42
  125. package/src/attachments/AttachmentService.ts +7 -6
  126. package/src/attachments/LocalStorageAdapter.ts +14 -8
  127. package/src/attachments/README.md +2 -0
  128. package/src/attachments/RemoteStorageAdapter.ts +4 -4
  129. package/src/attachments/Schema.ts +14 -6
  130. package/src/attachments/SyncingService.ts +10 -6
  131. package/src/attachments/WatchedAttachmentItem.ts +3 -1
  132. package/src/client/CommonPowerSyncDatabase.ts +540 -0
  133. package/src/client/Query.ts +9 -0
  134. package/src/client/SQLOpenFactory.ts +47 -19
  135. package/src/client/compilableQueryWatch.ts +9 -4
  136. package/src/client/connection/PowerSyncBackendConnector.ts +6 -3
  137. package/src/client/connection/PowerSyncCredentials.ts +3 -0
  138. package/src/client/runOnSchemaChange.ts +5 -2
  139. package/src/client/sync/bucket/CrudBatch.ts +2 -0
  140. package/src/client/sync/bucket/CrudEntry.ts +10 -101
  141. package/src/client/sync/bucket/CrudTransaction.ts +3 -0
  142. package/src/client/sync/options.ts +77 -0
  143. package/src/client/sync/stream/JsonValue.ts +11 -0
  144. package/src/client/sync/sync-streams.ts +23 -10
  145. package/src/client/triggers/TriggerManager.ts +29 -59
  146. package/src/client/triggers/sanitizeSQL.ts +5 -0
  147. package/src/client/watched/GetAllQuery.ts +8 -4
  148. package/src/client/watched/WatchedQuery.ts +20 -11
  149. package/src/client/watched/processors/DifferentialQueryProcessor.ts +19 -219
  150. package/src/client/watched/processors/OnChangeQueryProcessor.ts +4 -109
  151. package/src/client/watched/processors/comparators.ts +8 -0
  152. package/src/db/DBAdapter.ts +160 -175
  153. package/src/db/QueryResult.ts +195 -0
  154. package/src/db/crud/SyncProgress.ts +8 -43
  155. package/src/db/crud/SyncStatus.ts +66 -216
  156. package/src/db/crud/UploadQueueStatus.ts +3 -0
  157. package/src/db/schema/Column.ts +22 -5
  158. package/src/db/schema/Index.ts +9 -3
  159. package/src/db/schema/IndexedColumn.ts +9 -3
  160. package/src/db/schema/RawTable.ts +7 -1
  161. package/src/db/schema/Schema.ts +12 -7
  162. package/src/db/schema/Table.ts +130 -180
  163. package/src/index.ts +7 -27
  164. package/src/types/types.ts +6 -0
  165. package/src/utils/BaseObserver.ts +12 -0
  166. package/src/utils/Logger.ts +86 -31
  167. package/src/utils/MetaBaseObserver.ts +14 -60
  168. package/src/utils/mutex.ts +4 -189
  169. package/dist/bundle.cjs +0 -14781
  170. package/dist/bundle.cjs.map +0 -1
  171. package/dist/bundle.mjs +0 -14689
  172. package/dist/bundle.mjs.map +0 -1
  173. package/dist/bundle.node.cjs +0 -12258
  174. package/dist/bundle.node.cjs.map +0 -1
  175. package/dist/bundle.node.mjs +0 -12166
  176. package/dist/bundle.node.mjs.map +0 -1
  177. package/dist/index.d.cts +0 -4391
  178. package/lib/client/AbstractPowerSyncDatabase.js +0 -987
  179. package/lib/client/AbstractPowerSyncDatabase.js.map +0 -1
  180. package/lib/client/AbstractPowerSyncOpenFactory.d.ts +0 -22
  181. package/lib/client/AbstractPowerSyncOpenFactory.js +0 -25
  182. package/lib/client/AbstractPowerSyncOpenFactory.js.map +0 -1
  183. package/lib/client/ConnectionManager.d.ts +0 -112
  184. package/lib/client/ConnectionManager.js +0 -294
  185. package/lib/client/ConnectionManager.js.map +0 -1
  186. package/lib/client/CustomQuery.d.ts +0 -22
  187. package/lib/client/CustomQuery.js +0 -43
  188. package/lib/client/CustomQuery.js.map +0 -1
  189. package/lib/client/constants.d.ts +0 -1
  190. package/lib/client/constants.js +0 -2
  191. package/lib/client/constants.js.map +0 -1
  192. package/lib/client/sync/bucket/BucketStorageAdapter.d.ts +0 -102
  193. package/lib/client/sync/bucket/BucketStorageAdapter.js +0 -19
  194. package/lib/client/sync/bucket/BucketStorageAdapter.js.map +0 -1
  195. package/lib/client/sync/bucket/OpType.d.ts +0 -16
  196. package/lib/client/sync/bucket/OpType.js +0 -23
  197. package/lib/client/sync/bucket/OpType.js.map +0 -1
  198. package/lib/client/sync/bucket/OplogEntry.d.ts +0 -23
  199. package/lib/client/sync/bucket/OplogEntry.js +0 -36
  200. package/lib/client/sync/bucket/OplogEntry.js.map +0 -1
  201. package/lib/client/sync/bucket/SqliteBucketStorage.d.ts +0 -61
  202. package/lib/client/sync/bucket/SqliteBucketStorage.js +0 -324
  203. package/lib/client/sync/bucket/SqliteBucketStorage.js.map +0 -1
  204. package/lib/client/sync/bucket/SyncDataBatch.d.ts +0 -6
  205. package/lib/client/sync/bucket/SyncDataBatch.js +0 -12
  206. package/lib/client/sync/bucket/SyncDataBatch.js.map +0 -1
  207. package/lib/client/sync/bucket/SyncDataBucket.d.ts +0 -40
  208. package/lib/client/sync/bucket/SyncDataBucket.js +0 -40
  209. package/lib/client/sync/bucket/SyncDataBucket.js.map +0 -1
  210. package/lib/client/sync/stream/AbstractRemote.d.ts +0 -161
  211. package/lib/client/sync/stream/AbstractRemote.js +0 -483
  212. package/lib/client/sync/stream/AbstractRemote.js.map +0 -1
  213. package/lib/client/sync/stream/AbstractStreamingSyncImplementation.d.ts +0 -244
  214. package/lib/client/sync/stream/AbstractStreamingSyncImplementation.js +0 -990
  215. package/lib/client/sync/stream/AbstractStreamingSyncImplementation.js.map +0 -1
  216. package/lib/client/sync/stream/WebsocketClientTransport.d.ts +0 -15
  217. package/lib/client/sync/stream/WebsocketClientTransport.js +0 -61
  218. package/lib/client/sync/stream/WebsocketClientTransport.js.map +0 -1
  219. package/lib/client/sync/stream/core-instruction.d.ts +0 -72
  220. package/lib/client/sync/stream/core-instruction.js +0 -27
  221. package/lib/client/sync/stream/core-instruction.js.map +0 -1
  222. package/lib/client/sync/stream/streaming-sync-types.d.ts +0 -143
  223. package/lib/client/sync/stream/streaming-sync-types.js +0 -26
  224. package/lib/client/sync/stream/streaming-sync-types.js.map +0 -1
  225. package/lib/client/triggers/MemoryTriggerClaimManager.d.ts +0 -6
  226. package/lib/client/triggers/MemoryTriggerClaimManager.js +0 -21
  227. package/lib/client/triggers/MemoryTriggerClaimManager.js.map +0 -1
  228. package/lib/client/triggers/TriggerManagerImpl.d.ts +0 -39
  229. package/lib/client/triggers/TriggerManagerImpl.js +0 -405
  230. package/lib/client/triggers/TriggerManagerImpl.js.map +0 -1
  231. package/lib/client/watched/processors/AbstractQueryProcessor.d.ts +0 -68
  232. package/lib/client/watched/processors/AbstractQueryProcessor.js +0 -151
  233. package/lib/client/watched/processors/AbstractQueryProcessor.js.map +0 -1
  234. package/lib/db/ConnectionClosedError.d.ts +0 -10
  235. package/lib/db/ConnectionClosedError.js +0 -21
  236. package/lib/db/ConnectionClosedError.js.map +0 -1
  237. package/lib/db/schema/TableV2.d.ts +0 -9
  238. package/lib/db/schema/TableV2.js +0 -9
  239. package/lib/db/schema/TableV2.js.map +0 -1
  240. package/lib/utils/AbortOperation.d.ts +0 -9
  241. package/lib/utils/AbortOperation.js +0 -19
  242. package/lib/utils/AbortOperation.js.map +0 -1
  243. package/lib/utils/ControlledExecutor.d.ts +0 -25
  244. package/lib/utils/ControlledExecutor.js +0 -51
  245. package/lib/utils/ControlledExecutor.js.map +0 -1
  246. package/lib/utils/async.d.ts +0 -14
  247. package/lib/utils/async.js +0 -46
  248. package/lib/utils/async.js.map +0 -1
  249. package/lib/utils/parseQuery.d.ts +0 -6
  250. package/lib/utils/parseQuery.js +0 -17
  251. package/lib/utils/parseQuery.js.map +0 -1
  252. package/lib/utils/queue.d.ts +0 -16
  253. package/lib/utils/queue.js +0 -42
  254. package/lib/utils/queue.js.map +0 -1
  255. package/lib/utils/stream_transform.d.ts +0 -39
  256. package/lib/utils/stream_transform.js +0 -206
  257. package/lib/utils/stream_transform.js.map +0 -1
  258. package/src/client/AbstractPowerSyncDatabase.ts +0 -1362
  259. package/src/client/AbstractPowerSyncOpenFactory.ts +0 -39
  260. package/src/client/ConnectionManager.ts +0 -402
  261. package/src/client/CustomQuery.ts +0 -56
  262. package/src/client/constants.ts +0 -1
  263. package/src/client/sync/bucket/BucketStorageAdapter.ts +0 -118
  264. package/src/client/sync/bucket/OpType.ts +0 -23
  265. package/src/client/sync/bucket/OplogEntry.ts +0 -50
  266. package/src/client/sync/bucket/SqliteBucketStorage.ts +0 -395
  267. package/src/client/sync/bucket/SyncDataBatch.ts +0 -11
  268. package/src/client/sync/bucket/SyncDataBucket.ts +0 -49
  269. package/src/client/sync/stream/AbstractRemote.ts +0 -624
  270. package/src/client/sync/stream/AbstractStreamingSyncImplementation.ts +0 -1285
  271. package/src/client/sync/stream/WebsocketClientTransport.ts +0 -80
  272. package/src/client/sync/stream/core-instruction.ts +0 -99
  273. package/src/client/sync/stream/streaming-sync-types.ts +0 -210
  274. package/src/client/triggers/MemoryTriggerClaimManager.ts +0 -25
  275. package/src/client/triggers/TriggerManagerImpl.ts +0 -496
  276. package/src/client/watched/processors/AbstractQueryProcessor.ts +0 -226
  277. package/src/db/ConnectionClosedError.ts +0 -23
  278. package/src/db/schema/TableV2.ts +0 -9
  279. package/src/utils/AbortOperation.ts +0 -17
  280. package/src/utils/ControlledExecutor.ts +0 -72
  281. package/src/utils/async.ts +0 -50
  282. package/src/utils/parseQuery.ts +0 -25
  283. package/src/utils/queue.ts +0 -48
  284. package/src/utils/stream_transform.ts +0 -252
@@ -2,109 +2,98 @@
2
2
  * Set of generic interfaces to allow PowerSync compatibility with
3
3
  * different SQLite DB implementations.
4
4
  */
5
+ import { BaseObserver } from '../utils/BaseObserver.js';
6
+ import { queryResultFromRaw, queryResultWithoutRows } from './QueryResult.js';
5
7
  /**
6
- * Implements {@link DBGetUtils} on a {@link SqlRunner}.
8
+ * @public
7
9
  */
8
- export function DBGetUtilsDefaultMixin(Base) {
9
- return class extends Base {
10
- async getAll(sql, parameters) {
11
- const res = await this.execute(sql, parameters);
12
- return res.rows?._array ?? [];
13
- }
14
- async getOptional(sql, parameters) {
15
- const res = await this.execute(sql, parameters);
16
- return res.rows?.item(0) ?? null;
17
- }
18
- async get(sql, parameters) {
19
- const res = await this.execute(sql, parameters);
20
- const first = res.rows?.item(0);
21
- if (!first) {
22
- throw new Error('Result set is empty');
23
- }
24
- return first;
10
+ export class LockContext {
11
+ async getAll(sql, parameters) {
12
+ const rs = await this.execute(sql, parameters);
13
+ return Array.from(rs);
14
+ }
15
+ async getOptional(sql, parameters) {
16
+ const { array } = await this.execute(sql, parameters);
17
+ if (array.length > 0) {
18
+ return array[0];
25
19
  }
26
- async executeBatch(query, params = []) {
27
- // If this context can run batch statements natively, use that.
28
- // @ts-ignore
29
- if (super.executeBatch) {
30
- // @ts-ignore
31
- return super.executeBatch(query, params);
32
- }
33
- // Emulate executeBatch by running statements individually.
34
- let lastInsertId;
35
- let rowsAffected = 0;
36
- for (const set of params) {
37
- const result = await this.execute(query, set);
38
- lastInsertId = result.insertId;
39
- rowsAffected += result.rowsAffected;
40
- }
41
- return {
42
- rowsAffected,
43
- insertId: lastInsertId
44
- };
20
+ return null;
21
+ }
22
+ async get(sql, parameters) {
23
+ const row = await this.getOptional(sql, parameters);
24
+ if (row == null) {
25
+ throw new Error('Result set is empty');
45
26
  }
46
- };
27
+ return row;
28
+ }
29
+ async execute(query, params) {
30
+ const raw = await this.executeRaw(query, params);
31
+ return queryResultFromRaw(raw);
32
+ }
33
+ async executeBatch(query, params = []) {
34
+ // Emulate executeBatch by running statements individually.
35
+ let lastInsertId;
36
+ let rowsAffected = 0;
37
+ for (const set of params) {
38
+ const result = await this.execute(query, set);
39
+ lastInsertId = result.insertId;
40
+ rowsAffected += result.rowsAffected ?? 0;
41
+ }
42
+ return queryResultWithoutRows({
43
+ rowsAffected,
44
+ insertId: lastInsertId
45
+ });
46
+ }
47
47
  }
48
48
  /**
49
- * Update table operation numbers from SQLite
50
- */
51
- export var RowUpdateType;
52
- (function (RowUpdateType) {
53
- RowUpdateType[RowUpdateType["SQLITE_INSERT"] = 18] = "SQLITE_INSERT";
54
- RowUpdateType[RowUpdateType["SQLITE_DELETE"] = 9] = "SQLITE_DELETE";
55
- RowUpdateType[RowUpdateType["SQLITE_UPDATE"] = 23] = "SQLITE_UPDATE";
56
- })(RowUpdateType || (RowUpdateType = {}));
57
- /**
58
- * A mixin to implement {@link DBAdapter} by delegating to {@link ConnectionPool.readLock} and
59
- * {@link ConnectionPool.writeLock}.
49
+ * @public
60
50
  */
61
- export function DBAdapterDefaultMixin(Base) {
62
- return class extends Base {
63
- readTransaction(fn, options) {
64
- return this.readLock((ctx) => TransactionImplementation.runWith(ctx, fn), options);
65
- }
66
- writeTransaction(fn, options) {
67
- return this.writeLock((ctx) => TransactionImplementation.runWith(ctx, fn), options);
68
- }
69
- getAll(sql, parameters) {
70
- return this.readLock((ctx) => ctx.getAll(sql, parameters));
71
- }
72
- getOptional(sql, parameters) {
73
- return this.readLock((ctx) => ctx.getOptional(sql, parameters));
74
- }
75
- get(sql, parameters) {
76
- return this.readLock((ctx) => ctx.get(sql, parameters));
77
- }
78
- execute(query, params) {
79
- return this.writeLock((ctx) => ctx.execute(query, params));
80
- }
81
- executeRaw(query, params) {
82
- return this.writeLock((ctx) => ctx.executeRaw(query, params));
83
- }
84
- executeBatch(query, params) {
85
- return this.writeTransaction((tx) => tx.executeBatch(query, params));
86
- }
87
- };
51
+ export class DBAdapter extends BaseObserver {
52
+ readTransaction(fn, options) {
53
+ return this.readLock((ctx) => TransactionImplementation.runWith(ctx, fn), options);
54
+ }
55
+ writeTransaction(fn, options) {
56
+ return this.writeLock((ctx) => TransactionImplementation.runWith(ctx, fn), options);
57
+ }
58
+ getAll(sql, parameters) {
59
+ return this.readLock((ctx) => ctx.getAll(sql, parameters));
60
+ }
61
+ getOptional(sql, parameters) {
62
+ return this.readLock((ctx) => ctx.getOptional(sql, parameters));
63
+ }
64
+ get(sql, parameters) {
65
+ return this.readLock((ctx) => ctx.get(sql, parameters));
66
+ }
67
+ execute(query, params) {
68
+ return this.writeLock((ctx) => ctx.execute(query, params));
69
+ }
70
+ executeRaw(query, params) {
71
+ return this.writeLock((ctx) => ctx.executeRaw(query, params));
72
+ }
73
+ executeBatch(query, params) {
74
+ return this.writeTransaction((tx) => tx.executeBatch(query, params));
75
+ }
88
76
  }
89
- class BaseTransaction {
77
+ class TransactionImplementation extends LockContext {
90
78
  inner;
91
79
  finalized = false;
92
80
  constructor(inner) {
81
+ super();
93
82
  this.inner = inner;
94
83
  }
95
84
  async commit() {
96
85
  if (this.finalized) {
97
- return { rowsAffected: 0 };
86
+ return;
98
87
  }
99
88
  this.finalized = true;
100
- return this.inner.execute('COMMIT');
89
+ await this.inner.execute('COMMIT');
101
90
  }
102
91
  async rollback() {
103
92
  if (this.finalized) {
104
- return { rowsAffected: 0 };
93
+ return;
105
94
  }
106
95
  this.finalized = true;
107
- return this.inner.execute('ROLLBACK');
96
+ await this.inner.execute('ROLLBACK');
108
97
  }
109
98
  execute(query, params) {
110
99
  return this.inner.execute(query, params);
@@ -115,8 +104,6 @@ class BaseTransaction {
115
104
  executeBatch(query, params) {
116
105
  return this.inner.executeBatch(query, params);
117
106
  }
118
- }
119
- class TransactionImplementation extends DBGetUtilsDefaultMixin(BaseTransaction) {
120
107
  static async runWith(ctx, fn) {
121
108
  let tx = new TransactionImplementation(ctx);
122
109
  try {
@@ -137,10 +124,4 @@ class TransactionImplementation extends DBGetUtilsDefaultMixin(BaseTransaction)
137
124
  }
138
125
  }
139
126
  }
140
- export function isBatchedUpdateNotification(update) {
141
- return 'tables' in update;
142
- }
143
- export function extractTableUpdates(update) {
144
- return isBatchedUpdateNotification(update) ? update.tables : [update.table];
145
- }
146
127
  //# sourceMappingURL=DBAdapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DBAdapter.js","sourceRoot":"","sources":["../../src/db/DBAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DBAdapter.js","sourceRoot":"","sources":["../../src/db/DBAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * A SQLite value, either text, a number, a blob value or null.
3
+ *
4
+ * @public
5
+ */
6
+ export type SqliteValue = string | number | bigint | number[] | Uint8Array | null;
7
+ /**
8
+ * A record of SQLite values representing a row.
9
+ *
10
+ * @public
11
+ */
12
+ export type SqliteRecord = Record<string, SqliteValue>;
13
+ /**
14
+ * A representation of query results as JavaScript object.
15
+ *
16
+ * @public
17
+ */
18
+ export interface ResultSet {
19
+ /**
20
+ * The amount of rows in the result set.
21
+ */
22
+ get length(): number;
23
+ /**
24
+ * @deprecated Use {@link QueryResult.array} instead.
25
+ */
26
+ get _array(): any[];
27
+ /**
28
+ * @deprecated Use {@link QueryResult.array} instead.
29
+ */
30
+ item<T>(idx: number): T;
31
+ }
32
+ /**
33
+ * Shared superinterface for {@link QueryResult} and {@link RawQueryResult}.
34
+ *
35
+ * @public
36
+ */
37
+ export interface BaseQueryResult {
38
+ /** Represents the auto-generated row id if applicable. */
39
+ insertId?: number;
40
+ /**
41
+ * Number of affected rows reported by SQLite for a write query.
42
+ *
43
+ * When using the default client-side [JSON-based view system](https://docs.powersync.com/architecture/client-architecture#client-side-schema-and-sqlite-database-structure),
44
+ * `rowsAffected` may be `0` for successful `UPDATE` and `DELETE` statements.
45
+ * Use a `RETURNING` clause and inspect `rows` when you need to confirm which rows changed.
46
+ */
47
+ rowsAffected?: number;
48
+ }
49
+ /**
50
+ * Object returned by SQL Query executions.
51
+ *
52
+ * @public
53
+ */
54
+ export interface QueryResult<T = SqliteRecord> extends BaseQueryResult, Iterable<T, undefined> {
55
+ /**
56
+ * If the query returned rows, the result set containing returned values.
57
+ */
58
+ rows?: ResultSet;
59
+ /**
60
+ * Rows in this result set.
61
+ */
62
+ array: T[];
63
+ }
64
+ /**
65
+ * A raw array-based result set representing rows returned by SQLite.
66
+ *
67
+ * @public
68
+ */
69
+ export interface RawQueryResult extends BaseQueryResult {
70
+ /**
71
+ * Names of columns in this result set. Every column has a name, so the length of this array is always equal to the
72
+ * amount of columns in the result set.
73
+ *
74
+ * Note that column names are not necessarily unique, e.g. a `SELECT foo.user, bar.user FROM ...` will have
75
+ * `['user', 'user']` in this array.
76
+ */
77
+ columnNames: string[];
78
+ /**
79
+ * Rows in the result set.
80
+ *
81
+ * Each row has a length equal to {@link RawQueryResult.columnNames}.
82
+ */
83
+ rawRows: SqliteValue[][];
84
+ }
85
+ /**
86
+ * Creates a query result by mapping raw rows to JavaScript.
87
+ *
88
+ * This should not be used with libraries doing this mapping natively, as that is typically more performant.
89
+ *
90
+ * @public
91
+ */
92
+ export declare function queryResultFromRaw<T>(raw: RawQueryResult): QueryResult<T>;
93
+ /**
94
+ * Creates a query result from rows that have already been mapped to JavaScript.
95
+ *
96
+ * @public
97
+ */
98
+ export declare function queryResultFromMapped<T>(base: BaseQueryResult, rows?: T[]): QueryResult<T>;
99
+ /**
100
+ * Creates a {@link QueryResult} not containing any rows.
101
+ *
102
+ * @public
103
+ */
104
+ export declare function queryResultWithoutRows(result: BaseQueryResult): QueryResult<never>;
@@ -0,0 +1,96 @@
1
+ function rowToRecord(columnNames, row) {
2
+ const record = {};
3
+ columnNames.forEach((name, idx) => (record[name] = row[idx]));
4
+ return record;
5
+ }
6
+ /**
7
+ * Creates a query result by mapping raw rows to JavaScript.
8
+ *
9
+ * This should not be used with libraries doing this mapping natively, as that is typically more performant.
10
+ *
11
+ * @public
12
+ */
13
+ export function queryResultFromRaw(raw) {
14
+ const { insertId, rowsAffected, columnNames, rawRows } = raw;
15
+ let array;
16
+ function loadAsArray() {
17
+ if (array)
18
+ return array;
19
+ return (array = rawRows.map((row) => rowToRecord(columnNames, row)));
20
+ }
21
+ function getRow(idx) {
22
+ if (array)
23
+ return array[idx];
24
+ return rowToRecord(columnNames, rawRows[idx]);
25
+ }
26
+ return {
27
+ insertId,
28
+ rowsAffected,
29
+ get array() {
30
+ return loadAsArray();
31
+ },
32
+ rows: {
33
+ length: rawRows.length,
34
+ get _array() {
35
+ return loadAsArray();
36
+ },
37
+ item: getRow
38
+ },
39
+ [Symbol.iterator]() {
40
+ let nextIndex = 0;
41
+ return {
42
+ next: function () {
43
+ if (nextIndex >= rawRows.length) {
44
+ return { done: true, value: undefined };
45
+ }
46
+ const row = getRow(nextIndex);
47
+ nextIndex++;
48
+ return { done: false, value: row };
49
+ }
50
+ };
51
+ }
52
+ };
53
+ }
54
+ /**
55
+ * Creates a query result from rows that have already been mapped to JavaScript.
56
+ *
57
+ * @public
58
+ */
59
+ export function queryResultFromMapped(base, rows) {
60
+ if (rows == null)
61
+ return queryResultWithoutRows(base);
62
+ return {
63
+ insertId: base.insertId,
64
+ rowsAffected: base.rowsAffected,
65
+ array: rows ?? [],
66
+ rows: {
67
+ length: rows.length,
68
+ _array: rows,
69
+ item(i) {
70
+ return rows[i];
71
+ }
72
+ },
73
+ [Symbol.iterator]() {
74
+ return rows[Symbol.iterator]();
75
+ }
76
+ };
77
+ }
78
+ /**
79
+ * Creates a {@link QueryResult} not containing any rows.
80
+ *
81
+ * @public
82
+ */
83
+ export function queryResultWithoutRows(result) {
84
+ return {
85
+ ...result,
86
+ array: [],
87
+ [Symbol.iterator]() {
88
+ return {
89
+ next() {
90
+ return { done: true, value: undefined };
91
+ }
92
+ };
93
+ }
94
+ };
95
+ }
96
+ //# sourceMappingURL=QueryResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryResult.js","sourceRoot":"","sources":["../../src/db/QueryResult.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,10 @@
1
- import type { BucketProgress } from '../../client/sync/stream/core-instruction.js';
2
- /** @internal */
3
- export type InternalProgressInformation = Record<string, BucketProgress>;
4
- /**
5
- * @internal The priority used by the core extension to indicate that a full sync was completed.
6
- */
7
- export declare const FULL_SYNC_PRIORITY = 2147483647;
8
1
  /**
9
2
  * Information about a progressing download made by the PowerSync SDK.
10
3
  *
11
4
  * To obtain these values, use {@link SyncProgress}, available through
12
5
  * {@link SyncStatus#downloadProgress}.
6
+ *
7
+ * @public
13
8
  */
14
9
  export interface ProgressWithOperations {
15
10
  /**
@@ -22,7 +17,8 @@ export interface ProgressWithOperations {
22
17
  */
23
18
  downloadedOperations: number;
24
19
  /**
25
- * Relative progress, as {@link downloadedOperations} of {@link totalOperations}.
20
+ * Relative progress, as {@link ProgressWithOperations.downloadedOperations} of
21
+ * {@link ProgressWithOperations.totalOperations}.
26
22
  *
27
23
  * This will be a number between `0.0` and `1.0` (inclusive).
28
24
  *
@@ -51,13 +47,10 @@ export interface ProgressWithOperations {
51
47
  *
52
48
  * Also note that data is downloaded in bulk, which means that individual counters are unlikely
53
49
  * to be updated one-by-one.
50
+ *
51
+ * @public
54
52
  */
55
- export declare class SyncProgress implements ProgressWithOperations {
56
- protected internal: InternalProgressInformation;
57
- totalOperations: number;
58
- downloadedOperations: number;
59
- downloadedFraction: number;
60
- constructor(internal: InternalProgressInformation);
53
+ export interface SyncProgress extends ProgressWithOperations {
61
54
  /**
62
55
  * Returns download progress towards all data up until the specified priority being received.
63
56
  *
@@ -1,61 +1,2 @@
1
- /**
2
- * @internal The priority used by the core extension to indicate that a full sync was completed.
3
- */
4
- export const FULL_SYNC_PRIORITY = 2147483647;
5
- /**
6
- * Provides realtime progress on how PowerSync is downloading rows.
7
- *
8
- * The progress until the next complete sync is available through the fields on {@link ProgressWithOperations},
9
- * which this class implements.
10
- * Additionally, the {@link SyncProgress.untilPriority} method can be used to otbain progress towards
11
- * a specific priority (instead of the progress for the entire download).
12
- *
13
- * The reported progress always reflects the status towards the end of a sync iteration (after
14
- * which a consistent snapshot of all buckets is available locally).
15
- *
16
- * In rare cases (in particular, when a [compacting](https://docs.powersync.com/usage/lifecycle-maintenance/compacting-buckets)
17
- * operation takes place between syncs), it's possible for the returned numbers to be slightly
18
- * inaccurate. For this reason, {@link SyncProgress} should be seen as an approximation of progress.
19
- * The information returned is good enough to build progress bars, but not exact enough to track
20
- * individual download counts.
21
- *
22
- * Also note that data is downloaded in bulk, which means that individual counters are unlikely
23
- * to be updated one-by-one.
24
- */
25
- export class SyncProgress {
26
- internal;
27
- totalOperations;
28
- downloadedOperations;
29
- downloadedFraction;
30
- constructor(internal) {
31
- this.internal = internal;
32
- const untilCompletion = this.untilPriority(FULL_SYNC_PRIORITY);
33
- this.totalOperations = untilCompletion.totalOperations;
34
- this.downloadedOperations = untilCompletion.downloadedOperations;
35
- this.downloadedFraction = untilCompletion.downloadedFraction;
36
- }
37
- /**
38
- * Returns download progress towards all data up until the specified priority being received.
39
- *
40
- * The returned {@link ProgressWithOperations} tracks the target amount of operations that need
41
- * to be downloaded in total and how many of them have already been received.
42
- */
43
- untilPriority(priority) {
44
- let total = 0;
45
- let downloaded = 0;
46
- for (const progress of Object.values(this.internal)) {
47
- // Include higher-priority buckets, which are represented by lower numbers.
48
- if (progress.priority <= priority) {
49
- downloaded += progress.since_last;
50
- total += progress.target_count - progress.at_last;
51
- }
52
- }
53
- let progress = total == 0 ? 0.0 : downloaded / total;
54
- return {
55
- totalOperations: total,
56
- downloadedOperations: downloaded,
57
- downloadedFraction: progress
58
- };
59
- }
60
- }
1
+ export {};
61
2
  //# sourceMappingURL=SyncProgress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SyncProgress.js","sourceRoot":"","sources":["../../../src/db/crud/SyncProgress.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;AA+B7C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,YAAY;IAKD;IAJtB,eAAe,CAAS;IACxB,oBAAoB,CAAS;IAC7B,kBAAkB,CAAS;IAE3B,YAAsB,QAAqC;QAArC,aAAQ,GAAR,QAAQ,CAA6B;QACzD,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAE/D,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC,eAAe,CAAC;QACvD,IAAI,CAAC,oBAAoB,GAAG,eAAe,CAAC,oBAAoB,CAAC;QACjE,IAAI,CAAC,kBAAkB,GAAG,eAAe,CAAC,kBAAkB,CAAC;IAC/D,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,QAAgB;QAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpD,2EAA2E;YAC3E,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBAClC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC;gBAClC,KAAK,IAAI,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC;YACpD,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC;QACrD,OAAO;YACL,eAAe,EAAE,KAAK;YACtB,oBAAoB,EAAE,UAAU;YAChC,kBAAkB,EAAE,QAAQ;SAC7B,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"SyncProgress.js","sourceRoot":"","sources":["../../../src/db/crud/SyncProgress.ts"],"names":[],"mappings":""}