@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
@@ -1,405 +0,0 @@
1
- import { DEFAULT_WATCH_THROTTLE_MS } from '../watched/WatchedQuery.js';
2
- import { DiffTriggerOperation } from './TriggerManager.js';
3
- export const DEFAULT_TRIGGER_MANAGER_CONFIGURATION = {
4
- useStorageByDefault: false
5
- };
6
- const TRIGGER_CLEANUP_INTERVAL_MS = 120_000; // 2 minutes
7
- /**
8
- * @internal
9
- * @experimental
10
- */
11
- export class TriggerManagerImpl {
12
- options;
13
- schema;
14
- defaultConfig;
15
- cleanupTimeout;
16
- isDisposed;
17
- constructor(options) {
18
- this.options = options;
19
- this.schema = options.schema;
20
- options.db.registerListener({
21
- schemaChanged: (schema) => {
22
- this.schema = schema;
23
- }
24
- });
25
- this.isDisposed = false;
26
- /**
27
- * Configure a cleanup to run on an interval.
28
- * The interval is configured using setTimeout to take the async
29
- * execution time of the callback into account.
30
- */
31
- this.defaultConfig = DEFAULT_TRIGGER_MANAGER_CONFIGURATION;
32
- const cleanupCallback = async () => {
33
- this.cleanupTimeout = null;
34
- if (this.isDisposed) {
35
- return;
36
- }
37
- try {
38
- await this.cleanupResources();
39
- }
40
- catch (ex) {
41
- this.db.logger.error(`Caught error while attempting to cleanup triggers`, ex);
42
- }
43
- finally {
44
- // if not closed, set another timeout
45
- if (this.isDisposed) {
46
- return;
47
- }
48
- this.cleanupTimeout = setTimeout(cleanupCallback, TRIGGER_CLEANUP_INTERVAL_MS);
49
- }
50
- };
51
- this.cleanupTimeout = setTimeout(cleanupCallback, TRIGGER_CLEANUP_INTERVAL_MS);
52
- }
53
- get db() {
54
- return this.options.db;
55
- }
56
- async getUUID() {
57
- const { id: uuid } = await this.db.get(/* sql */ `
58
- SELECT
59
- uuid () as id
60
- `);
61
- // Replace dashes with underscores for SQLite table/trigger name compatibility
62
- return uuid.replace(/-/g, '_');
63
- }
64
- async removeTriggers(tx, triggerIds) {
65
- for (const triggerId of triggerIds) {
66
- await tx.execute(/* sql */ `DROP TRIGGER IF EXISTS ${triggerId}; `);
67
- }
68
- }
69
- dispose() {
70
- this.isDisposed = true;
71
- if (this.cleanupTimeout) {
72
- clearTimeout(this.cleanupTimeout);
73
- }
74
- }
75
- /**
76
- * Updates default config settings for platform specific use-cases.
77
- */
78
- updateDefaults(config) {
79
- this.defaultConfig = {
80
- ...this.defaultConfig,
81
- ...config
82
- };
83
- }
84
- generateTriggerName(operation, destinationTable, triggerId) {
85
- return `__ps_temp_trigger_${operation.toLowerCase()}__${destinationTable}__${triggerId}`;
86
- }
87
- /**
88
- * Cleanup any SQLite triggers or tables that are no longer in use.
89
- */
90
- async cleanupResources() {
91
- // we use the database here since cleanupResources is called during the PowerSyncDatabase initialization
92
- await this.db.database.writeLock(async (ctx) => {
93
- /**
94
- * Note: We only cleanup persisted triggers. These are tracked in the sqlite_master table.
95
- * temporary triggers will not be affected by this.
96
- * Query all triggers that match our naming pattern
97
- */
98
- const triggers = await ctx.getAll(/* sql */ `
99
- SELECT
100
- name
101
- FROM
102
- sqlite_master
103
- WHERE
104
- type = 'trigger'
105
- AND name LIKE '__ps_temp_trigger_%'
106
- `);
107
- /** Use regex to extract table names and IDs from trigger names
108
- * Trigger naming convention: __ps_temp_trigger_<operation>__<destination_table>__<id>
109
- */
110
- const triggerPattern = /^__ps_temp_trigger_(?:insert|update|delete)__(.+)__([a-f0-9_]{36})$/i;
111
- const trackedItems = new Map();
112
- for (const trigger of triggers) {
113
- const match = trigger.name.match(triggerPattern);
114
- if (match) {
115
- const [, table, id] = match;
116
- // Collect all trigger names for each id combo
117
- const existing = trackedItems.get(id);
118
- if (existing) {
119
- existing.triggerNames.push(trigger.name);
120
- }
121
- else {
122
- trackedItems.set(id, { table, id, triggerNames: [trigger.name] });
123
- }
124
- }
125
- }
126
- for (const trackedItem of trackedItems.values()) {
127
- // check if there is anything holding on to this item
128
- const hasClaim = await this.options.claimManager.checkClaim(trackedItem.id);
129
- if (hasClaim) {
130
- // This does not require cleanup
131
- continue;
132
- }
133
- this.db.logger.debug(`Clearing resources for trigger ${trackedItem.id} with table ${trackedItem.table}`);
134
- // We need to delete the triggers and table
135
- for (const triggerName of trackedItem.triggerNames) {
136
- await ctx.execute(`DROP TRIGGER IF EXISTS ${triggerName}`);
137
- }
138
- await ctx.execute(`DROP TABLE IF EXISTS ${trackedItem.table}`);
139
- }
140
- });
141
- }
142
- async createDiffTrigger(options) {
143
- await this.db.waitForReady();
144
- const { source, destination, columns, when, hooks, setupContext,
145
- // Fall back to the provided default if not given on this level
146
- useStorage = this.defaultConfig.useStorageByDefault } = options;
147
- const operations = Object.keys(when);
148
- if (operations.length == 0) {
149
- throw new Error('At least one WHEN operation must be specified for the trigger.');
150
- }
151
- /**
152
- * The clause to use when executing
153
- * CREATE ${tableTriggerTypeClause} TABLE
154
- * OR
155
- * CREATE ${tableTriggerTypeClause} TRIGGER
156
- */
157
- const tableTriggerTypeClause = !useStorage ? 'TEMP' : '';
158
- const whenClauses = Object.fromEntries(Object.entries(when).map(([operation, filter]) => [operation, `WHEN ${filter}`]));
159
- /**
160
- * Allow specifying the View name as the source.
161
- * We can lookup the internal table name from the schema.
162
- */
163
- const sourceDefinition = this.schema.tables.find((table) => table.viewName == source);
164
- if (!sourceDefinition) {
165
- throw new Error(`Source table or view "${source}" not found in the schema.`);
166
- }
167
- const replicatedColumns = columns ?? sourceDefinition.columns.map((col) => col.name);
168
- const internalSource = sourceDefinition.internalName;
169
- const triggerIds = [];
170
- const id = await this.getUUID();
171
- const releaseStorageClaim = useStorage ? await this.options.claimManager.obtainClaim(id) : null;
172
- /**
173
- * We default to replicating all columns if no columns array is provided.
174
- */
175
- const jsonFragment = (source = 'NEW') => {
176
- if (columns == null) {
177
- // Track all columns
178
- return `${source}.data`;
179
- }
180
- else if (columns.length == 0) {
181
- // Don't track any columns except for the id
182
- return `'{}'`;
183
- }
184
- else {
185
- // Filter the data by the replicated columns
186
- return `json_object(${replicatedColumns.map((col) => `'${col}', json_extract(${source}.data, '$.${col}')`).join(', ')})`;
187
- }
188
- };
189
- const disposeWarningListener = this.db.registerListener({
190
- schemaChanged: () => {
191
- this.db.logger.warn(`The PowerSync schema has changed while previously configured triggers are still operational. This might cause unexpected results.`);
192
- }
193
- });
194
- /**
195
- * Declare the cleanup function early since if any of the init steps fail,
196
- * we need to ensure we can cleanup the created resources.
197
- * We unfortunately cannot rely on transaction rollback.
198
- */
199
- const cleanup = async (options) => {
200
- const { context } = options ?? {};
201
- disposeWarningListener();
202
- const doCleanup = async (tx) => {
203
- await this.removeTriggers(tx, triggerIds);
204
- await tx.execute(`DROP TABLE IF EXISTS ${destination};`);
205
- await releaseStorageClaim?.();
206
- };
207
- if (context) {
208
- await doCleanup(context);
209
- }
210
- else {
211
- await this.db.writeLock(doCleanup);
212
- }
213
- };
214
- const setup = async (tx) => {
215
- // Allow user code to execute in this lock context before the trigger is created.
216
- await hooks?.beforeCreate?.(tx);
217
- await tx.execute(/* sql */ `
218
- CREATE ${tableTriggerTypeClause} TABLE ${destination} (
219
- operation_id INTEGER PRIMARY KEY AUTOINCREMENT,
220
- id TEXT,
221
- operation TEXT,
222
- timestamp TEXT,
223
- value TEXT,
224
- previous_value TEXT
225
- )
226
- `);
227
- if (operations.includes(DiffTriggerOperation.INSERT)) {
228
- const insertTriggerId = this.generateTriggerName(DiffTriggerOperation.INSERT, destination, id);
229
- triggerIds.push(insertTriggerId);
230
- await tx.execute(/* sql */ `
231
- CREATE ${tableTriggerTypeClause} TRIGGER ${insertTriggerId} AFTER INSERT ON ${internalSource} ${whenClauses[DiffTriggerOperation.INSERT]} BEGIN
232
- INSERT INTO
233
- ${destination} (id, operation, timestamp, value)
234
- VALUES
235
- (
236
- NEW.id,
237
- 'INSERT',
238
- strftime ('%Y-%m-%dT%H:%M:%fZ', 'now'),
239
- ${jsonFragment('NEW')}
240
- );
241
-
242
- END
243
- `);
244
- }
245
- if (operations.includes(DiffTriggerOperation.UPDATE)) {
246
- const updateTriggerId = this.generateTriggerName(DiffTriggerOperation.UPDATE, destination, id);
247
- triggerIds.push(updateTriggerId);
248
- await tx.execute(/* sql */ `
249
- CREATE ${tableTriggerTypeClause} TRIGGER ${updateTriggerId} AFTER
250
- UPDATE ON ${internalSource} ${whenClauses[DiffTriggerOperation.UPDATE]} BEGIN
251
- INSERT INTO
252
- ${destination} (id, operation, timestamp, value, previous_value)
253
- VALUES
254
- (
255
- NEW.id,
256
- 'UPDATE',
257
- strftime ('%Y-%m-%dT%H:%M:%fZ', 'now'),
258
- ${jsonFragment('NEW')},
259
- ${jsonFragment('OLD')}
260
- );
261
-
262
- END;
263
- `);
264
- }
265
- if (operations.includes(DiffTriggerOperation.DELETE)) {
266
- const deleteTriggerId = this.generateTriggerName(DiffTriggerOperation.DELETE, destination, id);
267
- triggerIds.push(deleteTriggerId);
268
- // Create delete trigger for basic JSON
269
- await tx.execute(/* sql */ `
270
- CREATE ${tableTriggerTypeClause} TRIGGER ${deleteTriggerId} AFTER DELETE ON ${internalSource} ${whenClauses[DiffTriggerOperation.DELETE]} BEGIN
271
- INSERT INTO
272
- ${destination} (id, operation, timestamp, value)
273
- VALUES
274
- (
275
- OLD.id,
276
- 'DELETE',
277
- strftime ('%Y-%m-%dT%H:%M:%fZ', 'now'),
278
- ${jsonFragment('OLD')}
279
- );
280
-
281
- END;
282
- `);
283
- }
284
- };
285
- try {
286
- if (setupContext) {
287
- await setup(setupContext);
288
- }
289
- else {
290
- await this.db.writeLock(setup);
291
- }
292
- return cleanup;
293
- }
294
- catch (error) {
295
- try {
296
- await cleanup(setupContext ? { context: setupContext } : undefined);
297
- }
298
- catch (cleanupError) {
299
- throw new AggregateError([error, cleanupError], 'Error during operation and cleanup');
300
- }
301
- throw error;
302
- }
303
- }
304
- async trackTableDiff(options) {
305
- const { source, when, columns, hooks, throttleMs = DEFAULT_WATCH_THROTTLE_MS } = options;
306
- await this.db.waitForReady();
307
- /**
308
- * Allow specifying the View name as the source.
309
- * We can lookup the internal table name from the schema.
310
- */
311
- const sourceDefinition = this.schema.tables.find((table) => table.viewName == source);
312
- if (!sourceDefinition) {
313
- throw new Error(`Source table or view "${source}" not found in the schema.`);
314
- }
315
- // The columns to present in the onChange context methods.
316
- // If no array is provided, we use all columns from the source table.
317
- const contextColumns = columns ?? sourceDefinition.columns.map((col) => col.name);
318
- const id = await this.getUUID();
319
- const destination = `__ps_temp_track_${source}_${id}`;
320
- // register an onChange before the trigger is created
321
- const abortController = new AbortController();
322
- const abortOnChange = () => abortController.abort();
323
- this.db.onChange({
324
- // Note that the onChange events here have their execution scheduled.
325
- // Callbacks are throttled and are sequential.
326
- onChange: async () => {
327
- if (abortController.signal.aborted)
328
- return;
329
- // Run the handler in a write lock to keep the state of the
330
- // destination table consistent.
331
- await this.db.writeTransaction(async (tx) => {
332
- const callbackResult = await options.onChange({
333
- ...tx,
334
- destinationTable: destination,
335
- withDiff: async (query, params, options) => {
336
- // Wrap the query to expose the destination table
337
- const operationIdSelect = options?.castOperationIdAsText
338
- ? 'id, operation, CAST(operation_id AS TEXT) as operation_id, timestamp, value, previous_value'
339
- : '*';
340
- const wrappedQuery = /* sql */ `
341
- WITH
342
- DIFF AS (
343
- SELECT
344
- ${operationIdSelect}
345
- FROM
346
- ${destination}
347
- ORDER BY
348
- operation_id ASC
349
- ) ${query}
350
- `;
351
- return tx.getAll(wrappedQuery, params);
352
- },
353
- withExtractedDiff: async (query, params) => {
354
- // Wrap the query to expose the destination table
355
- const wrappedQuery = /* sql */ `
356
- WITH
357
- DIFF AS (
358
- SELECT
359
- id,
360
- ${contextColumns.length > 0
361
- ? `${contextColumns.map((col) => `json_extract(value, '$.${col}') as ${col}`).join(', ')},`
362
- : ''} operation_id as __operation_id,
363
- operation as __operation,
364
- timestamp as __timestamp,
365
- previous_value as __previous_value
366
- FROM
367
- ${destination}
368
- ORDER BY
369
- __operation_id ASC
370
- ) ${query}
371
- `;
372
- return tx.getAll(wrappedQuery, params);
373
- }
374
- });
375
- // Clear the destination table after processing
376
- await tx.execute(/* sql */ `DELETE FROM ${destination};`);
377
- return callbackResult;
378
- });
379
- }
380
- }, { tables: [destination], signal: abortController.signal, throttleMs });
381
- try {
382
- const removeTrigger = await this.createDiffTrigger({
383
- source,
384
- destination,
385
- columns: contextColumns,
386
- when,
387
- hooks
388
- });
389
- return async () => {
390
- abortOnChange();
391
- await removeTrigger();
392
- };
393
- }
394
- catch (error) {
395
- try {
396
- abortOnChange();
397
- }
398
- catch (cleanupError) {
399
- throw new AggregateError([error, cleanupError], 'Error during operation and cleanup');
400
- }
401
- throw error;
402
- }
403
- }
404
- }
405
- //# sourceMappingURL=TriggerManagerImpl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TriggerManagerImpl.js","sourceRoot":"","sources":["../../../src/client/triggers/TriggerManagerImpl.ts"],"names":[],"mappings":"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"}
@@ -1,68 +0,0 @@
1
- import { AbstractPowerSyncDatabase } from '../../../client/AbstractPowerSyncDatabase.js';
2
- import { MetaBaseObserver } from '../../../utils/MetaBaseObserver.js';
3
- import { WatchedQuery, WatchedQueryListener, WatchedQueryOptions, WatchedQueryState } from '../WatchedQuery.js';
4
- /**
5
- * @internal
6
- */
7
- export interface AbstractQueryProcessorOptions<Data, Settings extends WatchedQueryOptions = WatchedQueryOptions> {
8
- db: AbstractPowerSyncDatabase;
9
- watchOptions: Settings;
10
- placeholderData: Data;
11
- }
12
- /**
13
- * @internal
14
- */
15
- export interface LinkQueryOptions<Data, Settings extends WatchedQueryOptions = WatchedQueryOptions> {
16
- abortSignal: AbortSignal;
17
- settings: Settings;
18
- }
19
- type MutableDeep<T> = T extends ReadonlyArray<infer U> ? U[] : T;
20
- /**
21
- * @internal Mutable version of {@link WatchedQueryState}.
22
- * This is used internally to allow updates to the state.
23
- */
24
- export type MutableWatchedQueryState<Data> = {
25
- -readonly [P in keyof WatchedQueryState<Data>]: MutableDeep<WatchedQueryState<Data>[P]>;
26
- };
27
- type WatchedQueryProcessorListener<Data> = WatchedQueryListener<Data>;
28
- /**
29
- * Performs underlying watching and yields a stream of results.
30
- * @internal
31
- */
32
- export declare abstract class AbstractQueryProcessor<Data = unknown[], Settings extends WatchedQueryOptions = WatchedQueryOptions> extends MetaBaseObserver<WatchedQueryProcessorListener<Data>> implements WatchedQuery<Data, Settings> {
33
- protected options: AbstractQueryProcessorOptions<Data, Settings>;
34
- readonly state: WatchedQueryState<Data>;
35
- protected abortController: AbortController;
36
- protected initialized: Promise<void>;
37
- protected _closed: boolean;
38
- protected disposeListeners: (() => void) | null;
39
- get closed(): boolean;
40
- constructor(options: AbstractQueryProcessorOptions<Data, Settings>);
41
- protected constructInitialState(): WatchedQueryState<Data>;
42
- protected get reportFetching(): boolean;
43
- protected updateSettingsInternal(settings: Settings, signal: AbortSignal): Promise<void>;
44
- /**
45
- * Updates the underlying query.
46
- */
47
- updateSettings(settings: Settings): Promise<void>;
48
- /**
49
- * This method is used to link a query to the subscribers of this listener class.
50
- * This method should perform actual query watching and report results via {@link updateState} method.
51
- */
52
- protected abstract linkQuery(options: LinkQueryOptions<Data>): Promise<void>;
53
- protected updateState(update: Partial<MutableWatchedQueryState<Data>>): Promise<void>;
54
- /**
55
- * Configures base DB listeners and links the query to listeners.
56
- */
57
- protected init(signal: AbortSignal): Promise<void>;
58
- close(): Promise<void>;
59
- /**
60
- * Runs a callback and reports errors to the error listeners.
61
- */
62
- protected runWithReporting<T>(callback: () => Promise<T>): Promise<void>;
63
- /**
64
- * Iterate listeners and reports errors to onError handlers.
65
- */
66
- protected iterateAsyncListenersWithError(callback: (listener: Partial<WatchedQueryProcessorListener<Data>>) => Promise<void> | void): Promise<void>;
67
- }
68
- export {};
@@ -1,151 +0,0 @@
1
- import { MetaBaseObserver } from '../../../utils/MetaBaseObserver.js';
2
- import { WatchedQueryListenerEvent } from '../WatchedQuery.js';
3
- /**
4
- * Performs underlying watching and yields a stream of results.
5
- * @internal
6
- */
7
- export class AbstractQueryProcessor extends MetaBaseObserver {
8
- options;
9
- state;
10
- abortController;
11
- initialized;
12
- _closed;
13
- disposeListeners;
14
- get closed() {
15
- return this._closed;
16
- }
17
- constructor(options) {
18
- super();
19
- this.options = options;
20
- this.abortController = new AbortController();
21
- this._closed = false;
22
- this.state = this.constructInitialState();
23
- this.disposeListeners = null;
24
- this.initialized = this.init(this.abortController.signal);
25
- }
26
- constructInitialState() {
27
- return {
28
- isLoading: true,
29
- isFetching: this.reportFetching, // Only set to true if we will report updates in future
30
- error: null,
31
- lastUpdated: null,
32
- data: this.options.placeholderData
33
- };
34
- }
35
- get reportFetching() {
36
- return this.options.watchOptions.reportFetching ?? true;
37
- }
38
- async updateSettingsInternal(settings, signal) {
39
- // This may have been aborted while awaiting or if multiple calls to `updateSettings` were made
40
- if (this._closed || signal.aborted) {
41
- return;
42
- }
43
- this.options.watchOptions = settings;
44
- this.iterateListeners((l) => l[WatchedQueryListenerEvent.SETTINGS_WILL_UPDATE]?.());
45
- if (!this.state.isFetching && this.reportFetching) {
46
- await this.updateState({
47
- isFetching: true
48
- });
49
- }
50
- await this.runWithReporting(() => this.linkQuery({
51
- abortSignal: signal,
52
- settings
53
- }));
54
- }
55
- /**
56
- * Updates the underlying query.
57
- */
58
- async updateSettings(settings) {
59
- // Abort the previous request
60
- this.abortController.abort();
61
- // Keep track of this controller's abort status
62
- const abortController = new AbortController();
63
- // Allow this to be aborted externally
64
- this.abortController = abortController;
65
- await this.initialized;
66
- return this.updateSettingsInternal(settings, abortController.signal);
67
- }
68
- async updateState(update) {
69
- if (this._closed) {
70
- return;
71
- }
72
- if (typeof update.error !== 'undefined') {
73
- await this.iterateAsyncListenersWithError(async (l) => l.onError?.(update.error));
74
- // An error always stops for the current fetching state
75
- update.isFetching = false;
76
- update.isLoading = false;
77
- }
78
- Object.assign(this.state, { lastUpdated: new Date() }, update);
79
- if (typeof update.data !== 'undefined') {
80
- await this.iterateAsyncListenersWithError(async (l) => l.onData?.(this.state.data));
81
- }
82
- await this.iterateAsyncListenersWithError(async (l) => l.onStateChange?.(this.state));
83
- }
84
- /**
85
- * Configures base DB listeners and links the query to listeners.
86
- */
87
- async init(signal) {
88
- const { db } = this.options;
89
- const disposeCloseListener = db.registerListener({
90
- closing: async () => {
91
- await this.close();
92
- }
93
- });
94
- // Wait for the schema to be set before listening to changes
95
- await db.waitForReady();
96
- const disposeSchemaListener = db.registerListener({
97
- schemaChanged: async () => {
98
- await this.runWithReporting(async () => {
99
- await this.updateSettings(this.options.watchOptions);
100
- });
101
- }
102
- });
103
- this.disposeListeners = () => {
104
- disposeCloseListener();
105
- disposeSchemaListener();
106
- };
107
- // Initial setup
108
- await this.runWithReporting(async () => {
109
- await this.updateSettingsInternal(this.options.watchOptions, signal);
110
- });
111
- }
112
- async close() {
113
- this._closed = true;
114
- this.abortController.abort();
115
- this.disposeListeners?.();
116
- this.disposeListeners = null;
117
- this.iterateListeners((l) => l.closed?.());
118
- this.listeners.clear();
119
- }
120
- /**
121
- * Runs a callback and reports errors to the error listeners.
122
- */
123
- async runWithReporting(callback) {
124
- try {
125
- await callback();
126
- }
127
- catch (error) {
128
- // This will update the error on the state and iterate error listeners
129
- await this.updateState({ error });
130
- }
131
- }
132
- /**
133
- * Iterate listeners and reports errors to onError handlers.
134
- */
135
- async iterateAsyncListenersWithError(callback) {
136
- try {
137
- await this.iterateAsyncListeners(async (l) => callback(l));
138
- }
139
- catch (error) {
140
- try {
141
- await this.iterateAsyncListeners(async (l) => l.onError?.(error));
142
- }
143
- catch (error) {
144
- // Errors here are ignored
145
- // since we are already in an error state
146
- this.options.db.logger.error('Watched query error handler threw an Error', error);
147
- }
148
- }
149
- }
150
- }
151
- //# sourceMappingURL=AbstractQueryProcessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbstractQueryProcessor.js","sourceRoot":"","sources":["../../../../src/client/watched/processors/AbstractQueryProcessor.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Thrown when an underlying database connection is closed.
3
- * This is particularly relevant when worker connections are marked as closed while
4
- * operations are still in progress.
5
- */
6
- export declare class ConnectionClosedError extends Error {
7
- static NAME: string;
8
- static MATCHES(input: any): boolean;
9
- constructor(message: string);
10
- }